我正在处理由Accunetix生成的php应用程序的安全评估报告。
该报告声称存在SQL Injection漏洞。该应用程序是PHP与MySQL。这是它所说的攻击头(特别是接受语言头):
GET /user_login.php HTTP/1.1
user-agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
accept-language: 1;select pg_sleep(1); --
X-Requested-With: XMLHttpRequest
Cookie: PHPSESSID=35kno6h8kmkbin973q02gojp82; uniqueuser=1382404387
Host: xxx.xxx.com
Connection: Keep-alive
Accept-Encoding: gzip,deflate
我没有在应用中的任何地方找到“accept-language”或“accept_language”。此外,pg_sleep()
不是MySQL函数。
我在PHP中搜索了一个已知漏洞但没有找到任何内容。这是误报,还是我错过了什么?
答案 0 :(得分:3)
Accept-Language
是客户端浏览器发送的请求标头。
Accunetix 试图通过注入恶意代码来查找安全整体(模仿黑客)以测试您的应用程序是否容易受到攻击,从而操纵这些标头。
如果您没有使用接受语言标头,或者在数据库查询中请求标头,那么可能是误报。为了确保,请查看该请求的响应,如果响应正常,则一切正常。
答案 1 :(得分:1)
代码可能会将该标头视为选择语言的来源,这是通过数据库查询完成的。在生成查询时,HTTP头的内容被不正确地解析。
您没有看到这个的原因可能是因为HTTP标头的提取是间接完成的(例如$_SERVER[$language_header]
)。