VulnHub DC1靶机渗透测试

1. 说明

  1. 虚拟机环境为VM VirtualBox2. 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/
  2. 靶机:DC1 攻击机:kali
  3. 攻击目标:5个flag,最终目标是在root的主目录中找到并读取该标志!(每个靶机作者都会对靶机的具体情况和攻击目标做出详细说明)
  4. 虚拟机相关设置:
    1. 攻击机与靶机网络设置均为桥接模式。
    2. 靶机可能会出现初次无法启动的问题,可以尝试在 设置->USB设备 中,将USB启动器设置为USB 1.1。
    3. VirtualBox安装kali虚拟机时,默认存储空间为8G,会导致安装失败,16G可以保证安装成功。
    4. 在完成虚拟机创建后,建议靶机和攻击机都保存快照,避免虚拟机出现问题
  5. 整体实验过程参考了 https://www.bilibili.com/read/cv5624315/ 和 https://blog.csdn.net/weixin_52497013/article/details/121975716 两篇博文,并整理而成

2. 实验过程

1.前期信息收集

首先,查看kali攻击机IP,为192.168.1.105,并nmap查看网络环境 nmap 192.168.1.0/24 ,可知靶机IP为192.168.1.108,并开放端口22,80,111。

问题:如何确定在多个IP中确认哪个是靶机?
VulnHub DC1靶机渗透测试_第1张图片VulnHub DC1靶机渗透测试_第2张图片

其次,可以通过80端口查看靶机开放的Web页面,界面如图,可以通过插件wappalyzer看到CMS(内容管理系统–与web有关)是Drupal 7。或者通过whatweb 192.168.1.108

VulnHub DC1靶机渗透测试_第3张图片

2. msf寻找可利用漏洞,并获得shell

在了解到使用的是Drupal 7后,使用msf寻找一下是否有可利用的漏洞

	msfconsole -q
	search Drupal

VulnHub DC1靶机渗透测试_第4张图片
VulnHub DC1靶机渗透测试_第5张图片

可以尝试发现的7个漏洞。这里使用第二个use 2,查看具体漏洞使用信息,并设置对应内容后,执行exploit命令即可。

VulnHub DC1靶机渗透测试_第6张图片
VulnHub DC1靶机渗透测试_第7张图片

参数RHOSTS未设置,设置为靶机IP

VulnHub DC1靶机渗透测试_第8张图片
到此为止,便得到靶机的shell。
便于使用,可以运行shell指令,并升级成半交互式,python -c 'import pty; pty.spawn("/bin/sh")'whoami 查看当前用户,pwd输出当前目录
VulnHub DC1靶机渗透测试_第9张图片

3.寻找flag

1)flag1

在打开shell后,首先查看系统中有哪些文件。VulnHub DC1靶机渗透测试_第10张图片
发现flag1.txt。并输出内容,得到flag1。

2)flag2

flag1提示在CMS配置文件中查找,而上面可以得知,当前目录为/var/www。则需要再当前目录下寻找配置文件相关的文件。
VulnHub DC1靶机渗透测试_第11张图片
在sites/default文件夹下,存在文件settings.php。打开后,在文件头注释处,发现flag2。并了解到数据库的一些信息。
VulnHub DC1靶机渗透测试_第12张图片

3)flag3

在寻找flag2的过程中,找到了一些数据库的信息,便查看数据库的内容。登录数据库后,发现存在drupal数据库。
VulnHub DC1靶机渗透测试_第13张图片
切换到对应数据库下,查看有哪些数据,发现flag3,但没有相应权限。
VulnHub DC1靶机渗透测试_第14张图片
因此,接下来的目标是获得靶机的管理员权限
之前了解到网站版本为Drupal 7,我们开启一个新的终端,针对这个版本,搜索能够利用的渗透漏洞。
VulnHub DC1靶机渗透测试_第15张图片

找到了对应的添加管理员的漏洞,查看对应参数,需要注意的是,要使用python2运行程序。
VulnHub DC1靶机渗透测试_第16张图片

按照格式调用程序, python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.1.108 -u admin1 -p admin1
VulnHub DC1靶机渗透测试_第17张图片
运行成功后,便可在浏览器中登录
VulnHub DC1靶机渗透测试_第18张图片VulnHub DC1靶机渗透测试_第19张图片VulnHub DC1靶机渗透测试_第20张图片

4)flag4

在之前的得到的交互式shell中,使用find指令,查找flag文件find / -name "*flag*" ,找到flag4文件
VulnHub DC1靶机渗透测试_第21张图片

跳转到根目录下,并打开flag4文件
VulnHub DC1靶机渗透测试_第22张图片

5)最终flag

根据flag4的提示,查找关于root权限的文件,find / -user root -perm -4000 -print 2>/dev/null

find / -user root -perm -4000 -print 2>/dev/null 解释:
	-perm 匹配权限
		4000 SUID 程序执行时,如果该程序有SUID权限,会变成程序文件的属主。让普通用户临时拥有该文件的属主的执行权限
		2000 SGID 在程序执行时,组身份会发生改变,从用户运行变成所属组运行。(当用户无法执行文件时,如果该程序有SGID权限,那么可以将用户的身份升级为该可执行该程序文件的属组)sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组
		1000 SBIT 当程序设定了SBIT权限,属组内的每个用户或者其他所有用户,只能创建文件和删除自己的文件,不能删除其他用户的文件。
		例如程序文件的属主是root,那么执行SUID程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限
		
	-print 2>/dev/null
		将错误输出(stderr)到黑洞(bit bucket)(黑洞(bit bucket)简单来讲就是垃圾桶,你可以通过设定规则将你不想要的信息丢进去。)
		>/dev/null是1,也就是标准输出
		使用"2> /dev/null", 来隐藏一个命令的错误信息

VulnHub DC1靶机渗透测试_第23张图片
发现find命令本身便具有root命令,因此,可以利用find命令进行提权find ./ aaa -exec '/bin/sh' \;
VulnHub DC1靶机渗透测试_第24张图片

问题:find / aaa -exec ‘/bin/sh’ ; 具体的原理并不是特别理解

得到最终的flag

3.总结

最终,得到了四个flag和一个thefinalflag,共5个flag。有两个问题不是特别清楚,需要再进一步学习

你可能感兴趣的:(安全,网络,linux)