远程命令执行漏洞
最后更新于
RCE, 英文全称为remote command execute, 即远程命令执行
RCE漏洞通常出现在应用程序中,当设计者提供远程命令操作接口时可能会导致漏洞的产生。例如,在web管理界面中提供ping操作,如果在设计功能时没有进行严格的安全控制,则攻击者可能会通过该接口提交"意想不到"的命令并导致后台执行,从而控制整个后台服务器。
RCE漏洞是一种严重的安全漏洞,因为它允许攻击者在目标系统上执行任意代码。这意味着攻击者可以在受害者系统上运行恶意软件、篡改数据、获取敏感信息等。如果攻击者利用 RCE 漏洞成功入侵目标系统,可能会对目标系统造成严重的损害
在Windows和Linux中有四种命令连接符, 分别是|
、||
、&
、&&
。通常来讲, 远程命令执行漏洞的利用, 离不开命令连接符的使用
连接符 | 描述 |
---|---|
a | b
a || b
a & b
a && b
${IFS}
代替空格${IFS}是一个特殊的变量,其值为"内部字段分隔符"(Internal Field Separator)。通常在bash中,IFS的值为空格、制表符和换行符
$IFS$8
代替空格$8
表示传递的第8个参数
<
或者<>
例如关键字cat被过滤了
使用单双引号的时候, 要注意闭合, 若不闭合的话就会导致命令失效, 例如下面这个例子
$num
和$@
拼接关键字若cat
命令被过滤掉了, 可以使用其他命令来读取文件内容, 例如下面表格所示
使用``和$()来执行命令,例如下面命令所示
在如下命令中, \143\141\164表示字符"c"、"a"和"t",\040表示空格, \056表示".", \164\170\164表示字符"t"、"x"和"t", 也就是说, 下面这条命令是对"cat flag.txt"进行八进制编码
在如下命令中, "cat flag.txt"的base64编码为"Y2F0IGZsYWcudHh0Cg=="
可使用反斜杠\
来实现换行, 以此实现拼接命令的效果, 如下命令所示
依次往shell文件写入命令, 随后执行shell
读取文件命令 | 描述 |
---|---|
`a
b`
`a
b`
a & b
不管a命令是否执行成功, 都会去执行b命令
a && b
若a命令执行成功, 才会执行b命令 若a命令执行失败, 则不执行b命令
more flag.txt
一页一页显示文件内容
less flag.txt
与more命令不同的是, more命令只能往后翻页, 而less命令往前往后都可以
head flag.txt
显示文件内容前几行
tac flag.txt
tac与cat命令刚好相反,文件内容从最后一行开始显示
tail flag.txt
显示文件内容后几行