最近在梳理hw期间的文档,发现期间上报的攻击者IP,心里就有了个坏心思,想连上去看看这些攻击者的机器什么样子,于是便有了这篇文章。
我这边只是用nmap和 fofa简单的看了一下。目标机器开了不少端口,存在好几个web服务,服务器为Windows服务器。
这次的目标是登录目标服务器看看即可,不进行其它任何操作。
Nmap scan report for 49.233.xx.xx
Host is up (0.18s latency).
Not shown: 990 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
443/tcp open ssl/https Apache
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
3389/tcp open ssl/ms-wbt-server?
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 118.18 seconds
访问该地址的80端口,自动跳转出一个websoft9的运维页面。
我查了一下websoft9这个软件,主要用于提供软件的自动化部署,帮助客户在云服务器上简化企业级软件的安装部署。第一眼看到页面,最先看到的是网站根目录,然后下面的账号密码(不能是真的吧),然后左侧的功能栏里还有数据库管理、phpinfo功能,这,,,这是在勾引我吗?
我打算先用网页上留下的账号和密码登录下试试看,万一呢(手动滑稽~)。
进去了。。。以前看公众号实战文章的时候,很多大佬用弱口令进去了,我还酸我怎么就碰不到这样的站,看样子是自己的经验还是太少了!
连上数据库之后我们可以写个webshell,用mysql的日志或是into outfile的方式。我这里使用的是日志的方式,网站根目录咱们是知道的C:\wwwroot\。
写入后访问发现报not found,怀疑根路径有问题,所以还是通过websoft9自带的phpinfo查看DOCUMENT_ADDR确认,发现根路径为C:\wwwroot\www.example.com\(这个时候我才想起好好看看phpinfo,不合格啊不合格。信息收集在渗透测试中相当重要)。
重新尝试写入webshell。
看结果是成了。
蚁剑连接成功。
连接之后看下权限,system我去,好高。
看一下有没有安装杀毒软件,发现没有安装。
wmic /node:localhost /namespace:\\root\SecurityCenter2 path AntiVirusProduct Get DisplayName | findstr /V /B /C:displayName || echo No Antivirus installed
这几个乱码的内容是:
错误:
无效命名空间 =
No Antivirus installed
命令查看目标服务器的3389端口是开着的,腾讯云的Windows主机,远程端口可不是开着嘛~。~,直到这里都好顺利啊。
既然可以执行命令,权限也有了,那就抓一下管理员的密码吧。我在目标服务器上传了procdump64,将内存文件lsass.exe导出为dmp文件,但目标服务器是Windows Server 2012 R2 Datacenter Edition,在上传procdump64之前,我先在我的靶机上试了下,一样的系统,发现不行,但我还是想试试,干!
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
从蚁剑上下载dmp文件时,提示下载失败,猜测可能是网速的问题,因为我这代理太次了。这里提醒一下,如果到目标主机的网速比较慢,蚁剑连接、上传/下载文件等操作可能会失败。
直接访问该文件下载。
使用mimikatz进行解析,没有明文密码,果然失败。
关于Windows Server 2012 R2 Datacenter使用mimikatz获取明文密码,我在我的靶机上做了实验。不管是直接使用mimikatz读取还是先procdump64取出,再用mimikatz解析都读不出明文密码,但是可以尝试修改注册表。文章参考链接:
https://www.freebuf.com/sectool/96209.html。
在注册表中新建UseLogonCredential的DWORD项,值为1,下面是cmd中的命令。
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest" /v UseLogonCredential /d 1 /t REG_DWORD /f
我试了一下,是可以的。
还有个问题就是,如果修改了注册表,注册表需要重新载入,我查了下,但并没有找到合适的方式。网上有重载explorer.exe进程的,但是我实验失败了,注册表没有更新成功(我需要的部分,其它部分有没有更新我不能肯定),而且使用这种方式会关闭已打开的窗口,下面是命令。
taskkill /f /im explorer.exe
explorer.exe
更新注册表最好的方式是重启系统。
那就试试新建用户吧,直接用新用户登录。但是蚁剑net user命令和systeminfo命令都没有回显,这没有回显我也不知道成没成功啊?想着先把命令先输入进去,看看能不能成功。执行完添加用户的命令尝试远程登录,失败!
最开始以为是蚁剑的问题,换上最近比较火的“哥斯拉”试试,也不行,看样子不是工具的问题,是我的问题。
那咋办哟。试试udf提权这种方式(突发奇想),虽然我是system权限了(捂脸哭),用mysql的sys_exec()或者sys_eval()试试。
mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下,他没有这个文件夹,给他新建上,udf.dll文件在sqlmap中有,sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py,命令:
python .\cloak.py -d -i D:\tool\sqlmap\data\udf\mysql\windows\lib_mysqludf_sys.dll_
解码完了就会在32或64下生成dll文件。
先看下mysql的版本信息,看是使用哪个位数的dll文件,这个位数不是操作系统的位数,是mysql软件的位数,也要看下mysql的目录位置(phpinfo中也有)。
尝试上传。
上传成功,创建函数试一下,命令(为什么不直接用蚁剑的数据库功能执行语句,因为连不上!哭泣!):
create function sys_exec returns string soname "lib_mysqludf_sys.dll";
尝试创建用户。
我在靶机(win7,phpstudy)上测试,虽然返回NULL,但是用户是正常添加了的。那这个用户添加上了吗?远程连一下试试看!失败了。后面又试了sys_eval(),虽然可以执行echo命令,但net命令依然是失效的。
看样子net命令是用不了了,目标系统中文件是有的,然后在看目标系统有没有net命令的时候看到目录下有个net1.exe。想起之前看的乌云安全的文章,链接:https://mp.weixin.qq.com/s/XLa41N0d4TsOMllgo5QEvQ。文章中遇到的情况跟我很相似,Windows Server 2012 的系统、无法使用net、system权限,但作者比我还要麻烦一些。那我也试一下看看。
成了!
net与net1命令关系参考链接:
https://blog.51cto.com/xxcmd/1151515
http://www.safebase.cn/article-124482-1.html
本次渗透其实并不复杂,较为简单,文章深度有限。我看了下这台主机,不太像安全人员使用的主机,倒有点像沦陷的“肉鸡”。不过话说回来,咱们hw期间有不少人使用自己买的云主机进行扫描等行为,有些上面还搭着靶机。个人觉得最好还是挂个代理什么的,安全人员也得安全一点。
这次测试纯属运气,一个弱口令解决了太多的问题,web方面的直接略过了,我也深深感受到了弱口令的危害。websoft9官方早已经认识到了这个问题,其在2月15日发布了一则新闻,就是说的弱密码的问题,参考链接:https://www.websoft9.com/news/passwordneedmodify。
我在登录上目标服务器后,发现执行net命令也没有回显,这是为什么呢?(admln用户是后面新建的)
我查了下禁用net、systeminfo命令的方式,找到下面两种:
- doskey net = @
- 如果是Path环境变量删除了“%SystemRoot%\system32;”,则报’net’不是内部命令。
他使用的应该是第一种,不排除使用的我不知道的其它方式,如果doskey net = (空),那么net功能的作用就恢复了(我没有在目标服务器上试)。如果真的是第一种的话,我是不是可以直接在蚁剑的虚拟终端中尝试使用doskey呢?
转自:酒仙桥六号部队