发了太多代码学习的文章,学的掉头发,来点轻松的。
实战中我们经常面对这么一个情况,除了一个登录页面啥都没有,不用php或者jsp的动态脚本,全接口形式,没法扫描,无从下手。
但全接口也有全接口的坏处,那就是全接口的网站,往往将所有接口暴露在登录界面的js之中,可能存在越权问题。
即使没有,在java中很容易存在/imges/..;/api/xxxx形式的越权,比如shiro,weblogic都存在过类似的越权问题。
如果这也没有,后台可能存在权限分层,user/admin/superadmin,当他们复用一个接口时,这个接口也可能偷懒不去鉴权。在公司内部白盒测试中,经常发现这种接口。其中最常见的就是upload。
火狐中按F12——调试器——Ctrl+Shift+F 所有文件中查找——/upload
如图,发现了/file/upload,直接访问报404
根据前面发现的/api/login接口,访问/api/file/upload,报405
用个简单的upload POC上传一张图片,这里name=file需要猜测
<html>
<body>
<form action="https://xxx/api/file/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
发现报错,此为springboot需要的Content-Type不一致导致的报错,根据之前/api/login用json格式发送,我们也手动发送一个简单的json数据。
提示base64为空,加上base64参数
成功上传,不过可惜的是没有后缀概念,直接以fileid传输,并且下载时固定以图片解析,因此无法利用。
这个虽然失败了,但也有成功案例
发现/api/xxx/uploadCover接口,POC直接上传文件报错,name应该为cover,这个其实在js中也能找出来。
修改后再次上传成功getshell
原文始发于微信公众号(珂技知识分享):实战黑盒找上传接口
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论