黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 网管频道 >> 入侵检测 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]测试SQL防注入脚本
      ★★★★★

测试SQL防注入脚本

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-12-21 7:53:30


另外,究竟写入‘防SQL注入脚本’维护的数据库有什么用呢?在过滤引擎Neeao_SqlIn.Asp的最后一段定义了若浏览任何加载引擎脚本的页面时会检索数据内是否存在存在攻击者的IP地址,若‘存在’则直接输出警告信息:

以下是引用片段:
  Dim Sqlin_IP,rsKill_IP,Kill_IPsql
  Sqlin_IP=Request.ServerVariables("REMOTE_ADDR")
  Kill_IPsql="select Sqlin_IP from SqlIn where Sqlin_IP='"&Sqlin_IP&"' and kill_ip=true"
  Set rsKill_IP=killSqlconn.execute(Kill_IPsql)
  If Not(rsKill_IP.eof or rsKill_IP.bof) Then
    Response.write "<Script Language=JavaScript>alert('SQL通用防注入系统提示你↓\n\n你的Ip已经被本系统自动锁定!\n\n如想访问本站请和管理员联系!\n\nHttp://Www.wrsky.Com \n\n系统版本:V3.0(ASP)\n\nBy:Neeao');</Script>"
  Response.End
  End If
  rsKill_IP.close

如果您发现再登陆不了了,就是已经进‘黑名单’了,赶紧加/换个PROXY浏览吧。

再看看POST的怎么样。首先确认一下缺陷,浏览:
http://127.0.0.1/admin.asp
输入帐号、密码均为:
‘ or ‘’=’
直接登陆没问题(确认缺陷存在)。开始测试时我把:
<!--#Include File="Neeao_SqlIn.Asp"-->
放入admin.asp的最后,结果报警信息照出、黑名单照进,但却等直接浏览注入后登陆的页面。究竟怎么回事???后来看了一下,其实是和脚本的构成有关,看看修改后的admin.asp的内容:

以下是引用片段:
<!--#include file="config.asp"-->
<!--#include file="conn.asp"-->
<!--#include file="error.asp"-->
<!--#include file="lib/nav.asp"-->
<!--#include file="lib/incjs.asp"-->
<!--#include file="lib/adminmenu.asp"-->
<!--#include file="lib/admin_body.asp"-->
<!--#include file="lib/adminfoot.asp"-->
<title><%=webname%>-管理登录</title>
<%
dim founderr,errmsg
founderr=false
errmsg=""
call admin_nav()
call admin_body()
call adminendpage()
%>


<!--#Include File="Neeao_SqlIn.Asp"-->
分析一下登陆流程,首先在admin.asp中登陆部分是嵌套在lib/admin_body.asp中,登陆的部分为:

以下是引用片段:
<form name="form1" method="post" action="admin.asp?action=adminlogin">
<tr>
<td height="24" align="center" background="images/bg3.gif" class="diaryhead">
<font color="#333333">管理员登陆(如果您不是管理员请勿登录)</font></td>
</tr>
<tr>
<td bgcolor="#F5F5F5" class="chinese" align="center">用户名
<input type="text" name="adminname" class="textarea" size="20">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密码
<input type="password" name="adminpwd" class="textarea" size="20">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="Submit" value="登录" class="button">
</td>
</tr>
</form>

一旦把数据POST到admin.asp时,admin.asp将执行lib/admin_body.asp中的admin_body()函数作认证查询,因此一个标准的绕过GET认证(输入’ or ‘’=’)为:
http://127.0.0.1/admin.asp?action=adminlogin&adminname=%27+or+%27%27%3D%27&adminpwd=%27+or+%27%27%3D%27&Submit=%B5%C7%C2%BC
这里adminname与adminpwd字段都肯定有Fy_Inf中过滤的内容,通过警告提示我们可以确认引擎脚本Neeao_SqlIn.Asp是处于工作状态的,但因为它在:

以下是引用片段:
<%
dim founderr,errmsg
founderr=false
errmsg=""
call admin_nav()
call admin_body()
call adminendpage()
%>

之下,所以饶过认证后的页面还是输出了(Neeao_SqlIn.Asp中警告信息的Respone.End无法局限输出),因此我们必须把<!--#Include File="Neeao_SqlIn.Asp"-->放在它的上面才有效。当然放在lib/admin_body.asp中也是有效的。

最后说说几点需要注意的问题:
1)  默认情况下有没可能通过GOOGLE HACKING找到Neeao_sql_admin.asp页面的地址,暴破登陆管理平台的风险呢?总体上来说风险不大,最多是解除IP锁定与删除日志而已,不会威胁业务连续性。
2)  默认的SqlIn.mdb数据库呢?怕被下载?风险也不大,但有些朋友会把它的缀后改为ASP等动态脚本后缀用于防下载,感觉上这样的风险会更大,因为曾经有人用一句话木马插入这个数据库,从而引发新的风险。
3)  最后是<!--#Include File="Neeao_SqlIn.Asp"-->的放置位置,刚刚在admin.asp解决POST类型的SQL注入中例子就出现过这样的问题,如果您是怕麻烦的人,最好还是像开发者所说的那样,在conn.asp中添加。

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886