有时候在入侵的时候总是碰到先烦恼的问题,比如SA遇到xp_cmdshell时,如果管理员把xp_cmdshell删了怎么办呢?总是眼看着肉鸡跑了吧!今天我就对XP_CMDSHELL做一先解释,希望大家能看明白,能看懂众所周知,在MSSQL中,通过XP_cmdshell存储扩展,拥护具有sysadmin权限,用来执行系统任意命令但是那先网管也不是吃素的,都回把它删除,所以在SQL Injection攻击中,获得xp_cmdshell的执行权限才是最终的目标,在MSSQL中一共有8中权限分别是 sysadmin dbcreator diskadmin processadmin
serveradmin setupadmin securityadmin bulkadmin 这8种 每一个都具有不同的权限,大家都因该可以知道其中的sysadmin权限是最高的,也是我们想要的。。。大家都知道在MSSQL中,SA的权限是至高无上的了,但是有时获得了个SA 却无法执行命令是,是不是很郁闷了呢?获得了个SA一般我们都用SQLTOOLS.EXE连接吧!一个比较好的工具,我也喜欢,呵呵!首先还是让我们看看吧!用SQLTOOLS.EXE连上后看看它的XP_cmdshell存储扩展是不是被删了,在"利用目录"菜单中打开"执行数据库命令" 填入我们要执行的命令:Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'如果返回结果是1的话,说明它没有删除这个扩展存储过程,我们可以执行DOS命令了,如果不行呢?接着看,还有办法,我们直接在数据库命令执行窗写入:Exec master.dbo.addextendedproc 'xp_cmdshell', 'xplog70.dll'; select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'上面的意思就是恢复默认的存储过程,如果返回1的话说明恢复成功,不然就是存储扩展被删除了,需要我们给它上传个xplog70.dll用SQLTOOLS.EXE自带的文件上传功能可以轻松实现了,把xplog70.dll文件传到对方的c:\winnt\system32下,(不行的话,需传到对方的MSSQL目录里)在执行数据库命令:Exec master.dbo.addextendedproc 'xp_cmdshell', 'c:\winnt\system32\xplog70.dll'好了,接下来就是我们常用的命令 net user 和 net localgroup administrators 命令了,还有清楚IIS日记和MSSQL日记就OK了!上面的方法是可以了但我们还可以饶过xp_cmdshell ,来执行系统命令,大家知道在MSSQL中可以通过两个存储扩展来创建activex自动脚本,呵呵,大家想到了吧!是xp_oacreate和sp_oamethod 通过它们执行系统命令的语句我们可以自己给他加上哦,代码如下:
declare @o intexec sp_oacreate 'wscript.shell', @o outexec sp_oamethod @o, 'run', NULL, 'net start telnet'上面那段代码的意思就是通过服务器上的 wscript.shel 来执行net start telnet 开启服务器的telnet接下来呢就是通过FSO对服务器进行文件管理或者直接创建文件并写入数据,呵呵,可以直接写一个xp_cmdshell也给他删除掉,不要让网管发现了。HOHO~~~~完..............(写了这么多可能有先看不明白..SORRY!!)