在网站或web应用程序中检测受感染的文件非常容易:您只需将文件与干净的备份或原始源(例如,与diff)进行比较就可以了。然而,在数据库中检测感染似乎并不容易。在大多数情况下,比较数据库可能太复杂了,因为大量的数据在不断变化:有日志、选项、帖子等的表。所以我想,也许唯一合理的解决方案是实际检查数据库中的数据,看看是否有什么意想不到的东西。但是,除了一些显而易见的事情,我不知道该寻找什么和如何寻找它。显而易见的是那些与帐户和权限相关的内容,因此,例如,我知道我肯定应该检查任何具有意外高权限的用户,这通常很容易做到。但不如..。存储的XSS?我应该寻找像“脚本”或"onload“之类的字符串吗?我还应该找什么,我应该怎么做呢?
我知道这一切在很大程度上取决于web应用程序的具体细节(它在数据库中存储了什么以及它是如何使用的),但是我只是在寻找一般性的建议。请注意,我不是在问如何从感染中恢复:我只是问如何检测它,假设它仅限于数据库。而且,我所说的“感染”指的是任何可能导致未经授权访问的东西。
发布于 2019-01-04 01:18:32
这个问题是相当通用的,如果没有更具体的上下文来说明您操作的是什么样的web应用程序和数据库,我就无法提出一个具体的解决方案。
若要检测RDBMS (如MySQL/Postgres)表的完整性受到破坏,而您不希望对其进行任何更新或新的执行,您可以解析查询日志中的INSERT、更新到该特定表。这最终不会扩大。我建议您设置一些触发器来记录某些条件(插入、更新、.)在您的站点上所反映的表上。关于如何使用OSSEC和https://blog.rootshell.be/2011/01/07/auditing-mysql-db-integrity-with-ossec/上的自定义UDF日志函数来实现这一点,有一个很好的指南。
至于在发现可能包含存储的XSS的特定条目后进行的死后/法医检查,您必须查看数据是如何构造的,并试图查找异常而不是特定的字符串,因为XSS有许多变体,取决于服务器端技术、攻击者使用的不同的规避技术等等。
我知道你的问题是专门针对数据库和违章后检查的。但是最好的做法是在早期层监视和捕获这些内容,比如在访问应用程序(如ModSecurity1或IronBee2 )之前进行一些WAF/content过滤。
https://security.stackexchange.com/questions/200774
复制相似问题