漏洞位置: 个人中心-资料设置-资料修改-头像处
漏洞证明:
选择任意图片上传,拦截保存修改请求包:
修改数据包中内容:
将filename设置为x.html
参数内容为:<html><head><imgsrc=x onerror=alert(1)></head></html>
放过所有请求后,查看头像图片的URL,已经变成了刚才上传的文件url:
访问头像文件url,js代码就会被执行。
但在尝试上传php文件的时候,发现服务器后端做了限制,对php,jsp和asp的动态脚本文件做了限制。
猜测后端使用黑名单方式限制上传文件,黑名单限制也可以通过其他方式绕过,尝试了通过.htaccess来使其他后缀名文件当做php来执行:
但发现服务器端会给文件做强制重命名处理,xxxx.htaccess无法被apache服务器解析,尝试通过./等方式将随机文件名转换为目录也失败。
尝试了其他例如”%00”,”. ”,”;. ”等等方式都失败了。
但通过Windows文件流特性绕过,成功上传了php文件,拿到shell:
上传常规php文件,后缀名后加上 (::$DATA)
再次查看头像URL,发现指向的是后缀名为.php::$DATA的文件:
在浏览器访问头像URL,去掉后缀名的::$DATA
上传的PHP命令已经成功执行。
参考靶场练习URL:https://github.com/LandGrey/upload-labs-writeup
我只测试到任意文件上传,由fengx成功getshell,感谢表哥提供思路,学习到了。
修复建议:
服务器端应设置允许上传文件的白名单,通过白名单方式可避免任意文件上传。
本文作者:白帽100安全攻防实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/101769.html