2015-11-23 3 views
12

पिछले सप्ताहांत के दौरान मेरी स्थलों में से कुछ हमारे यूआरएल की गलत उपयोग जिसका अर्थ त्रुटियों लॉग इन:अजीब URL वाले 'ए = 0 या' 0 = वेब सर्वर लॉग में एक

...news.php?lang=EN&id=23'A=0 

या

...news.php?lang=EN&id=23'0=A 

...news.php?lang=EN&id=23 

के बजाय

मैं केवल एक पृष्ठ मूल रूप से जो इस उल्लेख (https://forums.adobe.com/thread/1973913) जहाँ वे टी अनुमान लगाया पाया टोपी अतिरिक्त क्वेरी स्ट्रिंग GoogleBot या एन्कोडिंग त्रुटि से आती है।

मैंने हाल ही में mysql_* के बजाय पीडीओ का उपयोग करने के लिए अपनी साइटें बदल दी हैं। शायद इस बदलाव से त्रुटियों का कारण बन गया? कोई संकेत उपयोगी होगा।


इसके अतिरिक्त, सभी अनुरोध नीचे दिखाए गए उपयोगकर्ता-एजेंट से आते हैं।

Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) 

यह निम्न सूत्र खोजने के लिए मुझे नेतृत्व: pt-BR और Strange parameter in URL - what are they trying?

+0

इस तरह के लिंक को साइट पर एचआरईएफ से उत्पन्न नहीं किया जा सकता है। और यह अजीब बात है कि 5 अलग-अलग साइटों ने सप्ताहांत के विभिन्न घंटों में समान लिंक उत्पन्न किया – Atara

+0

ठीक है, तो आपने गलत लिंक क्यों उत्पन्न किए? – zerkms

+0

मेरा प्रश्न है। मैंने ए = 0 या 0 + ए के साथ यूआरएल उत्पन्न नहीं किए। मुझे आश्चर्य है कि इन यूआरएल – Atara

उत्तर

-6

के बाद से इस फ़ायर्फ़ॉक्स का एक बहुत ही पुराने संस्करण है, मैं अपने htaccess फ़ाइल में यह अवरुद्ध -

RewriteCond %{HTTP_USER_AGENT} Firefox/3\.5\.2 [NC] 
RewriteRule .* err404.php [R,L] 
22

यह एस्ट्रोफ़े के साथ एक क्वेरी बंद करके SQL इंजेक्शन भेद्यता के लिए एक बॉट परीक्षण है, फिर एक चर सेट करना। ऐसे समान इंजेक्शन भी हैं जो खोल कमांड और/या फ़ाइल पथ ट्रैवर्सल से निपटते हैं। चाहे वह "अच्छा बॉट" या खराब बॉट अज्ञात है, लेकिन अगर इंजेक्शन काम करता है, तो आपके पास सौदा करने के लिए बड़े मुद्दे हैं। 99% मौका है कि आपकी साइट इन स्टाइल लिंक्स को उत्पन्न नहीं कर रही है और उन यूआरएल को क्राफ्ट करने से रोकने के लिए आप कुछ भी नहीं कर सकते हैं जब तक कि आप एक साधारण रेगेक्स स्ट्रिंग के साथ अनुरोध को अवरुद्ध न करें या मॉडरसेक्चर जैसे अधिक जटिल डब्ल्यूएएफ को अवरुद्ध न करें।

उपयोगकर्ता एजेंट के आधार पर अवरुद्ध करना एक प्रभावी कोण नहीं है। आपको अनुरोध के आधार पर अनुरोध हेरिस्टिक और ब्लॉक की आवश्यकता है।

  • डबल अवधि, विशेष रूप से विभिन्न एन्कोडिंग
  • में एक स्लेश के बाद

    • डबल अक्षर लोप: बातों के लिए दोनों utf-8 और हेक्स पात्रों के रूप में, यूआरएल/अनुरोध/पोस्ट/रेफरर में देखने के लिए के कुछ उदाहरण
    • शब्द "स्क्रिप्ट", "आदि" या "पासवर्ड"
    • रास्तों dev/null तरह पाइपिंग के साथ प्रयोग किया/खोल उत्पादन गूंज
    • % 00 अशक्त बाइट शैली यूआरएल अधिक में एक नया आदेश init के लिए इस्तेमाल किया
    • http वर्ण की तरह ओएनसी से ई (जब तक कि आपकी साइट का उपयोग करता है)
    • cgi के बारे में कुछ भी (जब तक कि आपकी साइट का उपयोग करता है) coldfusion, बिल्ला, आदि

    जैसी चीजों के लिए

  • यादृच्छिक "उद्यम" पथ आप प्रयोग नहीं कर रहे हैं, तो एक डब्ल्यूएएफ, यहां एक रेगेक्स कॉन्सैट है जो यूआरएल के भीतर उनमें से कई को पकड़ लेना चाहिए। हम इसे PHP ऐप्स में उपयोग करते हैं, इसलिए आप इसका उपयोग कहां कर रहे हैं इसके आधार पर कुछ एस्केप/लुक को ट्विक करने की आवश्यकता होगी।ध्यान दें कि इसमें .cgi, wordpress, और wp-admin रेगेक्स में अन्य सामानों के समूह के साथ, यदि आपको आवश्यकता हो तो उन्हें हटा दें।

    $invalid = "(\(\))"; // lets not look for quotes. [good]bots use them constantly. looking for() since technically parenthesis arent valid 
    $period = "(\\002e|%2e|%252e|%c0%2e|\.)"; 
    $slash = "(\\2215|%2f|%252f|%5c|%255c|%c0%2f|%c0%af|\/|\\\)"; // http://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work 
    $routes = "(etc|dev|irj)" . $slash . "(passwds?|group|null|portal)|allow_url_include|auto_prepend_file|route_*=http"; 
    $filetypes = $period . "+(sql|db|sqlite|log|ini|cgi|bak|rc|apk|pkg|deb|rpm|exe|msi|bak|old|cache|lock|autoload|gitignore|ht(access|passwds?)|cpanel_config|history|zip|bz2|tar|(t)?gz)"; 
    $cgis = "cgi(-|_){0,1}(bin(-sdb)?|mod|sys)?"; 
    $phps = "(changelog|version|license|command|xmlrpc|admin-ajax|wsdl|tmp|shell|stats|echo|(my)?sql|sample|modx|load-config|cron|wp-(up|tmp|sitemaps|sitemap(s)?|signup|settings|" . $period . "?config(uration|-sample|bak)?))" . $period . "php"; 
    $doors = "(" . $cgis . $slash . "(common" . $period . "(cgi|php))|manager" . $slash . "html|stssys" . $period . "htm|((mysql|phpmy|db|my)admin|pma|sqlitemanager|sqlite|websql)" . $slash . "|(jmx|web)-console|bitrix|invoker|muieblackcat|w00tw00t|websql|xampp|cfide|wordpress|wp-admin|hnap1|tmunblock|soapcaller|zabbix|elfinder)"; 
    $sqls = "((un)?hex\(|name_const\(|char\(|a=0)"; 
    $nulls = "(%00|%2500)"; 
    $truth = "(.{1,4})=\1"; // catch OR always-true (1=1) clauses via sql inject - not used atm, its too broad and may capture search=chowder (ch=ch) for example 
    $regex = "/$invalid|$period{1,2}$slash|$routes|$filetypes|$phps|$doors|$sqls|$nulls/i"; 
    

    यह का उपयोग करना, कम से कम पीएचपी साथ, बहुत सीधा preg_match_all() के साथ आगे है। https://gist.github.com/dhaupin/605b35ca64ca0d061f05c4cf423521ab

    चेतावनी:: सावधान रहें तो आप इस (यानी, fail2ban फिल्टर) autoban करने के लिए सेट करता है, तो आप निम्न तरीके से उपयोग कर सकते हैं का एक उदाहरण है। एमएस/बिंग डंबबॉट्स (और अन्य) अक्सर यूआरएल के रूप में अजीब ट्रिपल डॉट्स जैसी चीजों को दर्ज करके यूआरएल बनाते हैं, या यूआरआई के रूप में tel: लिंक हिट करने का प्रयास करते हैं। मुझे नहीं पता क्यों। यहां मेरा मतलब है: पाठ www.example.com/link-too-long...truncated.html के साथ एक लिंक एक सही यूआरएल को इंगित कर सकता है, लेकिन href का पालन करने के बजाय बिंग इसे "जैसा दिखता है" तक पहुंचने का प्रयास कर सकता है, जिसके परिणामस्वरूप डबल डॉट्स के कारण डब्ल्यूएएफ हिट हो जाती है।

  • +0

    एक नोट के रूप में, यदि आप ModSecurity का उपयोग कर समाप्त करते हैं, तो इसे पहले वर्बोज़ + नो-प्रोसेस मोड पर सेट करें। ऐसे कुछ नियम हैं जो Googlebot से इनकार करने का प्रयास करेंगे - अजीब तरह से उनमें से एक आईपी प्रतिष्ठा नियम है। नो-प्रोसेस मोड में आप लॉग बाढ़ देख सकते हैं, लेकिन कार्रवाई नहीं कर रहे हैं, इसलिए आप सख्त नियम अक्षम कर सकते हैं। – dhaupin

    +1

    मैंने इन यूआरएल के अंत में भी 'ए = 0 देखा। मैं बहुत सारे कोड से गुज़र रहा था कि मैंने ऐसा करने के लिए क्या किया था, निश्चित रूप से कुछ भी नहीं ढूंढ रहा था। फिर मैंने आईपी पते की जांच की, उनमें से कोई भी किसी भी ग्राहक आईपी पते से नहीं है जिसे मैं पहचानता हूं। यह वास्तव में इंजेक्शन की कोशिश कर रहा है। –

    संबंधित मुद्दे