mod_security nunca diz qual é o problema

1

Normalmente, eu apenas importo meu provedor para desativar a regra. E embora ele certamente mereça ser importunado, já fiz isso com muita frequência já pelo preço baixo do serviço.

(Como sempre, trata-se de uma regra mod_security que é apenas uma entrada na lista negra de algum bug obscuro no Wordpress ou no Drupal de 5 anos atrás. Embora eu não esteja usando isso, ainda pago o preço por erros no código de alguém. ..)

De qualquer forma. Normalmente mod_security é fácil de frustrar em tais casos. Eu tenho tentado renomear meus campos de formulário para contornar isso. Mas desta vez não parece ajudar. Esta é a regra ofensiva (da qual não consigo entender):

# 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?:/|\" ?> ?<|\" ?[a-z]+ ?<.*>|> ?\"? ?(>|<)|< ?/?i?frame|\%env)"

Essa é a entrada 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"]

Estes são os campos de formulário usados:

    <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>

Não são os campos de captcha, então eu os comentei. A textarea contém html, mas nada suspeito. Renomeei o campo de envio algumas vezes e e = é apenas um campo de ID.

Alguém pode entender a mensagem mod_security? Eu não entendo suas demandas bobas.

    
por mario 29.03.2011 / 14:56

2 respostas

4

Para mim, essa regra estava sendo acionada quando alguém enviava um formulário com um sinal de menor que maior do que sem caracteres intermediários, portanto: '> <'

Parece que seu formulário foi criado com os pré-inseridos no formulário:  

Note que o espaço em branco não corrige isso.

    
por 30.03.2011 / 01:30
1

A regra está reclamando sobre o argumento 'pub_lish2' que NÃO corresponde a um regex específico ((^ (submit \\ + > > | > >) $)) na recepção (RX) por index.php.

Até onde eu sei, eles introduziram um monte de exceções individuais à regra que você poderia se valer para testes, então, ao ler as regras fornecidas, elas correspondem a todas as URLs que não são especificamente um endpoint de formulário , em seguida, forneça uma lista enorme de exceções. Eu sugiro que eles estão tentando remover o XSS baseado em formulário estranho, apenas extremamente mal.

Provavelmente, você pode produzir um teste bastante fácil alterando esse campo específico para uma das exclusões, escolhendo uma aleatoriamente;

busymess

Depois, veja o que acontece em um envio. Se eles permitirem, você pode pedir que o 'target' pub_lish2 seja adicionado à lista de exclusão.

    
por 26.01.2015 / 18:28