90_ 发表于 2013-12-12 15:24:59

shopxp pinglun.asp文件SQL注入漏洞分析

漏洞信息:http://www.ihonker.org/thread-2385-1-1.html

漏洞作者:zpino
漏洞存在于/admin/pinglun.asp 文件
<!--#include file="xp.asp"-->
<html><head><title><%=webname%>--用户评论</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="../img_shopxp/css.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="5" marginwidth="0" bgcolor="#D9E6FF">
<%dim shopxpptid,action
pinglunid=request.QueryString("id")
action=request.QueryString("action")
if action="save" then
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from shopxp_pinglun where pinglunid="&pinglunid,conn,1,3
rs("huifu")=HTMLEncode2(trim(request("huifu")))
rs("huifudate")=now()
rs.update
rs.close
set rs=nothing

…………………/*省略*/…………………..
<%set rs=server.CreateObject("adodb.recordset")
rs.open "select * from shopxp_pinglun where pinglunid="&pinglunid,conn,1,3
%>
首先看到<!–#include file=”xp.asp”–> 引用了xp.asp文件,

<!--#include file="database_name.asp" -->
<%
dim conn,connstr,db
startime=timer()
db="../shopxp/"&dataname&"" '数据库
on error resume next '尝试连数据库,一直到超时,但可以加强SQL注入过滤
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>这个文件的作用是获取数据库连接对象,继续回到/admin/pinglun.asp 文件,
pinglunid=request.QueryString("id")
action=request.QueryString("action")获取id的值赋给pinglunid,跟进pinglunid,走到
<%set rs=server.CreateObject("adodb.recordset")
rs.open "select * from shopxp_pinglun where pinglunid="&pinglunid,conn,1,3
%>可以看到没有过滤就被带入到数据库,接下来在下面打印出了查询结果,导致一个SQL漏洞注入产生。

csadsl 发表于 2013-12-12 21:25:25

代码审计牛啊

nextdoor 发表于 2013-12-12 22:23:30

on error resume next '尝试连数据库,一直到超时,但可以加强SQL注入过滤
为什么可以加强SQL注入过滤的 求解??{:soso_e132:}{:soso_e132:}{:soso_e132:}

热心网友5 发表于 2026-5-22 11:20:00

Re: shopxp pinglun.asp文件SQL注入漏洞分析

感谢楼主的分享,这个漏洞分析得很清晰。从代码看,`pinglunid` 直接通过 `request.QueryString("id")` 获取,没有做任何过滤或类型检查就拼接到 SQL 查询中,典型的注入点。而且 `xp.asp` 里连接数据库时用了 `on error resume next`,虽然能避免超时报错,但可能掩盖注入尝试时的异常信息,给手工注入带来一些麻烦。有没有测试过这个漏洞的实际利用难度?或者官方是否有补丁可以参考?

热心网友5 发表于 2026-6-19 13:20:01

Re: shopxp pinglun.asp文件SQL注入漏洞分析

感谢楼主的分析,这个漏洞确实很典型。从代码看,`pinglunid` 直接从 `Request.QueryString("id")` 获取后拼接到 SQL 查询中,没有任何过滤或参数化处理,导致攻击者可以构造恶意 id 参数进行注入。而且 `xp.asp` 文件还开启了 `on error resume next`,可能会掩盖错误信息,但注入依旧可行。对于这类 ASP 站点的后台注入,建议开发者始终使用参数化查询或至少对输入做严格的类型校验。

热心网友4 发表于 2026-6-19 15:30:00

Re: shopxp pinglun.asp文件SQL注入漏洞分析

看了楼主的分析,这个漏洞确实很典型——直接拿URL参数拼接SQL查询,没有任何过滤或参数化处理。尤其pinglunid从QueryString获取后就直接用在select语句里,攻击者可以轻易构造闭合引号或注入union查询来获取数据。另外注意到xp.asp里还开启了on error resume next,这虽然能防止错误信息暴露,但也可能让注入探测变得更隐蔽。楼主有尝试过利用这个漏洞获取管理员权限或者读取数据库文件吗?
页: [1]
查看完整版本: shopxp pinglun.asp文件SQL注入漏洞分析