ShellShock攻击实验
实验环境
实验楼
下载新版本,安装bash 4.1
安装好了之后,检查一下是否存在shellshock漏洞
出现了vulnerable,发现漏洞存在
开始实验
攻击Set-UID程序
编译下面这段代码
#include <stdio.h>
void main()
{
setuid(geteuid()); // make real uid = effective uid.
system("/bin/ls -l");
}
开始hack
继续hack
发现攻击失败,说明如果 real uid 和 effective uid 相同的话,定义在环境变量中的内容在该程序内有效,那样shellshock漏洞就能够被利用了。
简化一下攻击逻辑代码
void initialize_shell_variables(){
for (string_index = 0; string = env[string_index++]; ) {
/* 如果有export过的函数, 在这里定义 */
/* 无法导入在特权模式下(root下)定义的函数 */
if (privmode == 0 && read_but_dont_execute == 0 &&
STREQN (“() {“, string, 4)) {
[...]
// 这里是shellshock发生的地方
// 传递函数定义 + 运行额外的指令
parse_and_execute (temp_string, name,
SEVAL_NONINT|SEVAL_NOHIST);
[...]
} }
总结
整体过程比较流畅,以前只是了解过一些攻击方式,但是具体不是太深入,但是这一次经过实验楼后,好了许多。