मेरे पास OWASP CRS के साथ कॉन्फ़िगर किए गए apache/modsecurity फ़ायरवॉल के पीछे एक वेब एप्लिकेशन चल रहा है।

निम्न URL को Modsecurity द्वारा अस्वीकार किया गया है:

GET /login?username=' /*!or*/1=1#

लेकिन यह फ़ायरवॉल पास करता है:

POST /login
Body: {"password":"' /*!or*/1=1#"}

क्या JSON बॉडी के बारे में मॉडसिक्योरिटी पर कोई सीमा है?

टेक्सास

अद्यतन १: मेरे पास नवीनतम ओडब्ल्यूएएसपी सीएसआर तैनात है:

Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/3.1.1.
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips

जीईटी के साथ ट्रिगर किया गया नियम 942100 ("msg": "एसक्यूएल इंजेक्शन अटैक डिटेक्टेड विद लिबजेक्शन") है। यह नियम निम्नलिखित है:

SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|REQUEST_HEADERS:User-Agent|REQUEST_HEADERS:Referer|ARGS_NAMES|ARGS|XML:/* "@detectSQLi" \
    "id:942100,\
    phase:2,\
    block,\
    capture,\
    t:none,t:utf8toUnicode,t:urlDecodeUni,t:removeNulls,\
    msg:'SQL Injection Attack Detected via libinjection',\
    logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
    tag:'application-multi',\
    tag:'language-multi',\
    tag:'platform-multi',\
    tag:'attack-sqli',\
    tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',\
    tag:'WASCTC/WASC-19',\
    tag:'OWASP_TOP_10/A1',\
    tag:'OWASP_AppSensor/CIE1',\
    tag:'PCI/6.5.2',\
    ver:'OWASP_CRS/3.1.1',\
    severity:'CRITICAL',\
    multiMatch,\
    setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
    setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}',\
    setvar:'tx.msg=%{rule.msg}',\
    setvar:'tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-%{MATCHED_VAR_NAME}=%{MATCHED_VAR}'"

अद्यतन २: समाधान: JSON बॉडी पार्सिंग को conf में जोड़ें:

SecRule REQUEST_HEADERS:Content-Type "application/json" "id:'200001',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON"

ध्यान दें कि Centos में, YAJL पैकेज्ड मॉडसिक्योरिटी मॉड्यूल के भीतर उपलब्ध नहीं है, आपको JSON समर्थन को सक्षम करने के लिए इसे स्रोत से संकलित करना होगा।

0
Nico 10 सितंबर 2019, 18:35

1 उत्तर

सबसे बढ़िया उत्तर

ModSecurity संस्करण 2.8 के बाद से अनुरोध निकायों के JSON पार्सिंग का समर्थन करता है, लेकिन आपको इसे कॉन्फ़िगर करने की आवश्यकता है। अधिक विवरण यहां देखें: https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/modsecurity-advanced-topic-of-the-week-json-support/

हालाँकि ModSecurity केवल एक ढांचा है जो नियमों को संसाधित कर सकता है। आपने यह नहीं बताया है कि आप किस नियम सेट का उपयोग कर रहे हैं (OWASP CRS, आपके अपने नियम? अन्य?) और न ही GET अनुरोध के लिए कौन सा नियम सक्रिय किया गया है। यह हो सकता है कि इसे केवल GET अनुरोधों के लिए कॉन्फ़िगर किया गया हो।

1
Barry Pollard 11 सितंबर 2019, 00:13