【问题标题】:Catch JSON response using ModSecurity使用 ModSecurity 捕获 JSON 响应
【发布时间】:2015-02-02 10:54:24
【问题描述】:

我正在使用 ModSecurity 从 JSON 响应中捕获一个字符串并记录它。

这是一个示例 HTTP 请求和响应:

请求:

Request Method:POST
Status Code:200 OK
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Pragma:no-cache
X-Requested-With:XMLHttpRequest
{"data":{"username":"andrew","password":"AndreWTestingUser123dddd","remember":false,"authType":0}}

回复:

Connection:close
Content-Type:application/json
Date:Mon, 02 Feb 2015 10:39:15 GMT
Server:Apache
{"status":401,"messages":["Invalid password. (error code: 401)"],"createCookie":false}

这是我写的规则:

SecRule STREAM_OUTPUT_BODY "@rx (?i)Invalid password"\
        "id:9900022, \
        phase:4 \
        log, \
        pass, \
        chain, \
        t:none, \
        msg:'Invalid VT login detected', \
        logdata:%{RESPONSE_BODY}"
SecRule RESPONSE_HEADERS:Content-Type "application/json" \
        "log, chain"
SecRule REQUEST_URI "/api.php/auth/login" \
        "log"

但是 ModSecurity 没有按预期登录此请求。

这是我的 ModSecurity 版本信息:

ModSecurity for Apache/2.8.0 (http://www.modsecurity.org/) configured.
APR compiled version="1.3.9"; loaded version="1.3.9"
PCRE compiled version="7.8 "; loaded version="7.8 2008-09-05"
LIBXML compiled version="2.7.6"

提前致谢。

【问题讨论】:

    标签: mod-security


    【解决方案1】:

    默认情况下,JSON 检查不会编译到 modsecurity 中。您需要使用 libyajl JSON 库重新编译您的 modsecurity 安装以启用 JSON 支持

    此链接显示了如何执行此操作 https://gist.github.com/rpfilomeno/1140359f4bd360137a98

    【讨论】:

      【解决方案2】:

      您是否启用了 SecStreamOutBodyInspection 指令?而且我认为它也需要启用 SecResponseBodyAccess。

      默认情况下两者都被禁用,因此您无法检查响应正文的详细信息。请注意,扫描输出可能会对性能造成很大影响(这就是它默认关闭的原因)。

      【讨论】:

        猜你喜欢
        • 2018-09-30
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 2011-03-30
        • 2019-04-26
        • 1970-01-01
        • 2018-06-11
        相关资源
        最近更新 更多