ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 远程代码执行 在web方面是指应用程序过滤不严,用户可以通过请求将代码注入到应用中由服务器执行,导致一系列不可控的后果 ## 漏洞查找办法 * 代码审计 最主要的方式,借助代码审计工具,非常方便的审计出此类漏洞 * 已知的CMS漏洞 已知的CMS,有很多每年都会爆出来很多此类的漏洞 * 页面传参查找 针对页面有传参的地方,重点关注传入恶意代码尝试,概率相对较小 * 工具扫描 ## 代码执行漏洞分类 * 执行代码的函数 ``` eval、assert ``` 会将字符串当作PHP代码执行 * callback函数 ``` preg_replace + /e模式 preg\_replace()的是执行一个正则表达式的搜索和替换 当第一个参数中存在e修饰符时,第二个参数的值会被当成PHP代码来执行 注意:该函数在5.5之后版本被弃用,7.0之后不支持 <?php preg_replace("/<data>(.*?)<\/data>/e,'system("id"),'<data>aa</data>' ?> ``` * 反序列化 ``` unserialize()(反序列化函数) ``` ## 漏洞产生位置 * web源码 thinkphp eyoucms wordpress * 中间件平台 Tomcat Apache2 Struts2 Redis * 其他环境 PHP-CGI Jenkins-CI java-RML ## 漏洞危害 * 执行PHP代码 获取服务器内容或相关信息; * 让网站写shell 利用执行PHP代码功能,往服务器中写入Shell脚本 * 控制服务器 利用Shell脚本,上传大马,甚至控制服务器 ## 防御方式 ~~~ 尽量不要使用eval、assert等危险函数 如果使用危险函数的话,一定要对输入内容进行严格的过滤 preg_replace 放弃使用/e修饰符 在php配置文件中禁用危险函数:disable_functions ~~~