[PHP]Waarom blokkeert paranoïde Mod_Security PHP code?

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Nadat m'n webhost een upgrade uitvoerde naar versie 2 van de Apache module Mod_Security http://www.modsecurity.org/
kreeg ik bij het uitvoeren van een PHP zoekscriptje deze (HTTP 406) error in de browser:

"Not Acceptable
An appropriate representation of the requested resource could not be found on this server.
Apache/2.2.6 (Unix) mod_ssl/2.2.6 OpenSSL/0.9.7a mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_jk/1.2.25 mod_auth_passthrough/2.1"


Het logboek van de webserver gaf:
code:
1
2
3
4
5
[error]ModSecurity: Access denied with code 406 (phase 2).
Pattern match "\\\\%(?![0-9a-fA-F]{2}|u[0-9a-fA-F]{4})" at ARGS:z_x5BNaam5D.
[id "950107"] [msg "URL Encoding Abuse Attack Attempt"] [severity "WARNING"]
[uri"/search/appzlist.php?a_search=E&z_x5BNaam5D=LIKE%2C%27%25%2C%25%27&x_x5BNaam5D=&z_x5BLijst5D=LIKE%2C%27%25%2C%25%27&x_x5BLijst5D=&psearch=audition&Submit=Zoek%A0%28*%29&psearchtype="]
[unique_id "v4Z3yFUN71oAAEeQMZUAAAAR"]


De webhost meldde nog dit:
code:
1
2
3
4
5
6
7
The URL tripped the filter "950107";

# Check decodings
# SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "@validateUrlEncoding" \
# "chain, deny,log,auditlog,msg:'URL Encoding Abuse Attack Attempt',id:'950107',severity:'4'"
# SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "\%(?![0-9a-fA-F]{2}|u[0-9a-fA-F]{4})"
# SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer "@validateUtf8Encoding" "deny,log,auditlog,msg:'UTF8 Encoding Abuse Attack Attempt',id:'950801',severity:'4'"


De standaard oplossing om de module te omzeilen hielp niet.. het opnemen in de .htaccess van het volgende:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>


Op mijn verzoek werd de het te strak afgestelde mod_security filter 'less paranoid configured' waarna alles weer werkte. :)

Maar wat staat er nu fout in mijn PHP regel? Ik begrijp die pattern match niet. Klopt er iets niet met de Utf8 encoding en zo ja wat dan niet? :?

  • Mathijs1
  • Registratie: Oktober 2002
  • Niet online
Misschien kun je geen '?' in de URL stoppen?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Mathijs1 schreef op donderdag 22 november 2007 @ 16:01:
Misschien kun je geen '?' in de URL stoppen?
Yea right, waarom zou dat nu weer NIET mogen :?

Going for adventure, lots of sun and a convertible! | GMT-8


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Er staat toch duidelijk een uitleg in de foutmelding:
URL Encoding Abuse Attack Attempt
Dat komt door je URL encoded characters in je querystring.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Topicstarter
Mathijs1 schreef op donderdag 22 november 2007 @ 16:01:
Misschien kun je geen '?' in de URL stoppen?
Dan zou zowat het halve internet niet meer werken lijkt me zo. >:)

Verwijderd

Topicstarter
AtleX schreef op donderdag 22 november 2007 @ 16:05:
Er staat toch duidelijk een uitleg in de foutmelding:

[...]

Dat komt door je URL encoded characters in je querystring.
Welke dan precies? En wat moet ik er dan in godsnaam voor in de plaats zetten (ben PHP leek)?
't Zaakje loopt namelijk niet op alle URL encoded characters vast.

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Als ik moet gokken gaat het fout op de LIKE gevolgd door URL encoded characters. Ik kan me voorstellen dat mod_security dat ziet als een mogelijke SQL injection.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • rogierslag
  • Registratie: Maart 2005
  • Laatst online: 14-10-2024
probeer de & eens te vervangen door de HTML code van & (&). Hierop zou de server vast kunnen lopen. Verder is je laatste var (psearchtype) leeg. Geen idee of dat invloed heeft trouwens, maar die een waarde meegeven kan weinig kwaad.

Verder zet je nou de POST value op off, maar kan je ook de getvalue op off zetten (zoals SecFilterScanGET Off), want dit is namelijk een GET en dan heeft jouw POST oplossing weinig invloed. Ik heb geen idee of die optie bestaat trouwens, maar ik zou het logisch vinden :p

Verder kan je ook nog hier een kijkje nemen (http://www.checkupdown.com/status/E406.html). Die link heb ik van dit blog (http://www.checkupdown.com/status/E406.html)

De reden dat je .htaccess niet werkt zal wel te maken hebben dat je webhost in hun httpd.conf heeft aangegeven dat jouw .htaccess info niet geparsed wordt met betrekking tot deze module. Anders kan je het nog even proberen zonder de IfModule tags

Acties:
  • 0 Henk 'm!

  • Mathijs1
  • Registratie: Oktober 2002
  • Niet online
Verwijderd schreef op donderdag 22 november 2007 @ 16:06:
[...]

Dan zou zowat het halve internet niet meer werken lijkt me zo. >:)
Ik bedoel natuurlijk dat het in dit specifieke geval niet mag, niet over het algemeen 8)7
Pagina: 1