很多朋友问有关错误5的问题(Error Message:在执行 xp_cmdshell 的过程中出错。调用 'CreateProcess' 失败,错误代码: '5'。)简单说一下我的认识,大家一起讨论吧.

一.错误5产生的原因
错误5的产生是由于cmd.exe的权限被降权了.
一般我们扫到的sa口令,很多都是system权限的,当cmd.exe的安全选项卡的system权限设置为完全控制-拒绝.

此时运行sql的xp_cmdshell扩展存储指令,就会发生上述错误了.

也许你会问,为什么system权限被拒绝了,sql的xp_cmdshell扩展存储指令就无法执行呢

答:就目前我发现的xp_cmdshell扩展存储指令严格遵守的执行路径是c:\windows\system32\cmd.exe,当此路径下的cmd.exe无法执行或者被降权,那么错误5是必然发生的.(此处如果其他高手有不同见解可以进行讨论,我只是阐述我的发现)


有人也许又会问,我执行的是sqltools工具的dos命令,并不是sql的指令,为什么也会错误呢?

sqltools工具载入OD,我们查看dos命令按钮相关的指令代码,不需要反汇编程序了,直接查看字符串我们就可以发现了

CODE:

004CD99B   mov edx,99.004CE2A0               ASCII "Exec DOS Command....."
004CD9C5   mov eax,99.004CE2C0               ASCII "Please Connected sqlserver!"
004CDA1E   push 99.004CE2E4                 ASCII "exec master..xp_cmdshell '"

[Copy to clipboard]

dos命令直接调用sql指令的exec master..xp_cmdshell 来执行dos命令,因此,sql无法执行的指令,在sqltools的dos命令下同样也是无法执行,产生同样的错误.这就是错误5产生的根本原因.

那么错误5是否不可修复,要如何绕过它提权呢

答:就目前情况来看,由于sql严格执行c:\windows\system32\cmd.exe下的cmd文件,几乎是不可能修复的(此处如果其他高手有不同见解可以进行讨论).

如果要绕过它提权该如何绕,方法很多
1.最简单直接的如果能够做shift映像劫持的,劫持后登录系统的管理去添加用户提权(劫持的教程,请自行搜索论坛,此处不赘述)
2.可以测试用sqltoos工具dos命令下的oashell(就在xp_cmdshell旁边)命令来测试执行dos命令提权,本人成功过几次,毕竟是方法的一种,还算比较简单
3.用sql命令复制某些系统程序(如explorer.exe或者taskmgr.exe等)为sethc.exe,相当于shift后门,登录系统管理去添加用户
4.用沙盒命令提权(网上教程太多了,自行搜索)
5.利用服务器上的现有网站,找到网站目录传小马传webshell或者在数据库插一句话木马等,海阔天空任你想像了.(网站入侵方面本人玩得比较少,相信你一定能做到的)

说了这么多只是希望能对刚开始玩的朋友提供一个思路,以上方法本人亲自试过是能成功的,当然并不是说以上5种就都一定成功,也许下一种方法就是你发现的,欢迎大家一起发贴探讨.

文章如转载,请注明转载自:http://www.5iadmin.com/post/719.html