DC-1靶场通关详解

dc-1靶机下载地址:http://www.five86.com/downloads/DC-1.zip
本次使用到的环境:

  • VMware15.5
  • finalshell
  • kali-linux-2022.4
  • dc-1.ova

信息搜集

首先确认自己kali的ip
本次实验靶场和kali是在同一内网下
在这里插入图片描述

nmap

使用nmap进行主机扫描本网段
发现目标主机

namp -T4 -sN 192.168.176.0/24

在这里插入图片描述
使用nmap针对目标主机进一步信息搜集,发现CMS指纹为:Drupal 7

nmap -T4 -A 192.168.176.230

在这里插入图片描述

攻击探测

Metasploit

打开Metasploit,查询根据刚才搜集到的CMS漏洞利用模块

msfconsole

在这里插入图片描述
在遵循能用,高危,最新的标准选择1号

对于Metasploit的初学者推荐输入Name字段内容,但是这里为了更快捷直接输入#下的序号也是同样效果,初学者最好还是看一下路径,以便加强印象和理解

use 1

在这里插入图片描述
通过show命令查看模块配置参数,Required选项为yes的是必填选项

show options

设置参数
LHOSTS 为攻击机(本机Kali)的IP
RHOSTS为攻击目标的ip

set RHOSTS [ip] 

在这里插入图片描述
在这里插入图片描述
设置好参数后执行攻击模块

exploit
//执行命令

当这行出现后表示攻击成功,连接已建立
在这里插入图片描述
在入口目录拿到第一个flag

flag1

在这里插入图片描述
根据flag1的提示我们要寻找配置文件。

flag2

Drupal项目的web配置文件存放目录为/var/www/sites/default
在这个文件夹可以找到一个名为settings.php的配置文件
在这里插入图片描述
查看文件内容开头发现flag2
flag2是mysql账户的用户名和密码
在这里插入图片描述
下面咱们必须得建立一个shell连接来进行远程操作mysql
这个shell脚本实在目标主机有python环境的前提下才可以使用

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

在这里插入图片描述
在这个会话中登录mysql

mysql -u [username] -p 
//回车后输入密码,不用想着再p参数后输入,因为密码必须在(密码输入保护)隐蔽密码状态下才算有效输入,在命令行中不支持明文输入

在这里插入图片描述
根据这个web项目的数据库查询出一个users的表
查询后发现账户和密码
但是密码经过不可逆加密,无法还原
在这里插入图片描述
在ExploitDB漏洞库,里面有一个漏洞利用脚本可以在mysql中添加一个用户
根据CMS指纹在漏洞库中搜索Deupal的漏洞利用脚本

searchsploit drupal 7

在这里插入图片描述
通过find的确定脚本文件的路径
在这里插入图片描述
启用这个脚本

python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t [url] -u [user] -p [password]

在这里插入图片描述
攻击脚本生效,数据库添加了一个admin66密码123456的用户
在这里插入图片描述
进入web页面,使用刚才添加的用户登录进去
在这里插入图片描述
在这里面将功能模块翻找了一会发现第三个flag
在这里插入图片描述

flag3

在这里插入图片描述

flag3:特殊的权限可以帮助你找到passwd文件,但你需要使用-exec命令来获取shadow文件中的信息。

通过查看passwd文件发现flag4是一个用户

liunx本地所有用户状态信息路径 etc/passwd
用户信息格式分为7

1. 字符为用户名:是用户登录系统时的名字,root用户的用户名自然是root。
2. 字符为对应用户密码,X是密码占位符,具体内容不在该文件中,而在shadow文件中,是root用户的密码。
3. 字符叫uid(user id,用户的身份证号,重要):0为特权用户超管root,1-499为系统用户内置,system,bin之类的给计算机用的,500-999也是给计算机用的,怕不够用,1000+是给普通用户用的。
4. 字符是GID,groupID,组号,每个文件都会有对应的用户和组,用户本身会有基本组和附加组。
5. 字符是简述信息,inscription,计算机一般会把用户名也挪在这。
6. 字符是用户目录,登陆系统时的所在目录,普通用户的登陆目录在/home下,root用户的登陆目录在/root下,普通用户则在自己的用户目录下。
7. 字符是shell命令解释器(例:/bin/sh,/bin/bash),用于定义命令,接受命令,执行命令,打开bin目录下的bash工具,也就是我们登陆时迎接用户的黑框框。如果第七个字符中的(例)/bin/bash被修改为/bin/nologin,就不会有迎接的黑框框

在这里插入图片描述

根据flag3的提示,引导我们使用find -exec组合来提权
www-data用户一般权限极低很多关键操作无法执行
恰巧发现flag4是一个普通用户所以应该是要登录flag4用户来进行提权。

ssh登录

但是我们还没ssh登陆进去(悲)
翻找了一阵子的确没其他信息了,九头蛇爆破试试了
由于该靶场开放了22端口
使用Hydra对22端口爆破flag4用户的密码
使用kali自带的rockyou字典就爆出来了
在这里插入图片描述
使用爆出来的密码ssh登录
在这里插入图片描述
登陆进去后flag贴脸上了

flag4

flag4:
你能用同样的方法在根目录中查找或访问标志吗? 可能但也许这并没有那么容易。或者可能是这样?

在这里插入图片描述
搞root,根据前面的提示似乎要找特殊权限

  • 在Linux系统中,每个文件和目录都有一组权限,用于控制对它们的访问。这些权限包括读、写和执行权限,以及特殊权限。
  • 特殊权限包括setuid、setgid和sticky位,它们可以用于提高程序的权限,以便执行某些特定的任务。
  • 4000特殊权限是指setuid(SUID)位被设置的文件或目录。当一个程序具有setuid位时,它将以文件所有者的身份运行,而不是以当前用户的身份运行。这意味着程序将具有文件所有者的权限,包括读、写和执行权限。因此,如果一个程序需要执行某些需要特殊权限的任务,例如修改系统配置文件或访问受保护的资源,可以将其设置为具有4000特殊权限。
find / -perm -4000
// -perm 根据权限搜索  -4000为特殊权限(SUID)

运行后可以看到find工具的目录(我的shell工具出bug了没有往下显示),说明本次可以利用find程序提权
在这里插入图片描述

提权

find提权

find / -name flag4.txt -exec '/bin/sh' \;
flag5

在这里插入图片描述

该靶场提权核心知识点SUID

在Linux系统中,文件或可执行程序的权限由三组权限位表示:所有者权限、组权限和其他用户权限。每组权限位包括读取(r)、写入(w)和执行(x)权限。而SUID权限位可以通过在执行文件的权限位中设置数字4来表示,即将权限位设置为4xxx。

当一个文件具有SUID权限时,当普通用户执行该文件时,将以文件拥有者的身份执行,而不是以执行者自身的身份。这允许普通用户在执行具有高级权限的可执行文件时,临时获得该文件所拥有的权限。

因此,当一个可执行文件设置了SUID权限(如设置了4000权限位),普通用户在执行该文件时将具有拥有者的权限,从而可以执行一些需要高级权限才能执行的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值