我很难理解 Shellshock 漏洞验证 [重复]

2023-12-10

我在检查时得到了这个炮弹休克漏洞:

host1:~$ env x='(){ :;}; echo vulnerable' bash -c "echo hello"
hello
host1:~$ env x='() { :;}; echo vulnerable' bash -c "echo hello"
vulnerable
hello
host1:~$

很奇怪吧?


如果环境变量恰好以这四个字符开头,Bash 会将其识别为函数() {,包括空间。所以env x='(){ :;}; echo vulnerable'不算。

这不太符合您用来定义函数的语法bash;内部,bash将以标准化形式存储函数的字符串表示形式。如果函数被导出(使用export -f function_name),然后将规范化形式添加到环境中,并且子代bash进程会将其识别为函数定义。

“shellshock”bug 的来源方式bash处理已识别的功能;有缺陷的版本bash(可以追溯到很久以前)只需将环境中的字符串评估为函数定义(通过将变量名称作为函数名称添加到前面),这会受到漏洞测试中演示的注入攻击。

手动创建看起来像的字符串bash函数定义,以便在子级中定义函数bash过程是已知技术。导出函数并重新导入它们非常常见,并且通常甚至不会被用户注意到。 (例如,该技术用于将 bash 函数传递到由xargs bash -c and find ... -exec bash -c.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我很难理解 Shellshock 漏洞验证 [重复] 的相关文章

  • rsync :递归同步所有文件,同时忽略目录结构

    我正在尝试创建一个 bash 脚本 用于将音乐从桌面同步到移动设备 桌面是源 有没有办法让rsync递归同步文件但忽略目录结构 如果从桌面删除了文件 我希望它也在设备上删除 我的桌面上的目录结构是这样的 Artist1 Artist1 ar
  • Google App Engine 的 JDO:转义引号

    如何转义 JDO Google App Engine 中的查询参数 例如 如果变量名称可能包含单引号 形式的不安全字符 如何使下一个片段安全 PersistenceManager pm String query select from Pe
  • bash 如何识别链接?

    在捕获 href 链接的 bash 脚本中 bash 如何知道 TEXT 是链接而不是典型的字符串 为什么最后当 TEXT www google com 时 TEXT 仍然是一个链接 你能用一个文件做到这一点吗 例如 有一个运行脚本的 点击
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • bash脚本ip主机

    在第一个中 如果我们希望显示主机名 这是文件中的第五个字段 然后 如果我们提供给主机命令的 IP 不存在 则该命令将返回消息 3 NXDOMAIN 脚本应该识别命令是否 未找到 在这种情况下 它将 必须简单地打印 bin bash ip 1
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • 无法让 ASCII 艺术回显到控制台

    我是 Bash 脚本新手 这让我感到困惑 我正在将 ASCII 艺术添加到项目中 但似乎无法弄清楚如何转义某些字符 有人可以帮我让下面的代码正常工作吗 每当我尝试添加斜杠作为转义字符来修复错误时 斜杠也会在执行时打印到控制台 这破坏了形象
  • 对于客户端服务器程序,并行接收多个客户端连接请求的最佳方法是什么?

    该程序是在 Linux 上用 C 语言开发的客户端服务器套接字应用程序 每个客户端都连接到一个远程服务器并将其自身记录为在线 在任何给定时间点很可能有多个客户端在线 所有客户端都尝试连接到服务器以将自己记录为在线 忙碌 空闲等 那么服务器如
  • cat/Xargs/命令 VS for/bash/命令

    Linux 101 Hacks 一书的第 38 页建议 cat url list txt xargs wget c 我通常这样做 for i in cat url list txt do wget c i done 除了长度之外 还有什么东
  • 什么是“代码替换(OAuth 登录)”威胁?

    来自OAuth 2 0 威胁模型和安全注意事项 draft https datatracker ietf org doc html draft ietf oauth v2 threatmodel 08 section 4 4 1 13 4
  • 如果未使用“data-target”属性,Bootstrap 3.3.7 是否安全?

    有一个安全漏洞 https snyk io test npm bootstrap 3 3 7 tab issues关于 Bootstrap 3 3 7 它表示 该软件包的受影响版本很容易通过数据目标属性受到跨站点脚本 XSS 攻击 我想知道
  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截
  • 如何防止我的客户经常使用演示 Java 程序?

    我制作了一个演示小程序 想交付给我的客户 以便他可以运行它 5 次以检查其功能 它不是一个大软件 我为其实现了一些序列密钥功能并制作了试用软件 我想要一个简单的解决方案 可以限制程序的使用超过 5 次 或者可以在达到阈值限制后自行删除 我想
  • C 标准库函数与系统调用。哪个是“open()”?

    I know fopen 在C标准库中 所以我绝对可以调用fopen C 程序中的函数 我感到困惑的是为什么我可以打电话给open 功能也一样 open 应该是系统调用 所以它不是标准库中的C函数 因为我能够成功地调用open 函数 我调用
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • shell 脚本中数组的最大元素及其索引

    如何在 shell 脚本中从数组中找到最大元素及其索引 我有一个数组 a 2 2116565098 2 1238242060 2 1747941240 2 3201010162 2 3677779871 1 8126464132 2 124
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中

随机推荐