教你简单防数据库注入
来源:asp之家 发布时间:2010-02-21 12:15:00
由于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做例子,在此文件的页面头部用 调用即可。我们再手工测试下其注入漏洞:
猜你喜欢
- 7月18日消息,Discuz!云平台旗下的社区QQ群功最新推出了两个新功能:默认长版显示和绑定群提醒功能。这是Discuz! 云平台自201
- 百度联盟网盟推广图文混排产品形式上线,全新产品形式将助您提升收益!图文混排是主题描述产品在文字、图片形式之外新增加的一种推广形式。它是一种除
- 站长时下应该是互联网行业最火的词,不管是什么网站管理者都喜欢自称为站长。在互联网这个圈子混久了渐渐发现,站长这个圈子已经自然而然的分成两大阵
- 一个网站要出名,恐怕炒作是少不了的。这也是最节省广告费的一种办法了!很多人对炒作很反感。但是一个网站想快速把大家知道,想用最少的钱做最多的事
- 八、Courier-IMAPInstallA.先在普通用户下#./configure-without-authpwd-without-aut
- 近期国内部分站点遭到了较大规模的拒绝服务(D.O.S)攻击(包括类似前期yahoo等大型国际网站所遭受的的DDoS攻击——分布式拒绝服务攻击
- 最近在学习k8s,需要用三台centOS 虚拟机来搭建环境,因此我使用VMware安装了三台centOS 7 的镜像,这个过程踩了很多坑,比
- 根据对一些站长的最新调查显示,百度收录新网站的大约时间是2周。也就是说,新站做好了,需要等2周时间才能在百度收录。只有很少一部分幸运的站长,
- prefork几乎还是目前的唯一MPM,我在下面主要还是讨论它的工作原理和相关指令调整。查看缺省生成的httpd.conf配置文件,会发现里
- cpanel-wordpress博客换域名教程写yao1l.com转向yilongseo.com的过程,如果你的博客要换域名的不防可以看看,
- 今夏,住在“爱情公寓”里的7个年轻人啼笑皆非的生活故事吸引了大量观众。这部由爱情公寓网站投拍的同名电
- 本文实例讲述了CentOS使用本地yum源搭建LAMP环境。分享给大家供大家参考,具体如下:【准备工作】配置防火墙,开启80端口、3306端
- 1.Linux中如何表示硬盘,分区Linux内核读取光驱,硬盘等资源时均通过“设备文件”的形式进行,因此在linux系统中,将硬盘和分区表示
- 一、前言随着email在企业里广泛使用,它已经成为传播病毒的最主要的手段,保护企业用户免受可能带病毒的邮件附件的感染,尤其是可执行文件的邮件
- 8、修改sendmail.cfvi/etc/sendmail.cf在档案最后加上以下的内容:注意:复制/贴上以下内容有时会因为htmltag
- Linux LVM逻辑卷配置过程详解许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估
- 查看记录文件是很乏味的。记录文件令人厌恶,包含了太多的信息,经常使人非常头疼。幸运的是,这些枯燥的工作有代劳者,利用一些日志分析工具,不仅可
- 在google庞大的流量中,google只想要你的网站流量中很小的一部分。而他们愿意为这一小部分流量付一大笔钱!对于那些抱怨自己有个高流量但
- 今天谈的百度搜索引擎优化,并非传统的百度搜索引擎优化,而是针对百度搜索引擎算法最近调整,侯庆龙分析百度搜索引擎优化总体的分析。百度搜索引擎竞
- 自从丘仕达那个单页面一天6万IP的实验发布以来,网上就掀起一股单页面优化讨论的风潮,眼红的纷纷跟风仿效,但也有一些人质疑单页面优化的可取性。