热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

怎么绕过 WAF 注入和上传以及 xss

知了堂姐
2024-07-08 17:22:16
0
  1. 怎么绕过 WAF 注入和上传以及 xss步骤

(1)关键字可以用%(只限 IIS 系列),比如 select 可以 sel%e%ct。原理:网络层 waf 对 SEL%E%CT 进行 url 解码后变成 SEL%E%CT,匹配 select 失败,

而进入 asp.dll 对 SEL%E%CT 进行 url 解码却变成 select。IIS 下的 asp.dll 文件

在对 asp 文件后参数串进行 url 解码时,会直接过滤掉 09-0d(09 是 tab 键,0d

是回车)、20(空格)、%(后两个字符有一个不是十六进制)字符。xss 也是同

理。

(2)内联注释。安全狗不拦截,但是安全宝、加速乐、D 盾等,看到/!/就 Fack

了,所以只限于安全狗。比如:/!select*/

(3)编码。这个方法对 waf 很有效果,因为一般 waf 会解码,但是我们利用这

个特点,进行两次编码,他解了第一次但不会解第二次,就 bypass 了。腾讯

waf、百度 waf 等等都可以这样 bypass 的

(4)绕过策略如:伪造搜索引擎

早些版本的安全狗是有这个漏洞的,就是把 User-Agent 修改为搜索引擎

(5)插入关键目录 admin,dede,install 等目录绕过 360webscan

360webscan脚本存在这个问题,就是判断是否为admin dede install 等目录,

如果是则不做拦截

GET /pen/news.php?id=1 union select user,password from mysql.user

GET /pen/news.php/admin?id=1 union select user,password from

mysql.user

GET /pen/admin/..\news.php?id=1 union select user,password from

mysql.user

(6)multipart 请求绕过,在 POST 请求中添加一个上传文件,绕过了绝大多数WAF。

(7)参数绕过,复制参数,id=1&id=1

用一些特殊字符代替空格,比如在 mysql 中%0a 是换行,可以代替空格,这个

方法也可以部分绕过最新版本的安全狗,在 sqlserver 中可以用/**/代替空格

(8)内联注释,

文件上传,复制文件包一份再加一份

在 form-data;后面增加一定的字符


2.WAF绕过思路的方法


WAF绕过思路

WAF在渗透测试中,是我们要面对的第一关卡,渗透测试人员对站点WAF的绕过过程就是渗透测试人员与网站管理员(或WAF开发者)进行PK的过程。在对WAF的渗透时,一般可以考虑采用以下方式展开。

一、增加WAF负担

WAF是为网站安全服务的,但是WAF的存在如果干扰了网站的正常运行,则会得不偿失,因此,网站管理员一般会恰当的配置WAF,起到在不会干扰网站正常运行的前提下,对用户的输入进行过滤的作用。因此,有些WAF就会设置如果数据包长度过长,就对部分数据包或者是数据包的部分内容进行无检测“放行”,根据这一原理,可以考虑以增加WAF负担的方式,进行绕过WAF。

1、增加变量参数个数

有些云WAF,因为配置的原因,在检测参数时,只会检测部分参数,如safedog,只会检测前100个参数,这样,就可以人为的加入很多没有意义的参数,然后把有用的参数放到最后面,就可以绕过云waf的检验了。

2、增加参数长度

此方式常见于文件上传漏洞中对于用户文件内容进行检测的场景,增加前面无意义的内容,把webshell放在文件的最后,即可绕过WAF的检验。此外,在进行SQL注入测试时,故意增加url的长度,并将其注释掉,也可以起到一定的效果。在进行XSS测试的时候,加入一些无意义的数据,也可以起到相应相应的作用。

3、增加WAF负载

采用这种方式一定要在有把握的情况下进行,原理是有些WAF在进行工作的时候,如果站点流量过大,则为了保证网站的可用性,会放弃对部分数据包的检验。因此,我们可以向WAF大量的发送正常的数据包,同时在其中夹杂异常的数据包,此时或许绕过WAF的检验。当然,在这种情况下,要谨慎的设置攻击模式,避免用此方式对站点造成的宕机。


二、构造异常数据包

WAF不是人,因此WAF在进行检验匹配的时候会比较死板(ps:有些云WAF,会采取基于大数据和机器学习算法的防御方式,这个时候就可能比较难以注入),尤其是在采取黑名单为基础的过滤方式情况下,更明显的表现在没有对WAF进行合理配置的情况下,在这种情况下,人为的故意发送异常的数据包,可能会起到绕过WAF的作用。(ps:当然了,构造的数据包也不能过于奇葩,导致服务器站点不能解析数据包中的内容,这样就没用了)

此外,WAF和网站的配合有时并不会那么完美,有些网站中间健所含有的漏洞,未必被WAF所保护,考虑到WAF是通用配置,在防护Nginx、windows和Apache等不同站点类型的情况下,未必能够配置的那么完美,因此,WAF在设计过程中,存在天然的缺陷,而这些缺陷就可以被我们利用。

1、双参数绕过

有时,可以使用双参数绕过的方式来绕过WAF,比如说网站有一个参数id,则可以在数据包中含有两个id参数,这时WAF有可能只检查了第一个id的内容,从而第二个id的poc进入到服务器被执行。

2、请求方式转换

有时,WAF会只检验GET类型的包,而忽略掉POST类型的包,或者相反。在这种情况下,就可以修改数据包的类型,尝试绕过数据包。有时,把数据包改成其他的,如request类型或者是根本就不存在的类型也会起到意想不到的效果。

3、绕过匹配规则

这里的通用绕过思路,即在进行sql注入测试、XSS测试、文件相关漏洞测试等测试时一些通用的绕过思路,常见的有:

①双写绕过

②大小写绕过

③编码绕过

④注释绕过

⑤使用不常用的函数

⑥文件上传相关绕过方式

⑦字符串拼接

⑧空白符绕过

三、绕过WAF

有时,站点采用了云WAF,此时,如果能够找到真实的服务器IP地址,则可以绕过WAF的检验,在这里,这种方式我先不细讲。除了绕过云WAF之外,由于站点再配置过程中的问题,会存在其他类型的WAF的绕过方式。

1、旁站绕过

有时,网站管理员在配置WAF的时候会出现疏漏,针对http和https协议的80和443端口有时并没有全部进行防护,因此,在这种情况下,不妨在地址栏中,把http改为https(或者进行相反的操作),说不定会有意外收获!

2、表名单绕过

云WAF在配置过程中,有时会选择“信任”部分数据包,这部分数据包不会被云WAF进行匹配检验,在WAF里维持着一个白名单列表,凡是在符合白名单的要求,WAF就不会进行检测。因此,基于这种思路,我们就可以把我们访问的数据包伪装成白名单上的数据包,这样就可以绕过WAF的检验了。

①伪装成爬虫

有的时候,站点为了提高自己在SEO上的排名,会设置对大型搜引擎的爬虫不做检验,这个时候,只要在数据包中user-agent字段中把原始的信息替换成搜索引擎信息,就可以绕过WAF的检验了。

②伪装成自己

有些网站不会对自己(即物理机上的操作)进行检验,因此,可以在数据包中设置X-FARWARDED-FOR头,或者是X-Originating-IP,将其设置为127.0.0.1,这样就可以绕过WAF了。

3、目录伪装绕过

有时,WAF会设置不拦截针对特定目录的数据包,如admin等。有时是通过检测数据包中是否含有指定的关键字符串来判定的。这时,我们可以根据这一特性,通过…/等方式人为的构造含有这些指定目录字符串特性的数据包,从而绕过WAF的检验。360webscan脚本会对admin dede install等目录不做拦截,这样就可以构造含有这些字符串的数据包,从而进行绕过。

总之,WAF是基于规则的绕过,这样WAF在工作的时候就有天然的缺陷型,限制了WAF作用的发挥,导致想防火墙一样,总是存在着各种各样的绕过姿势。只要渗透测试者认真一点,发挥自己的脑洞,就一定能找到合适的方法进行绕过。

大家都在看

加速网安人才建设,知了汇智与四川大学网安学院实训...

2024-07-08 浏览次数:0

Shell 脚本进阶的经典用法

2024-07-08 浏览次数:0

启明星辰、飞致云企业莅临知了堂,开展教育、技术产...

2024-07-08 浏览次数:0

鸿蒙专题进校园,知了汇智引领未来科技风潮

2024-07-08 浏览次数:0

新手学习java还是web前端?该如何选择?

2024-07-08 浏览次数:0

ui设计和软件开发哪个好?Java和UI哪个好?

2024-07-08 浏览次数:0
最新资讯