游客发表
RCE下载这个词,在安全圈里混的人多少都听过。但很多人第一次看到它,脑子里蹦出来的画面是某个网站,或者某个工具包。其实都不是。RCE是Remote Code Execution的缩写,翻译过来叫远程代码执行。它本身是一个漏洞类型,不是一个可以下载的文件。那为什么会有“RCE下载”这种说法?因为总有人把“下载RCE”当成“下载一个能让我控制别人服务器的程序”。这个误解,跟把“SQL注入”当成一款APP差不多。
我最早接触这个概念是2017年。当时一个朋友发来消息,说“有个RCE下载链接,你要不要试试”。我点开一看,是个压缩包,里面塞了一堆Python脚本和几个exe。解压之后杀毒软件直接报警。那玩意儿其实是一个漏洞利用工具包,针对的是当时某个还没修补的WebLogic反序列化漏洞。作者把利用代码打包,起名叫“RCE-download”。你看,名字就是这么来的——它下载的是利用工具,不是RCE本身。
真正的RCE漏洞,是服务器上某个功能把用户输入当成了代码执行。比如一个PHP网站,有个参数叫?cmd=,后台直接写system($_GET['cmd'])。你传个?cmd=ls,它就列目录。传?cmd=cat /etc/passwd,它就吐密码文件。这时候你不需要下载任何东西,浏览器地址栏就是你的武器。但现实里这种低级错误越来越少,大多数RCE需要构造特殊的序列化数据、内存布局或者协议包。那些构造好的payload,才是被人打包成“RCE下载”的东西。
有个细节挺有意思。很多“RCE下载”页面会放一个README.txt,里面写着“仅供安全研究”。但下载链接旁边往往挂着“日站专用”或者“提权必备”的字样。这种矛盾感,就像卖菜刀的说“仅供切菜”,但包装上印着“砍骨头不卷刃”。我见过一个工具包,里面针对Struts2的漏洞利用脚本,注释里还留着原作者的中文ID和QQ号。那哥们儿大概没想到,自己写着玩的脚本会被传到各种论坛上,配上“RCE下载”的标题,下载量过万。
从防御角度看,盯着“RCE下载”这个词没太大意义。攻击者不会傻到在服务器上留一个叫“rce.exe”的文件。他们更可能用curl拉一个base64编码的脚本,或者用powershell -enc执行一段混淆过的命令。你搜“RCE下载”,搜到的多半是过期漏洞的利用工具,或者干脆是挂羊头卖狗肉的恶意软件。去年有个客户中招,就是因为运维在百度上搜“Struts2 RCE下载”,下了一个所谓的“一键检测工具”,结果那工具本身是个远控木马。这事说起来像个段子,但真发生了。
如果你真想研究RCE,别去下那些来路不明的压缩包。去GitHub上找官方PoC,或者自己搭个靶场环境。比如Vulhub,里面几十个RCE漏洞的Docker镜像,docker-compose up -d就能跑起来。你手动构造payload,看它怎么被解析、怎么被拼接、怎么逃逸过滤。这个过程比下载一百个工具包都有用。工具包是别人嚼过的馍,你连里面放了什么料都不知道。
最后说个真事。某次内部培训,我让学员用搜索引擎找“RCE下载”。排第一的链接点进去,页面做得挺像样,有版本号、有更新日志、有使用说明。下载按钮一点,跳转到一个网盘,要求先关注公众号才能获取提取码。学员照做了,关注完发现提取码是“rce2023”,输入后下载到一个.rar,解压密码是“www.xxx.com”。打开一看,里面是个.exe,运行后弹出一个计算器。对,就只是一个计算器。作者大概想证明“我能让你执行代码”,但只写了个calc。这可能是最和平的RCE了。
友情链接