推荐:对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="conn.asp"-->
<br />FCBLOG
<br />
<br />用户登陆
<br />function del_space(s)
<br />{
<br />for(i=0;i
<br />for(j=s.length-1;j>=0;--j)
<br />{
<br /> if(s.charAt(j)!=" ")
<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("您忘了写用户名!");
<br />return false;
<br /> }
<br />
<br />if (document.form1.pwd.value == "")
<br /> {
<br /> alert("请输入密码!");
<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 /><li>标题:<script>alert(/冰的原点/)</script></li><li>内容:
<br />
<br /><script>alert(/冰的原点/)
<br />
<br /></script></li><address><script>alert(/冰的原点/)</script>发表留言
<br />
<br />于2007-10-26 14:16:41</address></li><li>标题:kk</li><li>内容:
<br />
<br />kkkkkk</li><address>kk发表留言于2007-8-29 23:31:38</address></li></ul>
<br />也就是说程序对内容传递过来的值进行了转化,把<和>分别转化成了<和>,只做了一次过滤,哎,程序员是马虎了(这里我没有去看它的程序源代码了)。
<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("Scripting.FileSystemObject")
<br />fso.CreateFolder(Server.MapPath(""))
<br />Set fout = fso.CreateTextFile(Server.MapPath("msgpost.html"))
<br />fout.WriteLine show
<br />fout.close
<br />response.redirect "msgpost.html"
<br />end if%>
<br />
<br />正因为有这样的东西,所以值在传递的时候,都没怎么过滤,代码如下:
<br />’打开模板代码,并将其中特殊代码转变为接受值
<br />sql1="select id,user_skin_main,user_skin_showlog from fc_moban where
<br />default=true"
<br />set rs1=Server.CreateObject("adodb.recordset")
<br />rs1.open sql1,conn,1,1
<br />user_skin_main=rs1("user_skin_main")
<br />user_skin_showlog=rs1("user_skin_showlog")
<br />rs1.close
<br />像这样的代码还有很多呢。
<br />
<br />
<br />
<br />
<br />
頁:
[1]