linux bug 函数,linux – 我很难理解Shellshock漏洞验证

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 ='(){:;};回声脆弱’不计算在内.

这与用于在bash中定义函数的语法不完全一致;在内部,bash将以规范化的形式存储函数的字符串表示.如果导出函数(使用export -f function_name),则将规范化表单添加到环境中,子bash进程将其识别为函数定义.

“shellshock”错误来自bash处理已识别函数的方式; bash的错误版本(可以追溯到很长一段路)简单地将环境中的字符串作为函数定义进行评估(通过将变量的名称添加为函数名称),这将受到注入攻击,如漏洞中所示测试.

手动创建看起来像bash函数定义的字符串以便在子bash过程中定义函数是一种已知技术.导出功能并重新导入它们非常常见,用户通常甚至都注意不到. (例如,这种技术用于将bash函数传递给由xargs bash -c启动的子shell,并找到… -exec bash -c.)

标签:bash,security,linux,shellshock-bash-bug

来源: https://codeday.me/bug/20190713/1454016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值