RCE(命令执行漏洞):命令执行漏洞 英文: remote command/code execute 简称RCE,包含远程命令执行和远程代码执行
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。
命令执行漏洞利用条件:
1、应用调用执行系统命令的函数(如:system()、eval()等)
2、将用户输入作为系统命令的参数拼接到了命令行中(如:system($_GET、$_POST)等)
3、没有对用户输入进行过滤或过滤不严
漏洞分类:
1、代码层过滤不严
2、系统的漏洞造成命令注入
3、调用的第三方组件存在代码执行漏洞
常见命令拼接符:
Windows 系统:
&
格式:命令1&命令2…命令n
规则:命令1和命令2一起执行,互不影响
&&
格式:命令1&&命令2…命令n
规则:命令1和命令2一起执行,如果命令1出错命令2则不执行
|
格式:命令1|命令2…命令n
规则:当命令1执行成功时才执行命令2,如果命令1执行不成功则不会执行命令2,在两者都成功的情况下,只显示命令2 的结果。
||
格式:命令1||命令2…命令n
规则:或运算,如果命令1执行失败,执行命令2,如果命令1执行成功,则不执行命令2
Linux系统:
相比于Windows系统,Linux系统的"||"、"|"、"&&"、"&"拼接符号功能和Windows一样,但是在shell命令中Linux还定义了一个";"用于表示语句的结尾,可以将多条shell命令通过";"隔开。
;
格式:命令1;命令2…命令n
规则:隔开多条shell命令一起执行
;
格式:命令1;命令2…命令n
规则:隔开多条shell命令一起执行
远程命令执行:
应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
远程代码执行:
代码执行漏洞也叫代码注入漏洞,指用户通过浏览器提交执行恶意脚本代码,执行恶意构造的脚本代码
常见绕过:
https://blog.csdn.net/m0_73185293/article/details/131557169
通配符:
?
匹配单个字符如果匹配多个字符,就需要多个?连用
*
*代表任意数量的字符
[]
代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符, 可能是 a,b,c,d 这四个任何一个
未初始化变量:
未初始化的变量都是Null,例如a ,b,c 在Linux环境下输出都为null
空格可用${IFS}来绕过
函数积累:preg_match_all()
思维导图如下