2015-11-23 5 views
12

Während des letzten Wochenende protokolliert einige meiner Seiten Fehler impliziert falsche Nutzung unserer URLs:Seltsame URL enthält 'A = 0 oder' 0 = A in Webserver-Logs

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

oder

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

statt

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

fand ich nur eine Seite ursprünglich, die diese genannten (https://forums.adobe.com/thread/1973913), wo sie t spekuliert Hat die zusätzliche Abfragezeichenfolge GoogleBot oder einen Codierungsfehler?

Ich habe vor kurzem meine Websites geändert, um PDO anstelle von mysql_* zu verwenden. Vielleicht hat diese Änderung die Fehler verursacht? Alle Hinweise wären nützlich.


Darüber hinaus stammen alle Anforderungen von demselben Benutzer-Agent, der unten angezeigt wird. Diese

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) 

führen Sie mir folgende Themen zu finden: pt-BR und Strange parameter in URL - what are they trying?

+0

solcher Link kann nicht von HREFs in der Site selbst generiert werden. und es ist seltsam, dass 5 verschiedene Seiten ähnliche Links in verschiedenen Stunden des Wochenendes erzeugten – Atara

+0

Okay, also warum haben Sie die falschen Links generiert? – zerkms

+0

Das ist meine Frage. Ich habe keine URLs mit A = 0 oder 0 + A generiert. Ich frage mich, was diese URLs erzeugt haben – Atara

Antwort

-6

da dies eine sehr alte Version von FireFox, ich blockiert es in meiner .htaccess-Datei -

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

Es ist ein Bot, der auf SQL-Injection-Schwachstellen testet, indem er eine Abfrage mit einem Apostroph schließt und dann eine Variable setzt. Es gibt auch ähnliche Injektionen, die sich mit Shell-Befehlen und/oder Dateipfad-Traversalen befassen. Ob es ein "guter Bot" oder ein schlechter Bot ist, ist unbekannt, aber wenn die Injektion funktioniert, haben Sie größere Probleme zu bewältigen. Es besteht eine 99% ige Chance, dass Ihre Site diese Style-Links nicht generiert und Sie können nichts tun, um sie daran zu hindern, diese URLs zu erstellen, es sei denn, Sie blockieren die Anfrage (n) mit einer einfachen Regex-Zeichenfolge oder einer komplexeren WAF wie ModSecurity.

Blockierung basierend auf Benutzeragent ist kein effektiver Winkel. Sie müssen stattdessen nach den Heuristiken für die Anfrage suchen und auf dieser Basis blockieren. Einige Beispiele für Dinge zu suchen in der URL/request/POST/Referrer, da beide utf-8 und Hex-Zeichen:

  • Doppel Apostrophe
  • Doppelstunden, vor allem, gefolgt von einem Schrägstrich in verschiedenen Kodierungen
  • Wörter wie "Skript", "etc" oder "passwd"
  • Pfade wie dev/null mit Rohrleitungen verwendet/Echo-Shell Ausgang
  • % 00 null-Zeichen-Byte-Stil verwendet für init einem neuen Befehl
  • http in der URL mehr als onc e (es sei denn, Ihre Website nutzt)
  • etwas über cgi
  • random „Unternehmen“ Pfade für Dinge wie Coldfusion (es sei denn, Ihre Website nutzt), tomcat, etc

Wenn Sie nicht mit einem WAF, hier ist eine Regex-Concat, die viele von denen innerhalb einer URL erfassen sollte. Wir verwenden es in PHP-Apps, so dass Sie einige Escape/Looks anpassen können/müssen, je nachdem, wo Sie dies verwenden.Beachten Sie, dass dies .cgi, wordpress und wp-admin zusammen mit einer Menge anderer Sachen in der Regex hat, entfernen Sie sie, wenn Sie müssen.

$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"; 

Mit ihm zumindest mit PHP, ist ziemlich geradlinig mit preg_match_all(). Hier ist ein Beispiel dafür, wie Sie es verwenden können: https://gist.github.com/dhaupin/605b35ca64ca0d061f05c4cf423521ab

WARNUNG: Seien Sie vorsichtig, wenn Sie diese auf Autoban (dh fail2ban Filter). MS/Bing DumbBots (und andere) murren oft URLs auf, indem sie Dinge wie seltsame Tripelpunkte aus abgeschnittenen URLs eingeben oder versuchen, einen tel: Link als URi zu treffen. Ich weiß nicht warum. Hier ist, was ich meine: Ein Link mit Text www.example.com/link-too-long...truncated.html kann auf eine korrekte URL zeigen, aber Bing kann versuchen, "wie es aussieht" darauf zuzugreifen, anstatt die href zu folgen, was zu einem WAF-Treffer aufgrund von Doppelpunkten führt.

+0

Als Hinweis, wenn Sie mit ModSecurity enden, setzen Sie es zuerst auf den ausführlichen Modus + no-process. Es gibt mehr als ein paar Regeln, die versuchen, den Googlebot zu verweigern - seltsamerweise ist eine davon eine IP-Reputationsregel. Im Nicht-Prozess-Modus sehen Sie möglicherweise, dass die Protokolle überschwemmt werden, aber keine Maßnahmen ergreifen, sodass Sie die strengen Regeln deaktivieren können. – dhaupin

+1

Ich sah diese 'A = 0 am Ende meiner URLs auch. Ich habe viel Code durchforscht und mich gefragt, was ich getan habe, um das zu verursachen, und natürlich nichts gefunden. Dann überprüfte ich die IP-Adressen, keine davon stammen von Kunden-IP-Adressen, die ich kenne. Es ist wirklich jemand versucht Injektion. –

Verwandte Themen