一、前言
某渗透项目中和队友配合挖到一个通用系统漏洞,主要对JS接口进行分析,经历一波绕waf的曲折最终getshell,文笔粗劣,大佬勿喷。
二、JS分析
在看到某系统仅仅一个登陆框,一波弱口令尝试和目录扫描,啥也没有。
队友通过JS分析发现大量接口,主要是跟着师傅的思路走一遍,不得不说如果没有这个JS接口基本很难有啥成果了(状态码带200的都是可访问的接口文件,这里有一个坑点,后面讲)
对每一个接口进行访问测试,期间发现如SQL注入漏洞,文件读取等,举例
对其进行解码,本质就是读取一个盘符的文件,修改为其他文件即可实现任意文件读取
由于是通用,按理说其他系统接口也存在,但奇怪的是,一访问接口,就跳转到404或者登陆框,一度认为漏洞难道已修复,有不同的版本
但经过实际测试,发现某些系统单独访问接口虽然是404,但漏洞依然存在,也是醉了(目前不清楚啥原因,不得不说 不能被表面现象所迷惑 还是一个一个测试最稳)
在测试另一个系统的时候,发现没有那么一帆风顺,遇到了waf,只能硬刚了,该上传接口也是前面JS分析得知,直接访问就出现页面了。
虽然有上传功能点,但点击上传是没有啥用的,直接F12,看看上传表单,自行构造就行
上传普通的txt文件,一切顺利,且返回具体的路径,访问也一切正常(相信师傅们也注意到有一个location跳转到登陆,但从返回包可以看到的确存在文件上传漏洞)
开始上传aspx,直接被重置
三、Bypass上传getshell
经过一番折腾,最终用以下方法可以bypass
Content-Disposition: form-data; name="file"; filename="aaaaaa.txt"
Content-Disposition: form-data; name="file"; filename="aaaaa.aspx"
多个filename=也可bypass
解决了后缀问题,尝试内容绕过,默认的webshell直接被重置,使用py脚本先生成大量的字符,用来填充
前后不断填充字符来绕
最终成功getshell
查查杀软情况
最后感谢团队师傅(@cl)的指导和帮助,总结下来测试还是得仔细,慢慢来。
文章来源:记一次JS到WAF绕过上传 - 先知社区