Billu_b0x靶场练习---中
0x00部署
Billu_b0x靶机:下载地址
宿主机:kali2022
目标:获取root拿到flag文件
0x01信息收集
1.主机发现
$ sudo arp-scan -l
//因为靶机与宿主机在同一网段,所以用二级扫描来发现靶机ip
2.端口扫描
//使用namp命令,-p-指定ip,查看哪些端口开放
$ sudo nmap -p- 靶机ip
$ sudo nmap -sC -sV -O -p22,80 靶机ip
//-sC常见漏洞脚本扫描
//-sV开放端口服务/版本号
//-O操作系统探测
比较好想到的是,这里只有两个开放端口进行利用,所以流程就是在80端口找一些隐藏路径得到能登录ssh的信息进行提权。
80端口开放查看页面,一个需要账户密码的登录页面,可能存在sql漏洞:
3.信息收集(漏洞扫描)
$sudo nmap --script=vuln -p21,80 靶机ip
4.路径爬取
对80端口进行一下路径爬取,寻找隐藏信息
$ dirsearch -u http://ip //没什么特别的结果,继续
$ dirsearch -u http://ip -f -e php,txt,html //指定扩展名
$ dirsearch -u http://ip -w /usr/share/seclists/Discovery/web-content/common.txt
//指定字典进行爆破
$ gobuster dir -r -u http://192.168.56.107/site/ -x txt,html,php -w /usr/share/seclists/Discovery/Web-Content/common.txt
爬取到很多网页,检查一下
依次检查以下可访问页面
在test.php页面发现一个可用来传参的参数file
任意文件下载
使用burp抓取test页面–>change request method–>Post方式添加file参数,读取一下/etc/passwd
漏洞利用
方法一:
根据22端口开放,可以利用其配置文件进行主机账号密码的利用:
读取配置文件位置,var/www/phpmy/config.inc.php 直接查看账户信息:
SSH连接
成功获得权限
SQL注入(SQLMAP跑步出来)
文件包含漏洞
试着在url中进行包含,发现没有变化,根据传参方式有post和get两种方式,所以试着用burp抓一下然后进行传参:
抓到的包传给repeater然后修改响应方法
尝试读一下之前看到的页面:
c.php,得到一个数据库用户名密码:
登录到phpmy页面,输入后进入,检查一下数据库内容:
具有bash权限:root,ica
文件上传漏洞
尝试上传一个正常图片,文件名为img.jpg:
根据代码猜测图片地址:…/uploaded_images/文件名
尝试文件包含:
任意文件下载
任意文件下载漏洞和文件包含漏洞的方法类似,区别在于文件包含会将指令作为php来进行解析,而文件下载漏洞会将代码下载下来。
源码审计
利用test页面可以文件包含:尝试包含以下panel页面的源码,代码审计一下:
//这里执行的contine命令,不是上传,可以省略。
if(isset($_POST['continue']))
{
$dir=getcwd();
//客户端提交的load参数中的./会被替换为空在赋值给choice
$choice=str_replace('./','',$_POST['load']);
if($choice==='add')
{
include($dir.'/'.$choice.'.php');
die();
}
if($choice==='show')
{
include($dir.'/'.$choice.'.php');
die();
}
else
{
include($dir.'/'.$_POST['load']);
}
}
//这里是上传的命令,目的是检查上传路径在哪
if(isset($_POST['upload']))
{
//mysqli_real_escape_string:作用转义sql语句中使用的特殊字符(过滤)
$name=mysqli_real_escape_string($conn,$_POST['name']);
$address=mysqli_real_escape_string($conn,$_POST['address']);
$id=mysqli_real_escape_string($conn,$_POST['id']);
if(!empty($_FILES['image']['name']))
{
$iname=mysqli_real_escape_string($conn,$_FILES['image']['name']);
$r=pathinfo($_FILES['image']['name'],PATHINFO_EXTENSION);
//图片后缀白名单
$image=array('jpeg','jpg','gif','png');
if(in_array($r,$image))
{
$finfo = @new finfo(FILEINFO_MIME);
$filetype = @$finfo->file($_FILES['image']['tmp_name']);
if(preg_match('/image\/jpeg/',$filetype ) || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype ))
{
//找到这里将文件移动到uploaded_images/.点的作用是拼接字符串
if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name']))
{
echo "Uploaded successfully ";
$update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')';
mysqli_query($conn, $update)
}
}
else
{
echo "<br>i told you dear, only png,jpg and gif file are allowed";
}
}
else
{
echo "<br>only png,jpg and gif file are allowed";
}
}
}
内核漏洞提权
0x02 总结
主要利用这个靶场对文件包含以及任意文件下载进行巩固