1

我正在研究 Accunetix 生成的 php 应用程序的安全评估报告。

该报告声称存在 SQL 注入漏洞。该应用程序是带有 MySQL 的 PHP。这是它所说的发起攻击的标头(特别是接受语言标头):

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 中搜索了一个已知漏洞,但没有找到任何东西。这是误报,还是我错过了什么?

4

2 回答 2

3

Accept-Language是客户端浏览器发送的请求头。

Accunetix试图通过注入恶意代码来操纵这些标头,以找到安全整体(模仿黑客)来测试您的应用程序是否容易受到它们的攻击。

如果您没有在数据库查询中使用接受语言标头或请求标头,则可能是误报。为了确定,看那个请求的响应,如果响应正常,那么一切OK。

于 2013-11-04T23:05:04.333 回答
1

代码可能会将该标题视为选择语言的来源,这是通过数据库查询完成的。并且在生成查询时,HTTP 标头的内容被不正确地解析。

您看不到这一点的原因可能是因为 HTTP 标头的获取是间接完成的(如在 中$_SERVER[$language_header])。

于 2013-11-04T22:56:20.107 回答