这是一个把图片转base64的图片上传类型,具体实施绕过内容如下:根据抓包看到图片是以base64进行提交的,留意了下数据包,看到可根据更改upload_0字段内容提交任意文件浏览HTML页面,成功被解析,可进一步提交shell得到管理权限。一句话shell提交后看到无法运行命令,随即我查看了下php版本信息发现存在一些屏蔽了命令的函数限制,利用特权漏洞绕过这类函数限制,上传图片木马后门拿下目标权限。
一个关于nginx解析漏洞的利用,这类漏洞是很长时间之前挖到的,这类漏洞如今可能不会出现了,单单是waf防火墙就都能拦截掉这类漏洞攻击,这类就作为思考开拓说一下:一次外网打点时看到了目标的一个核心系统,根据踩点看到了某提交功能,但提交接口出现白名单限制,且无其它的提交接口,由于这类站的shell比较重要,必须拿到,之后根据漏洞挖掘,看到目标出现nginx解析漏洞,结合图片上传点成功得到到了内网据点。
其它场景&总结
有些时候图片上传成功后端没有返回路径,只回显了一个id号,这时候如果目标出现注入的话,我们尝试可以用sqlmap的--search参数或者SQLshell对返回的ID号进行搜索,这样说不定就能找到shell地址了,之前在关于Swagger-UI下的渗透实战也说过,感兴趣的可以去看看;也有图片上传成功却只回显一个文件名的,在前不久的一次攻防就遇到这类情况,后来是用了fuzz找到了完整的shell路径,另外在某些时候,上传文件可以跨目录,但是我们可以根据../进行跨目录提交,运气好的话,或许会在几个../后把shell传到域名的根目录下,如果当前提交文件夹无执行管理权限,但是跨目录提交shell也是个不错的思路;另外,如果提交目录可控,可上传文件到任意目录的话,在linux场景我们可提交一个ssh秘钥用于远程登录,极端一点的话,可考虑提交passwd、shadow文件直接覆盖,但前提是管理权限要足够大。
如果不能跨目录,站点又没有SQL注入的话,但是我们可以尝试寻找网站日志文件通过日志文件里的内容来获取一些后台登录地址以及账户密码或绝对路径,可以用burp进行日志爆破,或许在日志文件中能找到shell路径也说不定。