SQL注入程序带来的攻击及防范
现在基于web的攻击一般都是注入。导致注入的原因一般为对变量的过滤不完全,从而可以使入侵者非法执行程序或查询修改任意数据。随着注入攻击的愈演愈烈,一些专门的过滤代码应运而生。但一些过滤代码的不完善很可能导致新的攻击。下面就以目前应用最广泛的过滤代码--sql通用防注入程序为下列说明漏洞的成因、利用方法及防范措施。
sql通用防注入程序是由火狐的枫知秋编写的,功能相当完善的防注入代码。它能对定义的过滤字符实现get提交的过滤,并能记录攻击者的ip提交的数据信息。使用时只须在要防注入的文件头中加入代码<--#include file="wrsky_sql.asp"-->可以实现对变量的过滤。如果在数据库连接文件(如conn.asp)后加入程序代码,则可以实现整站的变量过滤,从而达到防注入的效果。
好了,下面我们先来看变量过滤部分的代码:
--------定义部份------------------
dim fy_post,fy_get,fy_in,fy_inf,fy_xh,fy_db,fy_dbstr
自定义需要过滤的字串,用 "枫" 分隔
fy_in = "枫;枫and枫exec枫insert枫select枫delete枫update枫count枫*枫%枫chr枫mid枫master枫truncate枫char枫declare"
----------------------------------
%>
<
fy_inf = split(fy_in,"枫")
--------post部份------------------
if request.form<> then
for each fy_post in request.form
for fy_xh=0 to ubound(fy_inf)
if instr(lcase(request.form(fy_post)),fy_inf(fy_xh))<>then
--------get部份-------------------
if request.querystring<> then
for each fy_get in request.querystring
for fy_xh=0 to ubound(fy_inf)
if instr(lcase(request.querystring(fy_get)),fy_inf(fy_xh))<>then
这段代码中定义了对“”“and”等常用注入变量的过滤,如果觉得过滤不够或太多可自行增减字符。很明显,只要通过get或post向服务器提交的数据中包含被过滤字符,都会被程序禁止。这就导致了一个问题,如果是在论坛的数据库连接文件后加入程序代码,发贴时只要贴子内容包括被过滤的字符就会被禁止掉。根据默认的过滤内容看来,如果发帖子内容为英文似乎是几乎无法发表的。另外,在定义论坛风格时有时会要用一些特殊字符(如百分号“%”)如果这些特殊字符被过滤的对象,那么整个论坛就不能正常运行了。对上面提到的问题,我用dvbbs做过测试,结果与我猜想的是完全一致的。
解决上述问题的方法是只在需要过滤的文件中防注入连接语句。但这样工作量比较大,而且一般站长是不知道什么文件需要过滤的。因此我的建议是把过滤代码加到conn.asp后,然后再建一个不包含过滤代码的connl.asp,把肯定不需要过滤且过滤代码对本文件运行有影响的文件连接到conn1.asp,但要注意两个数据连接文件的基本内容要保持一致。另外,在风格设置中最好不要用到过滤的字符,确实要用到的可在防注入程序中删掉对该字符的过滤。
上面讲的是防注入程序对站点运行的影响,并不能造成什么危害。其实,真正的危害来自数据记录部分,我们来看这部分的代码:
--------写入数据库-------头--------
fy_dbstr="dbq="+server.mappath("sqlin.mdb")+";defaultdir=;driver={microsoft access driver (*.mdb)};"
set fy_db=server.createobject("adodb.connection")
fy_db.open fy_dbstr
fy_db.execute("insert into sqlin(sqlin_ip,sqlin_web,sqlin_fs,sqlin_cs,sqlin_sj) values("&request.servervariables("remote_addr")&","&request.servervariables("url")&",get,"&fy_get&","&replace(request.querystring(fy_get),"","")&")")
fy_db.close
set fy_db = nothing
--------写入数据库-------尾--------
response.write "<script language=javascript>alert(枫网sql通用防注入系统提示↓\n\n请不要在参数中包含非法字符尝试注入!\n\nhttp://www.wrsky.com 系统版本:v2.0(asp)完美版);<script>
response.write "非法操作!系统做了如下记录↓<br>"
response.write "操作ip:"&request.servervariables("remote_addr")&"<br>"
response.write "操作时间:"&now&"<br>
esponse.write "操作页面:"&request.servervariables("url")&"<br>"
response.write "提交方式:get<br>"
response.write "提交参数:"&fy_get&"<br>"
response.write "提交数据:"&request.querystring(fy_get)
response.end
end if
next
next
end if
----------------------------------
这段代码的作用是对攻击者的信息及动作记录,以便我们采取必要的应对措施。从代码中可以看出程序分别对攻击者的ip,提交地址,提交内容等进行了记录,但这里明显有几处漏洞:
一、未对频繁的攻击进行处理。也就是说,无论我们怎么提交法数据,都会被程序记录,这样一来,将很可能导致恶意攻击的dos攻击。对此我做了一个试验。我在某个被保护文件的url后提交下列语句:and (select top l asc(mid (username,l,l)) from admin)>0,在提交过程中用按键精灵来记录,然后自动重复提交。不一会,数据库大小就发生了显著变化(如图1、2)。可以想象,如果用朔雪等工具开多线程提交,dos是绝对不成问题的。

图 2
二、记录数据长度未做截断。这是我在对防注入程序影响论坛运行的测试中发现的。如图3所示,如果发帖内容中包含被过滤字符时,帖子内容会被完全记录到数据库中。一般的论坛或文章系统对发表文章的长度都是限定的,但sql通用防注入程序并未对此做出限制。如果攻击者在被保护文件的url后提交一段超长的内容,很可能会导致程序的崩溃。因为危害较大,我没有试验,但我提交长达100k的内容却是被照常记录的。
- · 学习心得 TCP/IP攻击原理分析总结
- · SQL注入技术和跨站脚本攻击的检测
- · 真正安全起来 网页脚本攻击防范全攻略
- · 视频:ADSL宽带共享上网 2
- · 突破网络限制之三十六计篇
- · ADSL上网的常见问题及分析集锦
- · 视频:ADSL宽带共享上网
- · Windows系统中常见网络故障与解决方法
- · 揭开ADSL真正速度之谜:宽带到底该有多快
- · 网络管理之IP地址篇
- · 网络管理之网关篇
- · 一步一步学习代理服务器
- · 网络安全基础:防火墙的概念及实现原理
- · FTP登录错误详解
- · 测试网络通断的另类方法
- · 基于短信网关WAP推送的实现
- · 我写CC DDOS攻击器的思路及防范方法
- · 雅虎拟加强交友网站安全 防止成员账号泄露
- · ADSL常见问题精彩问答
- · 上网不用防火墙!一招克死所有病毒
- · SANS发布2005全球20大网络安全隐患排行
- · IE7将会采用Firefox的RSS Feed图标
- · 利用Google作黑客攻击的原理和防范
- · 知己知彼 解析远程控制带来的安全危险
- · 上网要当心!HTML文件也能格式化硬盘
- · 精解网络中IP地址与域名含义
- · 网管必知 如何设置虚拟主机访问权限
- · 手把手教你用代理
- · PHP在XP下IIS和Apache2服务器上的安装
- · 另辟蹊径:Windows系统防病毒另类高招
- · 经验共享—给闪存杀毒的另类方法一则
- · 用HelixProducer实现局域网内现场直播
- · 推荐 IE浏览器另类功能大放送
- · 局域网“隐身”小妙招
- · 局域网防雷电攻击完全揭密
- · 网吧IP自动修改程序
- · 轻松破解加密网页
- · 法治在线:音乐网站遭黑客持续攻击3个月
- · 网管员必读 10分钟恢复网络服务有绝招
- · 了解你的敌人 网络钓鱼攻击的实现过程
- · 如何利用嗅探器TcpDump分析网络安全
- · 修改Hosts文件获取的三个特殊妙用
- · 用Linux防火墙伪装抵挡黑客恶意攻击
- · 一段获得网卡地址的代码,可以用来做软件许可证用.
- · 给路由器设置用户 进行管理和维护
- · 入侵检测系统(IDS)的测试与评估
- · 美青睐网络购物 但担心身份偷窃和信息安全
- · 及时防范 看PDF、Flash中病毒解决方法
- · 拒绝破解 使用中文密码保护RAR文件
- · IE等四大浏览器巨头将推新标准 防止被攻击
- · 不再懊恼:能上QQ不能上网问题精解
- · 脚本图片类后门的完美使用方法
- · 实用防毒小技巧:中毒后的6个紧急处理措施
- · 网络欺骗技术
- · 在Win2000中预防Ping攻击
- · 浏览器安全权威指南
- · 黑客字典源码
- · 强制删除文件
- · 浅析Windows防火墙的缺陷
- · Win2000/XP系统三大典型红外通讯故障


(