网站运营
位置:首页>> 网站运营>> 教你简单防数据库注入

教你简单防数据库注入

 来源:asp之家 发布时间:2010-02-21 12:15:00 

标签:攻击防范,SQL注入,注入攻击,注入式攻击

由于ASP脚本系统在互联网上广泛的应用,针对ASP系统的脚本攻击越来越流行。在这些攻击中,攻击者多是利用注入、跨站、暴库、上传、cookies欺骗、旁注等手段为切入点的进而控制服务器的。针对目前网络上流行的SQL注入攻击,本文给出一种简单易行的解决办法,希望下一个被注入的不是你。

【SQL注入的漏洞简介】

所谓SQL注入式攻击,也就是SQL Injection,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。来自官方的说法是:“当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入攻击。SQL注入可能导致攻击者能够使用应用程序登录在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。”在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。而许多网站程序在编写时,没有对用户输入数据的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样用户就可以提交一段数据库查询代码,(一般是在浏览器地址栏进行,通过正常的www端口访问)根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是SQL注入产生了。其实简单点说,SQL注入的原理就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。

【SQL注入漏洞简单利用】

由于本文并不打算教你如何进行SQL注入攻击,所以只象征性的演示一下攻击者进行注入攻击的过程,对这方面感兴趣的可以参考其它文章。针对Access数据库的注入攻击过程大都比较麻烦,因为一般的步骤都是猜解管理员表名、字段名、字符长度、字符内容、寻找后台,所以网上产生了许多的注入工具,很容易上手,或许这也是注入攻击之所以流行的原因之一吧。笔者测试的是雨点下载系统,其list.asp、view.asp等文件都由于对参数ID没过滤而产生注入漏洞,常规的注入就不多说了,给大家抓一个图,如图1:

从图中可以看到注入点:http://202.193.72.123/list.asp?id=84进行注入,首先判断是否能注入,如果可以就显示“恭喜,该URL可以注入!”,然后进行表名的猜解,猜解到的数据库表名有两个,我们选择了与管理员账号密码有关的表userinfo进行猜解,猜解出来的字段有id、usr、pwd,然后我们对表字段里的内容进行猜解,这里猜到管理员账号为admin,管理员密码为admin888,整个过程手工完成比较麻烦,下面介绍Union查询的注入,一下子就暴出管理员账号密码了。雨点下载系统作为一套开源的代码,我们不难得知其数据库结构,管理员账号密码信息放在userinfo表段里面,其对应的字段分别为id、usr、pwd,另外雨点下载系统管理员与普通用户放在一个表,userinfo表里面有个userclassid字段,表示他们所对应的权限,而userclass表很明确的告诉了我们什么ID对应着什么权限,这里我们要进管理后台,当然得要系统管理员的账号密码,也就是在构造的时候加上相应的where判断语句。确定注入点情况下我们构造如下的语法:

union select usr,2,3 from userinfo where userclassid=1 结果返回显示有管理员账号的页面,如图2:

把上面构造的注入语句中的usr换为pwd就返回管理员密码,不再抓图。有了管理员账号密码再加上已经的管理后台地址,其它能做的事就不说了,不要破坏哦!

【SQL注入漏洞简单防范】

现在网络上比较流行的SQL注入工具的工作方式是通过GET和POST来完成具体的注入的,如果我们将注入时所用到的一些特殊符号过滤掉,那注入工具就没用了,从而达到了防注入的目的。比如针对GET提交方式进行注入的防范代码如下:

以下是引用片段:

 dim sql_injdata SQL_inj SQL_Get

  SQL_injdata = "’|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"

  SQL_inj = split(SQL_Injdata,"|")

  If Request.QueryString<>"" Then

  For Each SQL_Get In Request.QueryString

  For SQL_Data=0 To Ubound(SQL_inj)

  if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then

  Response.Write " "

  Response.end

  end if

  next

  Next

  End If



同样,POST的也要检测,注意这里很灵活的,只要把与注入有关的关键词写到SQL_injdata里再用”|”隔开就可以了。许多朋友甚至不会写代码怎么办,别急,有通用的防注入程序啦。这里笔者将为你介绍通用防注入程序是由火狐技术联盟枫知秋[F.S.T]所写的通用防注入程序2.0完美版,还是拿雨点下载系统的list.asp做例子,在此文件的页面头部用  调用即可。我们再手工测试下其注入漏洞:


0
投稿

猜你喜欢

  • 10月15日,微软在中国市场正式推出最新的手机操作系统Windows Mobile 6.5。全新的手机界面、更人性的用户体验,得到了大批手机
  • QICMS商家联盟网站系统是QICMS官方推出的专门针对商家/店铺联盟、城市打折消费类网站建设而提供的专业网站系统,采用.NET 2.0 +
  • 服务器维护有一段时间了,这其中最大的收获莫过于对服务器的备份与恢复,今天总结相关内容与大家分享,希望对服务器维护的朋友有点帮助。1.系统备份
  • 在过去的几个月里,总是接二连三的有文章针对网站改版发表评论,诸如说:&ldquo;好 &rdquo;,&ldquo;
  • 目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。一、使用FileSystemObject组件FileSystemObjec
  • 今天继续对美国各主要主机空间商进行特点述评,希望您能在选择过程中有所参考,这个系列将会继续下去,欢迎您的关注!再次说明一下,这些介绍只是个人
  • 百度联盟网盟推广图文混排产品形式上线,全新产品形式将助您提升收益!图文混排是主题描述产品在文字、图片形式之外新增加的一种推广形式。它是一种除
  • 在中国古代有这么一则小故事,说的是一位青年胸怀大志,但不拘小节,蜗居斗室。友人来访,看到这个场景说,你这的卫生为什么搞的这么烂啊?青年回答:
  • 百度是全球最大的中文搜索引擎,对中文网页的搜索技术在某种程度上领先于Google,百度在某些方面与Google有相同或相似之处外它还有以下特
  • 内容摘要:互联网就像一个江湖,而网站推广方法就像行走江湖所需要练的武功秘籍。这里给大家分享18种比较有效的网站推广秘笈。1、搜索引擎优化 通
  • 对于提高自己站点的访问量,最有效的办法是,在做好站点的同时,不放过每一次的宣传机会,永远记住,即使是滴水也能装满瓶子,而当我们容易看到某些经
  • 最近 Yahoo! Exceptional Performance 在 《优化网站性能的 14 条规则》的基础上又增加了 20 条新的规则。
  • 在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运
  • 网址:http://www.google.cn/intl/zh-CN/renrou/index.html什么是人肉搜索?人肉搜索与刺青、美白
  • DNS简单地说,就是Domain Name System(域名系统)。在一个以TCP/IP协议为主的网络环境中,DNS是一个非常重要而且常用
  • 一直不太想说Google Pagerank劫持这个话题,因为怕造成一些人刻意利用来骗其他的站长。不过聚友提供了判断PR劫持的目标网站的方法已
  • 做网赚说复杂也复杂,说简单也会简单,但为什么新手做网赚往往感到很无力,找不到任何方向,在万般无奈的情况下找到一个网赚的项目到头来还发现居然是
  • 搜索引擎优化是很多网站非常关心的,在搜索引擎中表现好,意味着能吸引大量的用户,网站的宣传也就容易了,业务也就好开展了。但在针对搜索引擎优化的
  • 各位站长朋友们,你们是否长期做在电脑前,对着电脑忙碌着呢?下面介绍几种消除疲劳以及保护眼睛的方法,或者会有些帮助。菊花茶是保护眼睛的好饮料!
  • 在Windows服务器系统中,每当服务器启动成功时,系统的C盘、D盘等都会被自动设置成隐藏共享,尽管通过这些默认共享可以让服务器管理维护起来
手机版 网站运营 asp之家 www.aspxhome.com