漏洞介绍
Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。——摘自维基百科
漏洞****实验环境搭建
1、 以root权限安装4.1版本的bansh。下载地址:
http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz
2、 安装:
tar xf bash-4.1.tar.gz``cd bash-4.1``./configure``Make && make install
3、链接
rm / bin/bash``ln -s /usr/local/bin/bash /bin/bash
4、检查漏洞是否存在:
Env x=’() { :; };echo vulnerable’ bash -c “echo this is a test”
5、 如果上一步输出vulnerable,那么让/bin/sh指向/bin/bash
Sudo ln -sf /bin/bash /bin/sh
漏洞真身复现:
Export foo=’() { :; }; echo hello world’
Bash读取了环境变量,在定义foo之后就直接调用了后面的函数,一旦调用bash,自定义语句就直接触发。
- 攻击Set-UID程序。
我们知道system()函数将调用“/bin/sh -c”来运行指定的命令,这也意味着/bin/bash会被调用。你能够利用shellshock漏洞来获取权限吗?首先确保安装了带有漏洞版本的bash版本,并让/bin/sh指向/bin/bash
编辑如下C代码:
并给其赋一个SUID权限。
成功拿到root权限:
重点函数还是C代码中的setuid(geteuid());可以尝试,如果这段代码被删除,那么就无法成功提权。
原理分析:
我们这里使用该语句的原因是希望read uid = effective uid
这就说明如果real uid 和effective uid相同的话,定义在环境变量中的内容 在该程序中任然有效,但是两个uid如果不同,环境变量失效,就无法发动攻击了,这可以从bash的源代码中得到印证。
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取