mod_security永远不会告诉问题是什么

通常我只会纠缠我的提供者禁用规则。 虽然他当然值得纠缠,但我已经以低服务价格经常这样做了。

(就像总是这是关于一个mod_security规则,这只是一个黑名单入口在5年前的WordPress或Drupal的一些模糊的错误。虽然我不使用这个,我仍然付出代价在错误的代码…)

无论如何。 通常mod_security很容易在这种情况下发生。 我一直在尝试重新命名我的表单域来解决它。 但这一次似乎没有帮助。 这是违规的规则(我可以不理解):

# Rule 340147: Generic XSS filter SecRule REQUEST_URI "!(/mt\.cgi|^/node/[0-9]+/webform/components/|/node/[0-9]+/edit|/wizard/edit/html|^/\?q=node/[0-9]+/edit/|/node/add/main|sitebuilder/createproject|/admin/\?page=spageedit)" \ "t:none,t:urlDecodeUni,t:replaceComments,t:replaceNulls,t:htmlEntityDecode,t:lowercase,t:compressWhitespace,capture,id:340147,rev:81,severity:2,msg:'Atomicorp.com - FREE UNSUPPORTED DELAYED FEED - WAF Rules: Generic XSS filter',chain,logdata:'%{TX.0}'" SecRule REQUEST_URI|ARGS|ARGS_NAMES|!ARGS:arg2|!ARGS:resumoDetalhe|!ARGS:Right_photo_1|!ARGS:/^K2ExtraField/|!ARGS:/submitcode/|!ARGS:beschrijving|!ARGS:custombannercode|!ARGS:bannercode|!ARGS:privatecapacity|!ARGS:diz|!ARGS:FormLayout|!ARGS:/^fck/|!ARGS:parent_name|!ARGS:/^code_tscript/|!ARGS:_qf_Group_next|!ARGS:project_company|!ARGS:categories_title|!ARGS:antwoord|!ARGS:project_company|!ARGS:signature|!ARGS:paepdc|!ARGS:tpl_source|!ARGS:teaser_js|!ARGS:/^autoDS/|!ARGS:FrmSide|!ARGS:mainKeywords|!ARGS:/VB_announce/|!ARGS:guardar|!ARGS:/serendipity/|!ARGS:omschrijving|!ARGS:resolution|!ARGS:newyddionc|!ARGS:bericht|!ARGS:property_copy|!ARGS:/^outpay/|!ARGS:bedrijfsprofiel|!ARGS:s_query|!ARGS:finish_survey|!ARGS:photolater|!ARGS:ticket_response|!ARGS:/element/|!ARGS:option[vbpclosedreason]|!ARGS:/introduction/|!ARGS:/contenido/|!ARGS:/sql/|!ARGS:query|!ARGS:c_features|!ARGS:/tekst/|!ARGS:embeddump|!ARGS:other_clubs|!ARGS:/^elm/|!ARGS:/^saes/|!ARGS:dlv_instructions|!ARGS:/^cymr/|!ARGS:_qf_Register_upload|!ARGS:/^elm/|!ARGS:verbiage|!ARGS:news|!ARGS:/^wz/|!ARGS:tiny_vals|!ARGS:sSave|!ARGS:/article/|!ARGS:/about/|!ARGS:/Summarize/|!ARGS:/^product_options/|!ARGS:/SiteStructure/|!ARGS:/anmerkung/|!ARGS:/summary/|!ARGS:/edit/|!ARGS:reply|!ARGS:/story/|!ARGS:resource_box|!ARGS:navig|!ARGS:preview__hidden|!ARGS:/page/|!ARGS:order|!ARGS:/post/|!ARGS:youtube|!ARGS:reply|!ARGS:business|!ARGS:/homePage/|!ARGS:pagimenu_inhoud|!ARGS:/note/|!ARGS:Post|!ARGS:/^field_id/|!ARGS:area|!ARGS:/detail/|!ARGS:/comment/|!ARGS:LongDesc|!ARGS:/desc/|!ARGS:ta|!ARGS:/data/|!ARGS:Returnid|!ARGS:busymess|!ARGS_NAMES:/^V\*/|!ARGS_NAMES:/^S\*/|!ARGS:/^quickrise_advertise/|!ARGS:rt_xformat|!ARGS:/wysiwyg/|!ARGS:contingut|!ARGS:/^werg/|!ARGS:/body/|!ARGS:/css/|!ARGS:/^section/|!ARGS:/msg/|!ARGS:t_cont|!ARGS:/^doc/|!ARGS:/xml/|!ARGS:tekst|!ARGS:formsubmit|!ARGS:invoice_snapshot|!ARGS:submit|!ARGS:/message/|!ARGS:/html/|!ARGS:/content/|!ARGS:/footer/|!ARGS:/header/|!ARGS:/link/|!ARGS:/text/|!ARGS:/txt/|!ARGS:/refer/|!ARGS:/referrer/|!ARGS:/template/|!ARGS:/ajax/ "(< ?(?:(?:java|vb)?script|about|applet|activex|chrome) ?>|> ?< ?(img ?src|a ?href) ?= ?(ht|f)tps?:/|\" ?> ?<|\" ?[az]+ ?<.*>|> ?\"? ?(>|<)|< ?/?i?frame|\%env)" 

这是error.log条目:
[Tue Mar 29 14:28:52 2011] [error] [client 000.000.000.000] ModSecurity: Access denied with code 403 (phase 2). Match of "rx (^(submit\\\\+>>|>>)$)" against "ARGS:pub_lish2" required. [file "/etc/apache2/modsec2/10_asl_rules.conf"] [line "962"] [id "340147"] [rev "108"] [msg "Atomicorp.com WAF Rules: Generic XSS filter"] [data "848"] [severity "CRITICAL"] [hostname "hahaha.not-telling-you.org"] [uri "/index.php"] [unique_id "TZHQhE6KWTMAAFkDGf0AAAAG"]

这些是使用的表单字段:

  <form action="index.php" method="POST" enctype="multipart/form-data" accept-encoding="UTF-8"> <input type="hidden" name="pub_lish2" value="1"> <input type="hidden" name="e" value="2"> <textarea name="question"> &lt;tt&gt;...&lt;/tt&gt; &lt;h2&gt;...&lt;/h2&gt; &lt;p&gt;...&lt;/p&gt; &lt;span class=&quot;tag&quot;&gt;details&lt;/span&gt; </textarea> <!--div id="captcha" class="captcha"> <input type="hidden" id="__ec_i" name="__ec_i" value="ec.1301402534.e6dcf57012b4410395621d0b6851f0a2" /> <input type="text" name="__ec_s" value=""> </div--> <input type="submit" value="Post Your Thingy"> </form> 

这不是validation码字段,所以我评论他们。 textarea包含html,但没有可疑的东西。 我已经把提交字段重命名了很多次,而e =只是一个id字段。

任何人都可以理解的mod_security消息? 我不明白这个愚蠢的要求。

对于我来说,这个规则是在有人提交了一个小于,大于号的表单,而且中间没有字符时触发的,所以:'> <'

看起来你的表单是用预先input的表单构build的:

请注意,空格不能解决这个问题。

规则是抱怨参数'pub_lish2'不匹配index.php接收(RX)上的特定正则expression式((^(submit \\ + >> | >>)$))。

就我所知,他们已经引入了大量的个人例外规则,您可以利用它们来进行testing,因此,阅读所提供的规则,它们匹配每个不是特定于表单端点的URL,然后提供一个巨大的例外列表。 我build议他们试图删除无关的基于forms的XSS,只是非常糟糕。

你可以做一个相当简单的testing,把这个特定的字段改成一个排除,所以随机选一个;

busymess

然后看看提交中发生了什么。 如果他们允许,您可以要求将pub_lish2“目标”添加到排除列表中。