False Positive in mod_security beheben

Apache, Lighttpd, nginx, Cherokee
toberkel
Posts: 86
Joined: 2004-07-16 17:22
Location: Hamburg

False Positive in mod_security beheben

Post by toberkel » 2008-01-11 10:18

Hi.

Ich betreibe ein kleines CMS für einen Kunden, dieser hat nun ein Update eingespielt und seitdem schlägt mod_security beim Kontaktformular alarm. Leider auch wenn normale Daten eingegeben werden. Ich würde nun gern die rules.conf so anpassen, das die entsprechende Regel noch zieht, aber nicht mehr bei diesem Fehler, allerdings auch weiterhin bei dem Kontaktformular, wenn es geht. Hat da jemand eine Idee?

Auszug aus audit.log:

Code: Select all

==85018375==============================
Request: www.domain.de 85.176.xx.xx - - [10/Jan/2008:20:25:34 +0100] "POST /front_content.php?idcat=54 HTTP/1.1" 500 5
38 "http://www.domain.de/front_content.php?idcatart=77&lang=1&client=1" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11" - "-"
Handler: x-httpd-php
----------------------------------------
POST /front_content.php?idcat=54 HTTP/1.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip,deflate
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Connection: keep-alive
Content-Length: 263
Content-Type: application/x-www-form-urlencoded
Cookie: style=norm_small; sid_1_1=cf92e5c30b255a1273f33ab44d564a40
Host: www.domain.de
Keep-Alive: 300
Referer: http://www.domain.de/front_content.php?idcatart=77&lang=1&client=1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
mod_security-action: 500
mod_security-message: Access denied with code 500. Pattern match "(insert[[:space:]]+into.+values|select.*from.+[a-z|A-Z|0
-9]|select.+from|bulk[[:space:]]+insert|union.+select|convert.+\(.*from)" at POST_PAYLOAD [id "300016"][rev "2"] [msg "Ge
neric SQL injection protection"] [severity "CRITICAL"]

263
recipient=Please+select&email_from_name=Nachname%2C+Vorname&company_from_mail=&zipcode_from_mail=55555&street_from_mail=Ham
burg&country=Germany&email_from_mail=mail%40domain.tld&telefone_from_mail=&telefax_from_mail=&betreff=&kommentar=Test&x=44&y=12

HTTP/1.1 500 Internal Server Error
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
--85018375--


Es scheint ja an den Postwerten email_from usw. zu liegen das mod_security davon ausgeht das es evtl. SQL-Injection ist :(

MfG,

toberkel

chrisw
Posts: 57
Joined: 2006-07-26 13:21

Re: False Positive in mod_security beheben

Post by chrisw » 2008-01-11 11:00

Da sieht man ja gar nicht, welche Regel hier Probleme macht - aktivier mal das Audit-Log

Code: Select all

SecAuditEngine RelevantOnly
SecAuditLog /var/log/apache2/modsec_audit.log


Dann sieht man, welche Regel anschlägt und kann dann das Problem lösen.

sieht so aus:

Code: Select all

mod_security-message: Access denied with code 403. Pattern match "update.+set.+=" at POST_PAYLOAD
mod_security-action: 403


und betrifft z.B. diese Regel

Code: Select all

SecFilterSelective ARGS "update.+set.+="

toberkel
Posts: 86
Joined: 2004-07-16 17:22
Location: Hamburg

Re: False Positive in mod_security beheben

Post by toberkel » 2008-01-11 12:09

Hi.

Die Aktion steht drin:

Code: Select all

mod_security-action: 500
mod_security-message: Access denied with code 500. Pattern match "(insert[[:space:]]+into.+values|select.*from.+[a-z|A-Z|0
-9]|select.+from|bulk[[:space:]]+insert|union.+select|convert.+\(.*from)" at POST_PAYLOAD [id "300016"][rev "2"] [msg "Ge
neric SQL injection protection"] [severity "CRITICAL"]

Die Regel steht wirklich nicht drin, die liefer ich hier mal nach:

Code: Select all

#Generic SQL sigs
SecFilterSelective REQUEST_URI "!(/node/[0-9]+/edit|/forum/posting.php|/admins/wnedit.php|/alt_doc.php?returnUrl=.*edit|/admin/categories.php?cPath=.*|modules.php?name=Forums&file=posting&mode=.*)" "chain,id:300016,rev:2,severity:2,msg:'Generic SQL injection protection'"
SecFilterSelective ARGS "(insert[[:space:]]+into.+values|select.*from.+[a-z|A-Z|0-9]|select.+from|bulk[[:space:]]+insert|union.+select|convert.+(.*from)"


MfG,

toberkel