渗透实战 | 长文件名绕过白名单上传漏洞

admin 2022年8月28日08:45:50评论414 views1字数 1381阅读4分36秒阅读模式


前言

记某次授权渗透项目

 

过程

整个站看下来没啥洞,就一些没用的XSS,想着混时长混到下班,开始对着一个上传点狂撸。


这里上传的地方存在白名单,所有图像以外的文件都被禁止上传。后面发现上传的图片上传名未进行时间戳重命名,说明这里存在名称可控。

渗透实战 | 长文件名绕过白名单上传漏洞


上传一张带有PHP代码的图片马,点击发送,抓包。

渗透实战 | 长文件名绕过白名单上传漏洞


由于服务器对上传内容有校验,会判断上传的图片内容与本地的是否一致,所以我这里新增加了ssaaaaaaa来改变图片的内容,欺骗服务器认为这是一张新图片。

渗透实战 | 长文件名绕过白名单上传漏洞


漏洞的触发点在doc_xuhao,xuhao,这里的参数是可任意修改。事实上,修改的前提是在图片内容处增加随意字母或者删除文件字母来绕过第一次文件验证。
长文件名测试需要判断溢出的长度,这里由于文件名过长报错了。

渗透实战 | 长文件名绕过白名单上传漏洞


这里我反复测试文件名的长度。

渗透实战 | 长文件名绕过白名单上传漏洞

渗透实战 | 长文件名绕过白名单上传漏洞


验证到这里我发现一个规律,上传文件名是由参数doc_xuhao+xuhao+后缀组成的。

比如doc_xuhao是test

xuhao是1

后缀为.jpg

那组合为test1.jpg

 

测试成功的造成溢出payload:

bbbb.phpbbaasaaaaaaaaaasaaaaaaaabbbbabbdbbbba.phpaaaa..............................................................................................................................................................................................jpg


这里我验证过可截断文件名的长度,这个文件名在 

bbbb.phpbbaasaaaaaaaaaasaaaaaaaabbbbabbdbbbba.php后的所有字符都会截断,
这里有个细节,在xuhao这里需要反复修改才可以得到php后缀的文件,测试的需要反复设置为1和0来调整。

这里还需要调整一点是每次发图片包都要修改图片的内容 ,增加任意数据和删除都行,只要图片不重复都可以,图片重复的话服务器会认为是同一张图片,不会修改上传路径。

渗透实战 | 长文件名绕过白名单上传漏洞

渗透实战 | 长文件名绕过白名单上传漏洞


接下来只要反复测试长度就行了。

渗透实战 | 长文件名绕过白名单上传漏洞


unicode编码得到相对路径。

渗透实战 | 长文件名绕过白名单上传漏洞


验证成功

http://xxx.xxx.xxx.xxx:3399//upload/filemanage/%E5%8D%8E%E5%BA%9Cimgsrcxx%20onerroralert4/%E5%9B%BE%E5%83%8F%E6%95%B0%E6%8D%AE/%E5%8E%9F%E5%A7%8B%E5%9B%BE%E5%83%8F%E6%95%B0%E6%8D%AE/1--bbbb.phpbbaasaaaaaaaaaasBaaaaaaabbbbabbcBBbba.php?cmd=phpinfo();

渗透实战 | 长文件名绕过白名单上传漏洞


总结

这个漏洞能找到算是意料之外,渗透测试关键还是在于细节。




天磊卫士|专注网络安全服务

咨询热线:400-654-0108

官网:https://www.uguardsec.com

分支机构:深圳、海口、北京、青岛、汕尾

漏洞扫描|整改加固|渗透测试|APP安全评估|安全运维

系统入网|上线安全评估|代码审计|应急响应|应急演练

原文始发于微信公众号(天磊卫士安全团队):渗透实战 | 长文件名绕过白名单上传漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月28日08:45:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透实战 | 长文件名绕过白名单上传漏洞https://cn-sec.com/archives/1052895.html

发表评论

匿名网友 填写信息