我最近发现我的网站有一个带有SQL注入漏洞的页面。在测试时,它很容易被像sqlmap这样的隐藏工具所利用。如何确定是否使用SQL注入攻击访问了站点数据库,可能是利用了这个漏洞?服务器正在运行Apache2.4.18和MySQL Ver 14.14远程5.7.16。
发布于 2017-06-22 01:38:17
因为您记录了对数据库的所有查询,所以查找不属于数据库的查询。
从失败的查询开始。假设您的应用程序没有错误,那么提交给DB的查询应该很少失败。攻击者通常会在找到易受攻击的应用程序后执行一组查询。如果您在用于访问DB的帐户上应用最少特权的原则,您应该会发现大量失败的查询。还有一些查询会失败,因为不太复杂的攻击者可能会有一系列与您的数据库版本、版本或供应商不兼容的查询。
接下来,查找应用程序无法生成的查询/命令。例如,如果应用程序不应该访问系统表、系统功能、信息模式等.但你可以在日志中看到它们,这是一个很好的迹象,可能有些地方不对劲,值得深入调查。查看您的操作系统日志在这里可能会有帮助,以防他们尝试或成功地植入后门/rootkit。
一旦您完成了该操作,请查找具有异常/意外行为的查询。例如,返回比正常数据多得多的查询。如果看到查询同时访问所有表或运行显示表,然后按顺序访问每个表,则很有可能有攻击者尝试(或成功)提取数据。即使是一些看似无害的东西,比如SELECT *,如果没有WHERE子句,也是可疑的(假设你的应用程序不这么做)。注意,这适用于任何可能的查询,而不仅仅是SELECT。攻击者可能是一名心怀不满的员工,因此决定随机删除或更新数据,从而给您的审计师带来麻烦,甚至更糟。
查看IP地址通常没有帮助,即使您正在查看web服务器日志,除非您的用户连接的IP地址范围狭窄和/或众所周知。很少有攻击者在家里的电脑上做这件事。机器人和代理遍布世界各地,而且IP很容易被欺骗。除非你让你的ISP或Telco供应商参与进来,否则你不太可能对你自己的日志有很深的了解。一个更好的指标是您的公司防火墙或网络日志,以查找异常的出站IP目标。提取数据的攻击者必须将其发送到某个真正的端点。这种情况通常发生在一个不合作的地方,或者在外国公司或执法部门来敲门时行动缓慢。
发布于 2017-06-04 17:32:54
要想成为亲活动的应用程序,您可以使用PDO而不是普通的SQL查询。
检测SQL注入的措施可以是:
发布于 2017-06-04 18:25:30
参见Apache的access.log。有趣的事情出现在那里。
https://dba.stackexchange.com/questions/175375
复制相似问题