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.
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
Okay, also warum haben Sie die falschen Links generiert? – zerkms
Das ist meine Frage. Ich habe keine URLs mit A = 0 oder 0 + A generiert. Ich frage mich, was diese URLs erzeugt haben – Atara