首页 网络安全 安全学院 查看内容

留言本另类写入一句话木马研究

2009-4-20 10:52 713 0

摘要:  幻泉[B.S.N] 在《针对留言本的漏洞挖掘》文章中我写了一段话,就是针对写入数据库一句话木马的研究中,可以利用Request.ServerVariables没做过滤绕过写入一句话,来进行...
关键词: nbsp fString 留言本 replace mRs htmlencode Books Request 代码 Function

 幻泉[B.S.N] 在《针对留言本的漏洞挖掘》文章中我写了一段话,就是针对写入数据库一句话木马的研究中,可以利用Request.ServerVariables没做过滤绕过写入一句话,来进行插入数据库木马。   但是当时只是猜测,虽然在06年有介绍针对一些php针对获取ip没做过滤导致注射漏洞。但是学习就是以技术的严谨性为原则,无论什么漏洞都必须亲自测试否则只是理论上的说教是不被人信服的。 这里还正好有这样的一个留言本,让我们来进行测试。 测试代码:花木兰留言本 官方网站:www.77f77.com 首先我们看看他的提交代码都对什么做了过滤。 文件比较少,就直接列下留言本的结构吧。 花木兰留言本   |___index.asp 留言本主要文件内部有提交和显示信息的主要代码。   |____ gustbook_Conn.asp 留言本调用数据库文件   |_____ gustbook_sub.asp  Function   |_____dqe_gustbook.asp  数据库文件 这里我们最主要的就是看index.asp,因为已经确认数据库文件没做防下载,可以直接访问。 Index.asp部分重要代码 Code: '过滤代码 Function htmlencode(fString) If not isnull(fString) then     fString = replace(fString, ">", ">")     fString = replace(fString, "<", "<")     fString = Replace(fString, CHR(32), " ")     fString = Replace(fString, CHR(9), " ")     fString = Replace(fString, CHR(34), """)    ‘  “     fString = Replace(fString, CHR(39), "'")     ‘   ‘     fString = Replace(fString, CHR(13), "")     fString = Replace(fString, CHR(10) & CHR(10), "</p><p> ")     fString = Replace(fString, CHR(10), "<br> ")        htmlencode = fString End If End Function Function uhtmlencode(fString) If not isnull(fString) then        fString = Replace(fString, " ", CHR(32))        fString = Replace(fString, " ", CHR(9))        fString = Replace(fString, """, CHR(34))        fString = Replace(fString, "'", CHR(39))        fString = Replace(fString, "", CHR(13))        fString = Replace(fString, "</p><p> ", CHR(10) & CHR(10))        fString = Replace(fString, "<br> ", CHR(10))        uhtmlencode = fString End If End Function ……. '提交数据 Books_mingzi=htmlencode(Request.form("mingzi")) If Books_mingzi="" then Books_mingzi="匿名者" End If Books_biaoti=htmlencode(Request.form("biaoti")) Books_neirong=htmlencode(Request.form("neirong")) …… Set mRs= Server.CreateObject("adodb.recordSet")        mRs.open "Select * from dqe_gustbook", conn, 1, 3        mRs.addnew               mRs("who") = Books_mingzi               mRs("biaoti") = Books_biaoti               mRs("neirong") = Books_neirong               mRs("lanmu") = lanmu               mRs("zhiding") = 0               mRs("shijian") = now()               UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")               If UserIP = "" Then userip = Request.ServerVariables("REMOTE_ADDR")               mRs("ip") = UserIP        mRs.update        mRs.close        Set mRs = nothing               Response.Write "<script>alert('留言添加成功\n\花木兰官网http://www.77f77.com');this.location.href='"&Url&"';</SCRIPT>"               Response.End 就这些有用代码,编写作者对用户提交的form信息都利用htmlencode进行了过滤,看来作者对漏洞还是有一定防范的。 但是在添加更新的时候获取的HTTP_X_FORWARDED_FOR并没做过滤,导致我们可以利用。 实际应用: 如图: 直接可以利用刺猬写的post提交工具提交,也可以自己抓包利用nc来提交。 返回200ok证明提交成功,访问数据库就会发现插入成功。如图: 信息来源:[B.S.N]——关注脚本安全http://sites.google.com/site/bsnguanzhujiaobenanquan/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部