问题标签 [shellshock-bash-bug]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Shellshock 漏洞,CVE-2014-7169
这个ycombinator 线程指出
允许您删除第一个令牌,然后运行结果,将输出发送到已删除的令牌。我可以看到这个() { (a)=>\'
部分有魔法,但这是一件很难搜索的事情,所以如果有人能解释一下内部工作原理,那就太好了。
在链接的可能重复问题中,变量通过使用导出到环境变量,
这真的不一样
这是我试图了解工作原理的部分。那么,(a)
和=>\'
部分有什么作用呢?显然,它正在做一些非常相似的事情,但不同之处在于它绕过了这个漏洞的第一个补丁,请参阅 chepner 的评论。
linux - 升级 bash,但是 bash --version 没有变化,为什么
对于 Shellshock 问题,我在 redhat 4,5 上升级 bash,使用以下步骤
检查 bash 版本
root@aaaA:/usr/src/redhat/RPMS/x86_64>bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
升级 bash
rpmbuild --rebuild -bb bash-3.2-33.el5_11.4.src.rpm
cd /usr/src/redhat/RPMS/x86_64/
root@aaa:/usr/src/redhat/RPMS/x86_64>rpm -Uvh bash-*
Preparing... ########################################### [100%]
1:bash ########################################### [ 50%]
2:bash-debuginfo ########################################### [100%]
再次检查 bash 版本
root@aaa:/usr/src/redhat/RPMS/x86_64>bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
- 重新启动并再次检查 bash 版本
root@aaa:/usr/src/redhat/RPMS/x86_64>bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
- 检查转速
root@aaa:/usr/src/redhat/RPMS/x86_64>rpm -qa | grep bash
bash-3.2-33.4
bash-debuginfo-3.2-33.4
为什么 bash 版本没有更改为 bash-3.2-33.4
apache - 如何防止 Apache 将请求行作为 bash 命令执行?
我在 Apache 2.2.22 上运行了几个虚拟主机,并且在日志中注意到一个相当惊人的事件,来自冰岛的“安全扫描程序”能够使用以下 http 请求行将文件 wget 到 cgi-bin 目录中:
它有效地下载了有问题的文件。
任何人都可以解释这个请求是如何管理实际执行 bash 命令的吗?
自然地,cgi-bin 不应该是可写的,但它仍然有助于理解这种类型的漏洞利用是如何运作的,以及如果没有某种方法可以更改 Apache 配置参数以便永远不会执行请求命令......
这可能无关紧要,但几个小时后,内部接口开始出现一连串奇怪的请求,每 2 秒发生一次:
linux - Bash 脚本不会对 csv 文件的所有条目进行 ssh
我正在尝试使用最新的修复包修补一堆 CENT OS 机器。我有以下 bash 脚本,它将 csv 文件作为输入,其中包含这些机器的 IP 地址和密码。
该代码工作正常,但是它只适用于第一行它似乎不适用于列表的其余部分,因为我的 output.txt 只有第一行 host 的条目。
补丁.sh
hosts_test.cvs
终端输出
不会分配伪终端,因为 stdin 不是终端。
bash - Shellshock Bash 错误的根本原因
我没有得到诸如 CVE-2014-6271之类的shellshock bash 错误的根本原因。
据我了解,如果应用程序数据包标头中存在恶意代码,则会发生 shellshock。
例如,如果 HTTP 标头包含http-header[Cookie] = () { :; }; ping 192.168.0.1然后 ping 到 192.168.0.1。
但是,HTTP 标头只需要设置字符串变量。为什么 Apache 会运行 bash 脚本?
Apache HTTP 标头解析器是由 bash shell 脚本组成的吗?
谢谢!:)
ruby-on-rails - RoR:无法加载 OpenSSL(在今天 Apple 的 Bash 修复之后)
希望有人可以帮助解释或建议我在今天运行 Apple 的 bash shellshock 修复程序后尝试通过 rvm 重新安装 rails 后遇到的这个错误。我升级到 OSX 10.9.5 mav 并运行 Bash Shellshock,然后我的 RoR 应用程序需要重新安装 rails。当我尝试捆绑安装时,我得到以下信息:
无法加载 OpenSSL。您必须使用 OpenSSL 支持重新编译 Ruby,或将 Gemfile 中的源代码从“https”更改为“http”。rvm.io/packages/openssl 提供了使用 RVM 使用 OpenSSL 进行编译的说明。
macos - 如何在山狮中恢复默认 bash PATH,我更新了 bash 以避免炮击,所以我无法启动
我正在升级 bash 以修补 shellshock 漏洞,所以我按照教程进行操作,我想我通过替换旧的 bin/bash $PATH 搞砸了,所以我无法登录到我的 macbook ...
教程说:如果你非常偏执,你可以删除 bash_old 的执行权限 ....
$ sudo chmod ax /bin/bash_old /bin/sh_old.... ------> 可疑代码...
我认为这是一个大错误,所以我按照以下步骤用新的 bash 更新(使用 Homebrew 升级)替换旧的 PATH 到新的 PATH:
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh
当我重新启动macbook时,我设置了我的密码并继续加载模式......加载......加载......并且没有任何反应......
我尝试了很多事情,比如恢复 NVRAM、恢复磁盘、将密码更改为单用户模式,但没有任何反应......该死!
这里的教程:
https://apple.stackexchange.com/questions/147005/can-bash-be ...
linux - 在环境上设置 Bash 函数
我需要在 C/C++ 程序的 Bash 环境中定义一个 Bash 函数。在shellshock错误之前,我可以这样定义一个函数:
或来自 C 程序的等价物:
或者
但是使用修复了shellshock的 Bash 版本,我无法管理如何在环境中定义我的函数。
奇怪的是,如果我运行env
,我可以看到我在环境中定义的函数,但如果我调用它,Bash 说它不存在。
提前致谢
linux - 带有 shellshock 固定 bash 版本的非导入环境变量
我有一个简单的 bash 脚本,它修改将由后续二进制文件使用的环境变量。下面是我的基本脚本:
DBROOT 变量被“test_process”用作环境变量。此外,DBROOT 使用另一个值“OLD_DIRECTORY”定义为全局环境变量。该脚本的目标是强制“test_process”使用 NEW_DIRECTORY 值(导出值)。
使用未修补的 bash 版本,测试有效。但是,在 bash 上修补 shellshock 错误后,test_process 不会读取 DBROOT 的导出值,也不会读取全局环境变量。就好像“test_process”忽略了导出和全局变量。
我没有“test_process”的源代码。bash 版本是2.05b.0(1)-release(rpm 版本是 bash-2.05b-41.7.i386.rpm ),我在Red Hat Enterprise Linux AS 版本 3上运行
更新: 通过设置编译时定义重新编译 bash 2.05b 最后一个源之后
#define NON_INTERACTIVE_LOGIN_SHELLS
该脚本再次起作用。如果没有这个定义,bash 会误解命令-
后的字符su
linux - 如何将 CronTab 恢复到我的 WebMin 系统
我不知道这是否是我的服务器遭受的 shellshock 攻击(或其他有效的攻击)的影响,但它基本上使黑客能够在服务器重新启动时覆盖我的 SSH 配置文件。
这个新文件使用 wget 从网站加载文件,然后是另一个 hack 函数库,我猜他然后用它从我的服务器运行 hacks/DOS。我很快就抓住了它,理想情况下想要升级,但因为我患有癌症并且刚刚做了一次大手术,所以目前太费劲了。
因此,我做了很多家务,更改密码,删除 shell 访问,恢复到 DASH,用符号链接将 root 和任何其他用户的默认 shell 替换到另一个文件夹,恢复 SSH 的配置文件,从配置中删除 CGI 功能文件,例如
ScriptAlias /cgi-bin/ /home/searchmysite/cgi-bin/
#
允许所有人
#
删除了所有虚拟最小站点的 AW 统计数据和 Webalizer。
我已经安装了 DenyHosts 和 Fail2Ban。
我还阻止了他从中获取文件的站点的 IP 的入站/出站流量。
然而,自从这个改变以来,我似乎失去了 webmin 的视觉 cron 管理器。
当我进入菜单项“Scheduled Cron Jobs”时,它显示“找不到用于管理用户 Cron 配置的命令 crontab。也许这个系统上没有安装 Cron?”
但是我可以在文件系统中看到它存在。
当我运行 crontab -l 或 crontab -e 我得到“权限被拒绝”
whoami 显示“根”
我确实认为在黑客攻击时这一切都是相关的,他使用 SSH 和 Cron 作业来运行他的黑客攻击。
我想知道的是如何让 CronTab 经理回来。
所有的 cron 作业仍在运行,例如将提要导入我的网站、运行预定的电子邮件等等,我不知道如何在没有完全重建的情况下解决这个问题。
如果我有时间和精力,我会这样做,但我已经筋疲力尽了,在这次黑客攻击之前,一切都运行得很顺利,我的网站给我带来了钱也运行良好。
他们目前仍然工作正常,我会定期检查我的日志中是否有看起来很奇怪的 IP,对 xss/sql/path travesal/file hacks 有严格的 htacess 规则,并禁止整个国家/地区访问该站点所在的 Cloudflare。因此,即使机器很旧,我也不会“认为”该机器目前受到损害-尽管可能是错误的!
盒子细节
操作系统 Debian Linux 5.0 Virtualmin 版本 3.98.gpl GPL WebMin 版本:1.610 内核和 CPU Linux 2.6.32.9-rscloud on x86_64
因此,如果有人可以帮助我找回我的 crontab 管理器,那就太好了。
谢谢