This has solved my problem.

Thank you and everyone who has chimed in on this.

One last question though. Is this generally a better approach than using
Location, LocationMatch etc to disable rules?

On Tuesday, November 26, 2013, Ryan Barnett wrote:

>   Hey Phil,
> Based on the info you gave about your setup, I think I know what the issue
> might be.  First of all, take a look at this Apache request flow diagram on
> the ModSecurity Reference Manual Wiki page -
>
> https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#wiki-Processing_Phases
>
>  This diagram shows where ModSecurity's Phase hooks are.  With this as a
> visual backdrop, now understand that if you place any ModSecurity rules or
> directives inside Apache scope locations (<Location>, <LocationMatch>,
> <Directory>, etc…) then they will only be available to ModSecurity in
> Phase:2 (Fixup hook).  The issue, most likely, is that your AJP proxying is
> happening before the Fixup Phase:2 hook so your rules/exceptions are not
> working.
>
>  What I recommend for you situation would be to use SecRules +
> ctl:ruleRemoveById action in Phase:1 instead of nesting them within Apache
> scope locations.  Something like this (untested) added to a
> modsecurity_crs_15_custon.conf file so that it runs before the rest of the
> CRS rules -
>
>     SecRule REQUEST_FILENAME "@beginsWith /subsonic/"
> "id:1234,phase:1,t:none,nolog,pass,ctl:ruleRemoveById=330792"
>
>  One other note – you might need to recompile with
> "--enable-request-early" to get this to work in the "post-read-request"
> hook  (
> https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#wiki-Configure_ModSecurity
> )
>
>  Hope this info helps.
>
>  --
> Ryan Barnett
> Trustwave SpiderLabs
> ModSecurity Project Leader
> OWASP ModSecurity CRS Project Leader
>
>
>    From: Phill Watkins <phill.watk...@gmail.com>
> Date: Monday, November 25, 2013 6:45 AM
> To: OWASP CRS Mailing List <
> owasp-modsecurity-core-rule-set@lists.owasp.org>
> Subject: [Owasp-modsecurity-core-rule-set] Location/LocationMatch failing
> to disable rules
>
>   Hi,
>
>  For some reason I'm struggling to to disable rules using
> SecRuleRemoveById inside a Location or LocationMatch.
>
>  I can disable rules globally (which isn't ideal) so I know the directive
> works but I don't know why Apache doesn't act upon the
> Location/LocationMatch.
>
>  One of the applications on my web server that I'm trying to disable a
> rule for is Subsonic. Subsonic requires Tomcat and is a connected to Apache
> via the AJP connector module.
>
>  I have successfully disabled one of the Atomicorp delayed rules in the
> past like this:
>
>  <IfModule mod_jk.c>
> JkMount /subsonic ajp13_worker
> JkMount /subsonic/* ajp13_worker
> <Location /subsonic/upload.view>
> SecRuleRemoveById 330792
> </Location>
> </IfModule>
>
>  I am now trying to disable rule 960010 from the CRS for the entire
> application because of too many false positives.
>
>  I have tried <Location /subsonic/>  as well as multiple regular
> expressions for days but nothing works.
>
>  Here is an example from the audit log:
>
>  --35e37e6c-A--
> [12/Nov/2013:12:19:05 +0000] UoIcuX8AAQEAAAJ3AQgAAAAA hidden 45509 hidden
> 443
> --35e37e6c-B--
> POST /subsonic/dwr/call/plaincall/nowPlayingService.getNowPlaying.dwr
> HTTP/1.1
> Host: hidden
> Connection: keep-alive
> Content-Length: 214
> Origin: https://hidden
> User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,
> like Gecko) Chrome/30.0.1599.114 Safari/537.36
> Content-Type: text/plain
> Accept: */*
> Referer: https://hidden/subsonic/right.view?
> Accept-Encoding: gzip,deflate,sdch
> Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
> Cookie: player-656c6c6965=6; player-73727661646d=6;
> JSESSIONID=088A746CDC6B4356A388E7C1D44EEE6A.ajp13_worker;
> player-7068696c6c=9; compact_display_state=false
>
>  --35e37e6c-F--
> HTTP/1.1 403 Forbidden
> Vary: Accept-Encoding
> Content-Encoding: gzip
> Content-Length: 221
> Keep-Alive: timeout=5, max=88
> Connection: Keep-Alive
> Content-Type: text/html; charset=iso-8859-1
>
>  --35e37e6c-H--
> Message: Access denied with code 403 (phase 1). Match of "rx
> ^%{tx.allowed_request_content_type}$" against "TX:0" required. [file
> "/etc/apache2/owasp-modsecurity-crs/activated_rules/modsecurity_crs_30_http_policy.conf"]
> [line "64"] [id "960010"] [rev "2"] [msg "Request content type is not
> allowed by policy"] [data "text/plain"] [severity "CRITICAL"] [ver
> "OWASP_CRS/2.2.8"] [maturity "9"] [accuracy "9"] [tag
> "OWASP_CRS/POLICY/ENCODING_NOT_ALLOWED"] [tag "WASCTC/WASC-20"] [tag
> "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/EE2"] [tag "PCI/12.1"]
> Action: Intercepted (phase 1)
> Stopwatch: 1384258745437774 1085 (- - -)
> Stopwatch2: 1384258745437774 1085; combined=426, p1=363, p2=0, p3=0, p4=0,
> p5=63, sr=48, sw=0, l=0, gc=0
> Producer: ModSecurity for Apache/2.7.5 (http://www.modsecurity.org/);
> OWASP_CRS/2.2.8.
> Server: Apache
> Engine-Mode: "ENABLED"
>
>  --35e37e6c-Z--
>
>  I'd be grateful of any advice.
>
>  Thanks for your time.
>
>
> ------------------------------
>
> This transmission may contain information that is privileged,
> confidential, and/or exempt from disclosure under applicable law. If you
> are not the intended recipient, you are hereby notified that any
> disclosure, copying, distribution, or use of the information contained
> herein (including any reliance thereon) is strictly prohibited. If you
> received this transmission in error, please immediately contact the sender
> and destroy the material in its entirety, whether in electronic or hard
> copy format.
>
_______________________________________________
Owasp-modsecurity-core-rule-set mailing list
Owasp-modsecurity-core-rule-set@lists.owasp.org
https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set

Reply via email to