将JSON ARGS_NAMES

时间:2015-08-07 03:18:02

标签: apache mod-security mod-security2

我可以在软件安全似乎抱怨的JSON ARGS_NAMES白名单上使用一些建议。我不确定如何为JSON请求正确指定ARGS_NAMES。我的应用程序大量使用JSON,因此针对不同的样式请求有一些这些警报。

以下警告由我的后端应用程序的POST请求(登录/身份验证)触发:

  

2015-08-06T23:02:21.09022 [Thu Aug 06 23:02:21.090206 2015] [:error] [pid> 18099:tid 140155981653760] [client 192.168.216.16] ModSecurity:警告。 >模式匹配“(?i :( ?: union \\ s *?(?:all | distinct | [(!@] ?)?\\ s ?[([] ? \\ s ?选择\\ s +)|(?:\\ w + \\ s +喜欢\\ s +> [\“'\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98])|(?:like\\\\s*? [\\"' \ xc2 \ xb4 \ xe2 \ x80 \ x99 \ x \ n \ x%\ x%] \\%)|(?:[\“'\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98]\\\\s*?like\\\\W*? [\\"' \ xc2 \ xb4 ...”在ARGS_NAMES:{“用户名”:“userid2”,“密码”:“blahblah “}。[file”/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf“] [line”223“] [id”981245“] [msg”检测基本SQL身份验证绕过尝试2/3“] [数据“匹配数据:\ x22:\ x22userid2 \ x22,\ x22p在ARGS_NAMES中找到:{\ x22username \ x22:\ x22userid2 \ x22,\ x22password \ x22:\ x22blahblah \ x22}:{\ x22username \ x22:\ x22userid2 \ x22 ,\ x22password \ x22:\ x22blahblah \ x22}“] [严重性”CRITICAL“] [tag”OWASP_CRS / WEB_ATTACK / SQL_INJECTION“] [hostname”api.host.name“] [uri”/ user-api / auth-service “] [unique_id”VcPnfQobAhEAAEazjWUAAABB“]

这是由用户会话数据的AJAX更新触发的另一个警报:

  

2015-07-22T22:02:03.61377 [Wed Jul 22 22:02:03.613737 2015] [:error] [pid> 14702:tid 140281273739008] [client 10.72.2.5] ModSecurity:拒绝访问>代码403(阶段2)。 TX上的模式匹配“(。*)”:981257 - 检测MySQL>注释/空格混淆注入和反引号终止 - OWASP_CRS / WEB_ATTACK / SQLI-ARGS_NAMES:{“data”:{“categories”:[{“uuid”:“10009”,“name”:“Books”,“folder” :“School”}],“category_ids”:[“188”],“transaction_ids”:[“ed529b9f47ee-ab23-5b98-4404-d59a86b9”,“ed529b9f47ee-ab23-5b98-4404-d59a86b9”,“ed529b9f47ee-ab23 -5b98-4404-d59a86b9" ]}}。 [file“/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf”] [line“26”] [id“981176”] [msg“入境异常分数超标(总分:20,SQLi = 4,XSS = 0):最后匹配的消息:981243 - 检测经典SQL注入探测2/2“] [数据”最后匹配数据:,\ x22name \ x22:“] [主机名”host.name.com“] [uri”/ new /数据“] [unique_id”VbAS2wobA80AADluSjYAAADw“]

如何为“ARGS_NAMES:{”用户名[..]“或”ARGS_NAMES:{data [..]“创建白名单?当我尝试使用正则表达式进行白名单时,我最终得到如下规则:

SecRule ARGS_NAMES:“({\”(data)\“:)(({\”[a-z _] + \“:)。)”“(。)”“id :308,相:2,T:无,NOLOG,传球,CTL:ruleRemoveTargetByTag = ; ARGS_NAMES:({\ “(数据)\”:)(({\ “[A-Z _] + \” :))“

我认为除非PCRE限制超出测试范围,否则此功能无效。是否有更简单的方法为JSON参数执行此操作?

这是我在白名单的早期迭代中尝试的另一种方法:

SecRule ARGS:data.transaction_ids“(([a-z0-9 - ]))”“id:206,phase:2,nolog,pass,ctl:ruleRemoveTargetByTag =。; ARGS :data.transaction_ids,CTL:ruleRemoveTargetById = 960024; ARGS:data.transaction_ids“

据我所知,这有效,但我希望能够将请求体中使用“{data:”JSON格式的任何请求列入白名单。我想在进行另一轮测试之前验证将JSON参数列入白名单的正确方法。

我在这里缺少什么?

0 个答案:

没有答案