Python2 input函数漏洞利用

在 Python2 中,input 函数相当于

eval(raw_input(prompt))

如果输入的数据是一个恶意的表达式,存在任意代码执行的风险

实例演示

  • 字符串拼接

image-20240605115652670

  • 命令执行
__import__('os').system('cat /etc/passwd')
image-20240605120157892

靶场利用

在 vulnhub bottleneck 靶机中,遇到 input 漏洞利用的情况

# 核心代码

foreach($blacklist as $elem){
    if(strstr($imagefile, $elem) !== FALSE)
        $isblocked = TRUE;
}
// report the intrusion to the soc and save information locally for further investigation
if($isblocked){
    $logfile = 'intrusion_'.$timestamp;
    $fp = fopen('/var/log/soc/'.$logfile, 'w');
    fwrite($fp, "'".$imagefile."'");
    fclose($fp);
    exec('python /opt/ids_strong_bvb.py </var/log/soc/'.$logfile.' >/tmp/output 2>&1');
    print_troll();
    exit();
}

代码的意思是参数输入要是包含黑名单的字符串中,则将输入输出到日志文件中

我们不知道 ids_strong_bvb.py 的内容是什么,但靶机中存在文件包含漏洞可读取 /tmp/output 的内容

由于靶机中还存在定时清空 /tmp/output 的程序, 所以还需要先 读一个包含黑名单字符串的路径,在立刻读取 output 文件,方可读取

如图所示,先读取这两个路径

image-20240605121442701

输出为:

image-20240605121457819

/etc 后加单引号使 程序报错

image-20240605121611763

知道程序中包含 input 参数,经由上面输出推测得,用户输入由input函数处理

由报错可以知道闭合规则,将payload放到 /etc' and payload and '中即可

image-20240605121852275

输出:

image-20240605121924908

更改system里面的命令,可造成任意命令执行,直接getshell,进行下一步提权。

posted @ 2024-06-05 12:44  cha0s32  阅读(15)  评论(0编辑  收藏  举报