打靶记录11——Billu_b0x
靶机:
https://download.vulnhub.com/billu/Billu_b0x.zip
难度:
- 中(两种攻击路线)
目标:
- 取得
root权限
涉及的攻击方法:
- 主机发现
- 端口扫描
- Web信息收集
- SQL注入(Sqlmap跑不出来)
- 文件包含漏洞
- 文件上传漏洞
- 源码审计
- 内核漏洞提权
注意:
选择包含所有网卡的MAC地址,就能正常获取IP地址了

但是我用VirtualBox还是获取不到IP,我直接用VMware了,kali和靶机都设置成NAT模式即可
主机发现
arp-scan -l

端口扫描和服务发现
nmap -p- 192.168.174.135

nmap -p22,80 -sV -sC 192.168.174.135

SQL注入
打开浏览器,根据提示Show me your SQLI skills ,那么该页面应该是存在SQL注入这种漏洞类型的

随便输入提交之后抓包,发到BurpSuite的Intruder模块

Attack Type选择Cluster bomb集束炸弹
用户名那里使用/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt这个kali里下载的SQL测试的字典


密码那里使用burp自带的列表


发现到这些个payload的时候就成功登录了,提示You are allowed

那我们直接用这个登录,账号密码使用or%200%3d0%20%23%22 / =%5c成功登录


文件上传漏洞
发现有上传功能,尝试上传一个有一句话木马的shell.php,但是提示only png,jpg and gif file are allowed只能上传图片

Burp抓包,修改文件名后缀,Content-Type,还有添加GIF89a;文件头之后,成功上传了一个包含了一句话Webshell:<?php system($_GET["cmd"]);?>的图片文件

在Show Users里查看,发现多了一个用户,然后复制图片链接去访问,发现一个新路径
http://192.168.174.135/uploaded_images/shell.png

访问发现没啥用处

访问http://192.168.174.135/uploaded_images/也是

在URL后输入?cmd=id测试一下服务器是否解析了图片里面的代码,也是失败
dirsearch -u http://192.168.174.135/扫描目录发现一个add.php

看起来和前面的Add Users那里是一样的,那么服务器可能是通过加载a.php的方式在主页面实现这个功能的


文件包含漏洞
点击Add Users,然后点击Continue,然后BurpSuite抓包看看

发现是通过load参数来调用系统文件的

测试load=/etc/passwd发现不能成功,那用目录穿越的方法,改成load=../../../../../../../etc/passwd就能成功读取到文件,说明确实是存在文件包含的


那用刚刚上传了一句话木马的图片试试,发现不行,那么服务器可能是不接受这种形式的方法

反弹shell
那么我们上传一个反弹shell的php的代码试试,也就是再上传一张伪造的图片,它的扩展名仍然是png,但是内容是反弹shell的php的代码。
使用kali里面自带的/usr/share/webshells/php/php-reverse-shell.ph这个php代码的反弹shell脚本

上传时还是需要添加上GIF89a;文件头,然后IP和监听端口设置成kali的


然后让Kali开启nc的监听

然后再通过文件包含漏洞去访问刚刚上传的图片,触发反弹shell

成功反弹shell之后,按照惯例升级一下shell
python -c "import pty; pty.spawn('/bin/bash')"

提权
uname -a发现是3.13的内核版本,是有内核漏洞的利用代码的

searchsploit 3.13.0搜索,发现一个C语言的代码利用脚本,之前的打靶中有使用过的,就不过多的赘述了,参考:打靶记录1——靶机medium_socnet-CSDN博客

先把代码复制到当前目录,然后开启http服务

然后让靶机下载这个exp.c,用gcc把它编译成一个二进制文件,给它执行权限,然后执行就获得root权限了


这是一种思路。
思路二
前面信息收集的时候发现了一个test路径

访问之后发现明显的提示'file' parameter is empty. Please provide file path in 'file' parameter,但是我们输入参数并赋值之后却没有内容显示

那既然Get方式不成功,还有POST方式

用POST方式就成功读取到了/etc/passwd文件

任意文件下载漏洞
file=add.php直接获得了源码,说明这不是一个文件包含漏洞,而是任意文件下载漏洞,只会显示代码,不会解析代码。

那我们查看一下首页index.php,前面SQL注入漏洞的原因可能在代码中会有

<?php// 开始会话,确保可以使用 $_SESSION 超全局变量session_start();// 包含数据库连接文件和 HTML 头部文件
include('c.php');
include('head.php');// 检查用户是否已登录,如果没有,设置会话变量 'logged' 为一个空字符串
if(@$_SESSION['logged'] != true) {$_SESSION['logged'] = '';
}// 如果用户已登录并且 'admin' 会话变量不为空
if($_SESSION['logged'] == true && $_SESSION['admin'] != '') {// 显示已登录的消息echo "you are logged in :)";// 重定向到 'panel.php'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']));// 创建 SQL 查询来检查用户名和密码是否匹配$run = 'select * from auth where pass=\'' . $pass . '\' and uname=\'' . $uname . '\'';// 执行 SQL 查询$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'];// 重定向到 'panel.php'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> ";
?>
主要漏洞在这段代码 $run = 'select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'',服务端没有进行严格的筛选和限制
\右斜线是转义符,相当于代码里的内容就是一个'单引号- 我们注入的账号密码
or 0=0 #"和 /实现了万能密码的效果 - 最终的SQL语句是这样的
$run = 'select * from auth where pass='' and uname=' or 0=0 #,0=0永远为真
搞懂了SQL注入漏洞存在的原因之后,继续进行信息收集
在c.php里面发现了数据库的账号密码billu``b0x_billu

前面扫描目录的时候还发现了/phpmy/这个路径,可能是phpmyadmin这个Web界面的管理程序

发现确实是phpmyadmin,使用刚刚的账号密码billu``b0x_billu成功登录进去了


在auth表里面发现正常的账号密码biLLu hEx_it,可以直接登录首页

继续进行目录探测(每当我们有新的目录和路径发现的时候,从渗透、实践的角度来讲,都建议对新发现的子路径、子目录再去进行进一步的爬取,每一个子目录里面都有可能存在更多、更有价值的信息)
dirsearch -u http://192.168.174.135/phpmy/
发现了配置文件的路径/phpmy/config.inc.php

在配置文件中发现了新的账号密码root``roottoor

前面信息收集,端口扫描的时候是发现它开启了22端口的,我们尝试用这个账号密码登录一下。
发现我们直接登录进来了,称为了root用户!

总结:
- 打完写个Note,天天打不总结都是空。
- 虽然今天这台靶机并不存在什么高难度的、新型的漏洞类型,但是如果我们能将这种传统的漏洞类型相互结合,综合发挥它们的威力和实力的话,最后发现它能达到的攻击的效果,仍然是非常巧妙,威胁程度也是非常高的。
相关文章:
打靶记录11——Billu_b0x
靶机: https://download.vulnhub.com/billu/Billu_b0x.zip难度: 中(两种攻击路线) 目标: 取得root权限 涉及的攻击方法: 主机发现端口扫描Web信息收集SQL注入(Sqlmap跑不出来)…...
一、在cubemx上配置sd和fatfs示例演示
一、sd和fatfs的配置流程界面 1、选择sd4bits 根据自己的sd卡的硬件插槽进行选择。 2、fatfs配置由于使用的是sd卡所以直接选择sd选项 3、程序中对sd卡的初始化需要进行改动,直接使用默认的参数sd卡是挂载不上的。 4、在sd卡挂载好后,就可以使用文件系统…...
C++ 语言特性02 - 命名空间
一:概述 现代C中的命名空间是什么? C中的命名空间允许用户在命名空间范围内对类、方法、变量和函数等实体进行分组,而不是在全局范围内使用。这可以防止大型项目中的类、方法、函数和变量之间发生命名冲突。命名空间将开发人员编写的代码组织…...
drools规则引擎 规则配置文件drl语法使用案例
前提:环境搭建,参考博文springboot整合drools规则引擎 示例入门-CSDN博客案例1,商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分订单pojo编写 package cn.beijing.model;import lom…...
C++编程:高性能通信组件Capnproto与Protobuf的对比分析
文章目录 0. 概要1. 测试环境2. 测试方法3. 测试结果及分析3.1 延迟测试3.2 吞吐量测试3.3 稳定性测试3.4 一对二测试记录3.5 二对一测试记录3.6 Inter-process 单个点开销分析 4. CapnProto 与 Protobuf 的对比测试总结 0. 概要 本文主要探讨了两种高性能通信组件:…...
【Python读书数据,并计算数据的相关系数、方差,均方根误差】
为了处理Python中的读书数据(假设这里指的是一系列关于书籍阅读量或评分的数据),并计算这些数据的相关系数、方差以及均方根误差(RMSE),我们首先需要明确数据的结构。这里,我将假设我们有一组关…...
垃圾收集器G1ZGC详解
G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目…...
AI芯片:高性能卷积计算中的数据复用
随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一&a…...
gitlab修改默认访问端口
GitLab 自带了一个 Nginx 服务器实例,用于处理 HTTP 和 HTTPS 请求。这个内置的 Nginx 服务器被配置为与 GitLab 应用程序实例一起工作,并且它负责处理所有前端的网络通信。 通过yum或者apt安装Gitlab时,nginx通常是被自带安装并配置好的。 …...
python——异常
Python 中的异常及继承关系 在 Python 中,异常用于表示程序在运行过程中遇到的错误,所有异常类最终都继承自 BaseException。通过异常处理,我们可以捕获和处理这些错误,避免程序崩溃。 Python 异常继承关系图 BaseException-- …...
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本…...
Python——扩展数据类型
Python 的扩展数据类型是对内置数据类型的增强,旨在解决特定需求,提供更高级的功能。我们来看一些常见的扩展数据类型及其原理、用途,并通过示例逐步讲解。 1. collections.namedtuple namedtuple 是增强的元组,允许用名称访问元…...
JavaScript 详解——Vue基础
第一章 JavaScript简介 为什么学习javascript ? JavaScript 是全球最流行的编程语言。 JavaScript 是属于 Web 的编程语言。 JavaScript 是 web 开发者必学的三种语言之一: HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 …...
机械行业数字化生产供应链产品解决方案(十二)
我们为机械行业提供的数字化生产供应链解决方案通过集成物联网、人工智能和大数据技术,打造了一套智能化的生产和供应链管理系统,实现了从设计、生产到物流的全程数字化、智能化。该系统通过实时数据采集与分析,优化生产计划和资源配置&#…...
Git——命令集合
Git命令集合 1. 基本操作 1.1 创建版本库 初始化本地仓库:git init添加文件到仓库:git add | git add file file2… | git add.提交文件到本地仓库:git commit -m “message” 1.2 版本回退 查看状态: git status查看全部修改…...
python 数据可视化折线图练习(下:代码演示)
根据上篇对三国疫情情况数据的罗列,构建折线图完成数据展示。(示例如下) 接下来是具体代码演示 import json from pyecharts.charts import Line from pyecharts.options import TitleOpts , LegendOpts , ToolboxOpts ,VisualMapOpts , T…...
深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用
标题:深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用 引言 Go 语言自 1.18 版本起,引入了对构建信息的标准化处理,这一特性极大地简化了获取程序构建信息的过程。debug/buildinfo 包提供了访问 Go 二进制文件中嵌入…...
Nios II的BSP Editor
1.菜单打开BSP Editor (1) (2) (3) 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件,右键,Nios II -> …...
Android-自适用高度的ViewPager
需求 在项目中,我们常常遇到需要动态调整 ViewPager 的高度,以适应其内容大小的需求。默认情况下,ViewPager 的高度是固定的,无法根据每个页面的内容高度进行调整。这会导致在内容高度不一致时,出现不必要的空白区域或…...
代码随想录day38|| 322零钱兑换 279完全平方数 139单词拆分
322零钱兑换 力扣题目链接 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
