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