我在访问日志中看到许多条目'A=0
被添加到查询参数中,例如:
http://www.server.org/foo/?bar=1'A=0&类型=xml
附加的参数'A=0
各不相同,但始终是'A=0
,因此这不太可能是某个意外点击的格式错误的 URL。此外,引用者始终与目标 URL 相同,这让我认为这是一个完全捏造的请求。
我不明白这是要做什么。假设这是一次 SQL 注入尝试,它似乎会生成无效的 SQL 并直接失败。我是不是漏掉了什么?
答案1
它有点像一个钝器,旨在“探测”编写不佳的网站,即那些容易受到 SQL 注入攻击的网站和错误处理能力较差。
$user = $_GET[ 'bar' ] ; // "1'A=0"
$sql = "select * from users where username = '$user'" ; // literally '1'A=0'
此类网站会抛出错误,并且很可能显示所有的错误消息将向全世界和攻击者显示。该错误的措辞很可能是DBMS 特定。
因此,像这样的一个可疑请求,Bingo!您的攻击者现在知道您正在运行什么 DBMS,并且可以找到他们最喜欢的“攻击向量剧本”开始入侵那。
答案2
我已经看到这些问题好几个月了,我只是认为它们是由寻找 SQL 注入漏洞的机器人造成的。
我的所有 URL 变量几乎都是严格数字的,因此我过滤所有非数字 URL 变量并重定向到友好的错误页面。
错误页面通过电子邮件向我发送了 CGI 转储,因此如果攻击超过几次,我就会阻止该 IP。