gpt4 book ai didi

url - Web 服务器日志中包含 'A=0 or ' 0=A 的奇怪 URL

转载 作者:行者123 更新时间:2023-12-03 13:31:15 24 4
gpt4 key购买 nike

在上周末,我的一些网站记录了错误,暗示我们的 URL 使用错误:

...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 或编码错误。

我最近更改了我的网站以使用 PDO 而不是 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?

最佳答案

这是一个通过用撇号关闭查询,然后设置变量来测试 SQL 注入(inject)漏洞的机器人。还有类似的注入(inject)处理 shell 命令和/或文件路径遍历。无论是“好机器人”还是坏机器人都不得而知,但如果注入(inject)有效,您就有更大的问题需要处理。您的网站有 99% 的可能性没有生成这些样式链接,除非您使用简单的正则表达式字符串或更复杂的 WAF(例如 ModSecurity)阻止请求,否则您无法阻止他们制作这些 URL。

基于用户代理的阻塞不是一个有效的角度。您需要查找请求启发式并基于此进行阻止。在 url/request/POST/referrer 中查找的一些示例,包括 utf-8 和十六进制字符:

  • 双撇号
  • 双句点,尤其是各种编码中的斜线
  • 诸如“脚本”、“等”或“密码”之类的词
  • dev/null 这样的路径用于管道/回声外壳输出
  • %00 个空字节样式字符用于初始化新命令
  • 网址中的 http 不止一次(除非您的网站使用它)
  • 关于 cgi 的任何事情(除非您的网站使用它)
  • 用于冷融合、tomcat 等的随机“企业”路径

  • 如果您不使用 WAF,这里是一个正则表达式 concat,它应该捕获 url 中的许多内容。我们在 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";

    使用它,至少在 PHP 中,使用 preg_match_all() 非常简单。 .这是一个如何使用它的示例: https://gist.github.com/dhaupin/605b35ca64ca0d061f05c4cf423521ab

    警告:如果将此设置为 autoban(即,fail2ban 过滤器),请小心。 MS/Bing DumbBots(和其他人)经常通过在截断的 url 后输入奇怪的三点之类的东西来弄乱 url,或者试图点击 tel:。链接为 URi。我不知道为什么。这就是我的意思:带有文本的链接 www.example.com/link-too-long...truncated.html可能指向正确的 url,但 Bing 可能会尝试“按其外观”访问它,而不是遵循 href , 由于双点导致 WAF 命中。

    关于url - Web 服务器日志中包含 'A=0 or ' 0=A 的奇怪 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33867813/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com