老文同志 發表於 2008-10-8 19:38:23

推荐:对FCBLOG的简单分析

一:古老的OR注入漏洞。
<br />
<br />看一下首页,做的好凑合。有个登陆的地方,如图1.
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/20081081935461577801.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />二话不说,试’or’=’or’,
<br />点击登陆。没想到竟然直接进来了。我们看下它的login.asp,关键代码如下:
<br />
<br />!--#include file=&quot;conn.asp&quot;--&gt;
<br />FCBLOG
<br />
<br />用户登陆
<br />function del_space(s)
<br />{
<br />for(i=0;i
<br />for(j=s.length-1;j&gt;=0;--j)
<br />{
<br />   if(s.charAt(j)!=&quot; &quot;)
<br />   break;
<br />}
<br />return s.substring(i,j);
<br />}
<br />function VerifySubmit()
<br />{
<br />topic = del_space(document.form1.name.value);
<br />      if (topic.length == 0)
<br />      {
<br />         alert(&quot;您忘了写用户名!&quot;);
<br />return false;
<br />      }
<br />
<br />if (document.form1.pwd.value == &quot;&quot;)
<br />      {
<br />         alert(&quot;请输入密码!&quot;);
<br />return false;
<br />      }
<br />return true;
<br />}
<br />
<br />只用了javascript在本地做了个判断用户名和密码是否为空就直接放过去了,也
<br />没用其它文件来判断下数据,当然也没有做过滤,不产生注入才怪,如图2
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/20081081935467877802.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />二:跨站漏洞。
<br />
<br />首页还有个留言的版块,我们去看看!直接在几个框框中输入:alert(/
<br />冰的原点/),如图3
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/200810819354610977803.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />提交,果然不出所料啊,对话框弹了出来,而且还
<br />弹了两次,如图4
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/200810819354615677804.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />.这里有个问题,大家看下我们提交的文字在页面上的显示,如图5
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/200810819354620377805.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />.也就是为什么只弹了两次,而没有第三次呢?我们右键-查看源文件,发现有
<br />
<br />如下代码:
<br />
<br />&lt;li&gt;标题:&lt;script&gt;alert(/冰的原点/)&lt;/script&gt;&lt;/li&gt;&lt;li&gt;内容:
<br />
<br />&lt;script&gt;alert(/冰的原点/)
<br />
<br />&lt;/script&gt;&lt;/li&gt;&lt;address&gt;&lt;script&gt;alert(/冰的原点/)&lt;/script&gt;发表留言
<br />
<br />于2007-10-26 14:16:41&lt;/address&gt;&lt;/li&gt;&lt;li&gt;标题:kk&lt;/li&gt;&lt;li&gt;内容:
<br />
<br />kkkkkk&lt;/li&gt;&lt;address&gt;kk发表留言于2007-8-29 23:31:38&lt;/address&gt;&lt;/li&gt;&lt;/ul&gt;
<br />也就是说程序对内容传递过来的值进行了转化,把&lt;和&gt;分别转化成了&lt;和&gt;,只做了一次过滤,哎,程序员是马虎了(这里我没有去看它的程序源代码了)。
<br />
<br />三:真假注入。
<br />
<br />我们先把程序放到工具里面去,看有没有明显的注入,如图6
<br />
<br /><img src="https://img.jbzj.com/file_images/hack/200810819354625077806.jpg" border="0" onload="javascript:if(this.width>500)this.width=500" title="点击这里用新窗口浏览图片" />
<br />
<br />.显然工具无能为力
<br />。而且我看了下,大部分的页面都是静态的。有人就会问了,都是静态的还能注
<br />入么?这里它的静态的页面都是用JS调用生成的,几乎每个页面都包含如下代码:
<br />if(page=totalpage)then
<br />’生成HTML静态首页
<br />Set fso = Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)
<br />fso.CreateFolder(Server.MapPath(&quot;&quot;))
<br />Set fout = fso.CreateTextFile(Server.MapPath(&quot;msgpost.html&quot;))
<br />fout.WriteLine show
<br />fout.close
<br />response.redirect   &quot;msgpost.html&quot;
<br />end if%&gt;
<br />
<br />正因为有这样的东西,所以值在传递的时候,都没怎么过滤,代码如下:
<br />’打开模板代码,并将其中特殊代码转变为接受值
<br />sql1=&quot;select id,user_skin_main,user_skin_showlog from fc_moban where
<br />default=true&quot;
<br />set rs1=Server.CreateObject(&quot;adodb.recordset&quot;)
<br />rs1.open sql1,conn,1,1
<br />user_skin_main=rs1(&quot;user_skin_main&quot;)
<br />user_skin_showlog=rs1(&quot;user_skin_showlog&quot;)
<br />rs1.close
<br />像这样的代码还有很多呢。
<br />
<br />
<br />
<br />

<br />
頁: [1]
查看完整版本: 推荐:对FCBLOG的简单分析