安全审计:对防注入代码的分析 |

  • A+
所属分类:Seay信息安全博客

显示不全请点击全屏阅读

前几天一个朋友让我帮他检测一下他网站程序的安全,为了不让我的面子掉一地只有硬着头皮帮他检测啦!
拿到他的源程序之后就开始我的检测之路啦!
  首先我在网站的onews.asp里发现注入漏洞,代码如下:
<%owen=request(“id”)%>
<style type=”text/css”>
.content { font-size: 11pt; }
td{word-break:break-all}
</style>
<SCRIPT language=JavaScript>
var currentpos,timer;
 
function initialize()
{
timer=setInterval(“scrollwindow()”,50);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
</SCRIPT>
<%
Set rsnews=Server.CreateObject(“ADODB.RecordSet”)
sql=”update news set hits=hits+1 where id=”&cstr(request(“id”))
conn.execute sql
sql=”select * from news where id=”&owen
rsnews.Open sql,conn,1,1
title=rsnews(“title”)
if rsnews.eof and rsnews.bof then
response.Write(“数据库出错”)
else
%>
上面的id直接传递给了owen,而owen又跳转到sql查询语句里,那这样就形成了注入
这样我就可以对它进行注入了。。www.2cto.com
http://127.0.0.1/onews.asp?id=19 and 1=1
就在注入的时候它反回了防注入的提示,看来我是小看这小子啦!!提示如下:
非法操作!你的入侵记录我已经交给警方了你入侵吧↓
操作IP:127.0.0.1
操作时间:2013-1-22 12:11:05
操作页面:/onews.asp
提交方式:GET
提交参数:id
提交数据:19 and 1=1
如果是一般新手看到这里应该就放弃注入啦,但源程序已在我手里分析它的代码还是可以的,嘿嘿。。
在onews.asp源代码的头部我看到
<!–#include file=”conn.asp”–>
这个conn.asp大家都应该知道是什么吧,我也不多说.
conn.asp源代码如下:
<!– #include file=”sql.asp” –>
<%
dim conn,connstr
on error resume next
connstr=”DBQ=”+server.mappath(“data/nxnews.mdb”)+”;DefaultDir=;DRIVER={Microsoft
Access Driver (*.mdb)};”
Set conn=Server.CreateObject(“ADODB.CONNECTION”)
conn.open connstr
%>
在conn.asp文件的头部看到<!– #include file=”sql.asp” –>一看文件名就知道是防注入的东东。。
asp.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,”防”)
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))<>0 Then
Response.Write “<Script Language=JavaScript>alert(’’’’udb311友情提示↓请不要
在参数中包含非法字符尝试注入攻击本站,你的入侵记录我已经交给警方了你入侵吧’’’’
);</Script>”
Response.Write “非法操作!你的入侵记录我已经交给警方了你入侵吧↓<br>”
Response.Write “操作IP:”&Request.ServerVariables(“REMOTE_ADDR”)&”<br>”
Response.Write “操作时间:”&Now&”<br>”
Response.Write “操作页面:”&Request.ServerVariables(“URL”)&”<br>”
Response.Write “提交方式:POST<br>”
Response.Write “提交参数:”&Fy_Post&”<br>”
Response.Write “提交数据:”&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
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))<>0 Then
Response.Write “<Script Language=JavaScript>alert(’’’’安全提醒↓请不要在参数
中包含非法字符尝试注入攻击,谢谢!’’’’);</Script>”
Response.Write “非法操作!你的入侵记录我已经交给警方了你入侵吧↓<br>”
Response.Write “操作IP:”&Request.ServerVariables(“REMOTE_ADDR”)&”<br>”
Response.Write “操作时间:”&Now&”<br>”
Response.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
%>
在这段代码中我们可以看到两个重要的信息
Instr(LCase(Request.Form(Fy_Post))
从这句中我们可以知道它是对post提交进行了过滤
Instr(LCase(Request.QueryString(Fy_Get))
而这一句是对 get提交进行了过滤。。
分析到这里大家都应该想到了一个问题,它只是对POST和GET提交进行了过滤,那cookies提交呢。。。
这说明过滤不全。COOKIES注入大家都应该知道怎么利用吧!后面就不多写了
网站只分析了一下半,后面等再分析出什么问题再写出来吧!!
本人小菜如果有什么不足之处还请大牛们指出。。

作者:沦沦

Tags:

代码审计,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡
安全审计:对防注入代码的分析 |