|
分析时间:2008-7-7 14:38-18:00 漏洞发布:Awolf(小C) 影响版本:QCDN_NEWS Version 4.13其他版本未看 漏洞文件: UserReg.asp 注:使用本文章进行做非法行为与作者本人无关
最近给公司找整站系统,朋友推荐这套系统,我就顺便分析了.发现的”洞”不少,足以颠覆这个系统了. 一.注册过滤不严格 在文件userreg.asp这个文件中:代码从第4~117行,这里给出部分代码:
[Copy to clipboard] [ - ]CODE: if Request("RegSetp") = 2 then if Trim(Request.Form("username")) = "" then Errmsg = "<li>请输入用户名。" FoundErr = true else username = Qcdn.checkStr(Trim(Request.Form("username"))) ………………省略了部分类似代码………………………. if rs.eof and rs.bof then Sql="Insertinto article_User(username,[password],email,question,answer,qq,msn,male,birth,bloodtype,realname,country,province,city,phone,[address],postcode,job,edu,school,Intime)values('"& username &"','"& password &"','"& e_mail &"','"& question &"','"& answer &"','"& qq &"','"& msn &"',"& male &",'"& birth &"','"& bloodtype &"','"& realname &"','"& country &"','"& province &"','"& city &"','"& phone &"','"& address &"',"& postcode &",'"& job &"','"& edu &"','"& school &"',Now())" conn.execute(sql) 显然这里直接从注册表单中获得用户名,只是简单的用qcdn.checkstr()函数来过滤,走继续跟踪到common.asp,看看他是怎么过滤的,代码如下: Public function checkStr(str) if isnull(str) then checkStr = "" exit function end if checkStr=replace(str,"'","''") '看到了没有,只把单引号过滤成双引号 end function 其他的内容比如密码框等都是这样简单过滤,那么就可以直接插入变形的一句话了马(只要没有单引号就可以),相信你也知道该怎么做了。看我插入效果

其次,看看数据库,也是asp的,那么提交成功就ok了。Shell就这样得到了。 二.前台注册后台跨站 其实这个应该和上面的内容差不多,不一样的是,我们注册的是跨站代码的用户,都知道他只过滤单引号,那么我们语句可以这样写 <script>alert(/Awolf Test XSS/)</script> 这样就可以注册成功了,然后到后台看看.成功了:

在看看后台数据库备份可以仿照黑X2008年第二期旭方的<<新云跨站漏洞的利用>>一文介绍的方法,我想就够完美了,这里就不废话了…两种方法可以得到webshell. 还没有读完....继续ing...可能还会补上! 官方最新版本,似乎N年没有更新了,也不知道怎么通知官方了,希望各位朋友不要利用本章做违法事情.否则后果自负! 高手过。。 |