VulnHub-DC-1靶机
主机发现
这是一台vulnhub靶场上的一个很友好的新手靶机,easy难度。
arp-scan -l
这里我是直接sudo su 用root权限了,所以,没有root的需要在前面添加sudo来探测,不然会提示权限不够。
以root超级管理员权限执行,探测本地主机网络,发现靶机ip:192.168.31.130
nmap扫描
nmap 192.168.31.130
直接扫描ip地址也是可以出来的,但是可以参考红队笔记的写法会更好。
nmap -sT --min-rate 10000 -p- 192.168.31.130 -oA nmapscan/ports
端口扫描
nmap -sT探测扫描tcp端口,--min-rate 以最低10000的速率 -p- 扫描全部端口 -oA 以全格式打印输出到nmapscan目录下的ports文件中。
这样严谨的扫描手法,结果会探测出更多有用的信息,发现开放22,80,111,还有一个比简单扫描多扫出来一个未知端口54879
这里我们再次添加几个扫描参数,扫描更全面的靶机信息
nmap -sT -sV -A --min-rate 10000 -p- 192.168.31.130
-sV:探测服务版本信息
-A:启用操作系统检测、版本检测、脚本扫描和traceroute
打开web页面就看到Drupal site 大致推测用的是Drupal框架,我们用wappalyzer查看一下发现就是,Drupal 7的框架。
wappalyzer是一个网络分析工具,它可以分析这个网站是由哪些框架写的,是什么系统,什么与语言写的等等。
msfconsole漏洞利用
可以打开msfconsole搜索一下Drupal 7对应的漏洞
紫色标注出来的就是有关Drupal的漏洞,这里我们可以利用序列号1的漏洞,它是一个远程代码执行漏洞,允许未经过身份验证的攻击者执行任意代码(Drupalgeddon 2(CVE-2018-7600))
选择这个漏洞之后可以查看具体的配置信息
(meterpreter具体介绍:Meterpreter 是 Metasploit 框架中的一个强大后渗透工具,提供了多种功能,允许攻击者在成功利用目标系统后进行深入操作。以下是 Meterpreter 的一些主要功能和命令。)
flag1
set rhosts 192.168.31.130
设置靶机的ip地址,run运行之后就进入了一个名字为,meterpreter的界面,ls -al 查看一下所有文件以及权限,文件大小等信息,看到flag1.txt,查看一下。描述的是
那就根据他的配置文件查看具体有用的信息,说是在sites目录下的default目录下的setting。php文件
进入目录查找到mysql数据库的配置信息,数据库,用户名,密码。
flag2
flag2
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
提示我们说爆破和攻击不是唯一的,告诉我们还有其他的方式。
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
似乎忘记写一个shell来交互了,不然是没办法登录mysql的,先进入shell,再用python写一个交互的shell,其实可以在进入meterpreter的时候就进的,我忘了。
import pty :导入pty模块创建伪终端
.spawn:调用里面的命令,最后就得到一个交互的bash shell
python -c "import pty;pty.spawn('/bin/bash')"
有一个user表,查看一下内容,发现两个用户的密码是被加密了的。
新学到了一种直观的查看方式,\G 将结构旋转90度 更好查看了。非常不错我觉得。
看到密码是某种hash加密,里面或许也存在加密文件,找一找password文件
find . -name "password*"
查找根目录下名字为password的所有文件,看到一个后缀是.sh的文件,我们判断大概就是加密文件,查看一下发现是php编写的,可以用php用这个脚本生成有一个新的密码。
php /var/www/scripts/password-hash.sh 111111
看到已经生成新的加密,接下来重新进入数据库update更新一下admin用户的密码
update users set pass="$S$DMtniYPEFkZ9sRq9jSAyFAFSHrMUX8ozneckFWOBMa4m.K1rar2g" where name="admin";
flag3
对比原图,确认密码加密更新,接下来进入登录页面登录进去
用户:admin
密码:111111
content下看到了flag3,并且flag给提示,这很有可能是下一个flag的提示。
可以查看一下/etc/passwd.发现末尾有一个flag4在家目录里面,并且等到下一个flag的提示(前两条是手快打的错误命令)
flag4
进入root目录发现并没有权限,需要提权(第二条命令没有没有空格,打错了,可以忽略掉)
suid提权
find / -perm -u=s -type f 2>/dev/null
find 查找 / 根目录下所有的文件 查找 -perm -u=s 所有user用户拥有的文件,并且这些文件设置了用户可以执行的特殊权限(suid)文件,-ytpe f 2 >/dev/null 指定搜索文件,将错误输出重定向到/dev/null,这是一个特殊的设备文件,它会丢弃所有写入其中的数据。这样做的目的是为了隐藏命令执行过程中可能出现的错误信息。
find ./misc -exec "/bin/sh" \;
find
:这是命令的名称,用于在文件系统中搜索文件。./misc
:这表示搜索的起始目录是当前目录下的misc
子目录。-exec
:这是find
命令的一个选项,它允许对搜索结果执行一个指定的命令。"/bin/sh"
:这是要执行的命令,这里指定的是/bin/sh
,即Bourne shell,一种常用的shell。\;
:这是-exec
选项的结束标记。在-exec
命令中,你需要使用反斜杠\
来转义分号;
,以避免它被shell解释为命令的结束。
flag5
最后root的flag我们也已经拿到了。