20199322《Linux内核原理与分析》第十一周作业

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);
[...]
} }

总结

整体过程比较流畅,以前只是了解过一些攻击方式,但是具体不是太深入,但是这一次经过实验楼后,好了许多。

猜你喜欢

转载自www.cnblogs.com/vizen/p/11959616.html