我的数据库被攻击了
My database is being attacked
我有一个数据库 运行 SQL Server 2008 r2。我遇到了某些列值的问题
我注意到某些字段值会自动更新。
它们包含如下数据:
- 原值12345
- 脏值 12345
<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>
我不知道这是怎么发生的,这是什么样的攻击?知道在我的应用程序代码中,这是一个 ASP.Net WebForms 应用程序,我没有更新状态 并且一些受感染的列不是从客户端输入中读取的,但它们是外键和它们的值是从数据库中读取的,因此无法将这些脏值放入其中。
我假设这是一个 SQL 注入攻击。
SQL 注入攻击的全部意义在于,他们找到了执行任意 SQL 命令的单一弱点。如果您接受来自 Web 的输入,无论是针对 insert/update/delete/select 查询,而且您不使用参数化查询,攻击者都可以访问您数据库中的任何 table 并随意使用它。
如果没有更多细节,很难准确说明它是如何工作的 - 它似乎是一个脚本,因为互联网上有很多页面都具有相同的 URL,而且它们都使用 . asp作为后缀。
我已经记不起 ASP 语法了,但我会试一试。我也没有费心使用 HTML 编码来使它更清晰。
举个例子,假设您有一个可以找到产品信息的页面:
http://myapp.com/customers.asp?productID=1
当该页面访问您的服务器时,您构造一个 SQL 字符串:
Select * from products where productID = & request.productID
然后执行它,在页面上显示结果。
正常情况下,您的SQL请求是Select * from products where productID = 1
攻击者可能会按如下方式操纵 URL:
http://myapp.com/customers.asp?productID=1 union sp_help
这意味着您执行
Select * from products where productID = 1
union
sp_help
并在生成的网页上显示结果。获得 sp_help 结果以匹配产品数据中的列需要一些反复试验,但最终攻击者获得了完整的数据库模式。
如果攻击者想要操纵数据,他们可能会做类似
的事情
http://myapp.com/customers.asp?productID=1; update lookupTable set description = description + '<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>'
我有一个数据库 运行 SQL Server 2008 r2。我遇到了某些列值的问题
我注意到某些字段值会自动更新。
它们包含如下数据:
- 原值12345
- 脏值 12345
<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>
我不知道这是怎么发生的,这是什么样的攻击?知道在我的应用程序代码中,这是一个 ASP.Net WebForms 应用程序,我没有更新状态 并且一些受感染的列不是从客户端输入中读取的,但它们是外键和它们的值是从数据库中读取的,因此无法将这些脏值放入其中。
我假设这是一个 SQL 注入攻击。
SQL 注入攻击的全部意义在于,他们找到了执行任意 SQL 命令的单一弱点。如果您接受来自 Web 的输入,无论是针对 insert/update/delete/select 查询,而且您不使用参数化查询,攻击者都可以访问您数据库中的任何 table 并随意使用它。
如果没有更多细节,很难准确说明它是如何工作的 - 它似乎是一个脚本,因为互联网上有很多页面都具有相同的 URL,而且它们都使用 . asp作为后缀。
我已经记不起 ASP 语法了,但我会试一试。我也没有费心使用 HTML 编码来使它更清晰。
举个例子,假设您有一个可以找到产品信息的页面:
http://myapp.com/customers.asp?productID=1
当该页面访问您的服务器时,您构造一个 SQL 字符串:
Select * from products where productID = & request.productID
然后执行它,在页面上显示结果。
正常情况下,您的SQL请求是Select * from products where productID = 1
攻击者可能会按如下方式操纵 URL:
http://myapp.com/customers.asp?productID=1 union sp_help
这意味着您执行
Select * from products where productID = 1
union
sp_help
并在生成的网页上显示结果。获得 sp_help 结果以匹配产品数据中的列需要一些反复试验,但最终攻击者获得了完整的数据库模式。
如果攻击者想要操纵数据,他们可能会做类似
的事情http://myapp.com/customers.asp?productID=1; update lookupTable set description = description + '<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>'