
漏洞信息源自著名的国外漏洞网站exploit-db下的第34765个漏洞报告,并显示验证命令: env x ='(){: ;}; echo易受攻击的bash -c“ echo this is a test”,
如果在版本号小于bash 4.3的Linux或Unix系统上执行上述命令,则可能会得到以下输出:
易受伤害
这是一个测试
如果易受攻击的第一行出现,则系统存在由bash程序缺陷引起的任意命令执行漏洞.

此脚本的出现引起了我的技术人员的注意,其中env是一个系统命令,允许系统创建环境变量x ='(){: ;};. 回显弱点”,并使用此环境变量执行bash -c“回显这是一个测试”. 第一行的“易受攻击”输出揭示了该漏洞的存在,因为在函数定义'(){: ;};'之后的“回声易受攻击”指令. 不应执行,但应执行. 在对bash进行详细分析之后,我了解到bash在处理环境变量(例如“(){: ;};”)分配的代码中存在设计缺陷,并且错误地将函数定义后的字符串作为命令执行.
因此bash 漏洞测试,真正的用途与env命令无关. 只要您尝试使系统接受包含“ [函数定义] + [任意命令]”的环境变量分配,就可以触发“ [任意命令]”部分中指示的代码执行.
只要满足以下两个条件,任何已知程序都可以用于通过bash漏洞导致任意命令执行:
1. 该程序使用bash作为脚本解释器来处理特定时间的环境变量分配;
2. 环境变量分配字符串的提交取决于用户输入.

以下是可能的应用案例. 这种情况通过攻击基于bash的cgi应用程序页面来获取目标计算机的远程外壳.
首先,Apache服务器的cgi-bin目录中存在一个基于bash的cgi Web应用程序. cgi脚本的内容为:

使用普通浏览器以普通页面访问结果:


但是我们可以通过诸如curl之类的工具来模拟HTTP请求,从而构造一个异常的http请求,命令如下:

此命令生成一个包含自定义字段“ A_Custom_Header”的请求,并将其发送到基于Apache的远程cgi服务器. 该字段的值设置为可以触发bash漏洞的字符串,其中“ / bin / bash”……0>&1”是在远程主机上执行的命令,用于反弹远程bash shell(或其他外壳程序)连接到黑客主机的端口8080. 所请求的cgi页面是. 在黑客主机上,使用netcat侦听端口8080,然后等待被入侵服务器的远程连接:

执行上述curl命令后,发生了以下事情:

1. 远程主机使用bash解释器创建一个名为“ A_Custom_Header”的环境变量,并为其分配值“(){: ;}; / bin / bash……0>&1“;
2. 由于漏洞,bash“顺便说一句”将执行“ /bin/bash...0>&1”作为命令;
3. 用户提交的恶意命令会创建一个/ bin / bash进程,并创建一个套接字以将bash IO链接到黑客机器10.20.230.63:8080(在此测试案例中bash 漏洞测试,黑客机器和服务器是同一台机器,当然,它们可以不同)
4. 黑客主机的网猫从受攻击的服务器接收套接字链接,并获取远程外壳的IO,如下所示:

已获得守护程序用户的远程shell;
5. 黑客可以使用该用户的身份执行其他命令来实现远程攻击.
源金山毒霸
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-151275-1.html
中国不得已的反制之措施
在十二海里范围内布置水雷