一、什么是提权
提权是指通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。
- windows:user >> administrator || system
- linux:user >> root
二、提权方式
- 系统漏洞提权
- 数据库提权
- 系统配置错误提权
- 获取高权限账号提权
- webserver漏洞提权
三、系统漏洞提权
系统漏洞提权一般就是利用系统自身缺陷,使用shellcode来提升权限。为了使用方便,windows和linux系统均有提权用的可执行文件。
- windows的提权exp一般格式为MS11080.exe;
- linux的提权exp一般格式为2.6.18-194或2.6.18.c;
1. windows提权
windows系统漏洞微软的漏洞编号命名格式为:MS08067;
(1)其中MS是Microsoft的缩写,固定格式;
(2)其中08表示年份,即2008年发布的漏洞;
(3)其中067表示顺序,即当年度发布的第67个漏洞。
提权exp使用方法
使exp执行即可,一般情况下是使用cmd.exe来执行。在日常渗透测试过程中,我们常常会先是拿到webshell再进行提权。所以提权脚本也常常会被在webshell中运行使用。
如何知道使用哪个exp来提权
使用systeminfo命令或查看补丁目录,查看补丁记录,来判断有哪个补丁没打,然后使用相对应的exp进行提权。
提权过程
(1)先找可写目录;
(2)上传cmd.exe、提权exp等工具;
(3)使用exp进行提权,加账号等操作。
2.linux提权
linux系统漏洞的exp一般按照内核版本来命名:2.6.18-194或2.6.18.c
- 2.6.18-194类型的可以直接执行;
- 2.6.18.c类型的需要编译后运行、提权;
- 也有少部分exp是按照发行版版本命名。
提权exp使用方法
使用exp执行即可,一般情况下linux的本地提权要用nc反弹出来,因为linux下提升权限后得到的是交互式shell,需反弹才能进行下一步命令的执行。
三、数据库提权(主要是mysql)
数据库提权就是利用执行数据库语句、利用数据库函数等方式提升服务器用户的权限,借助数据库自身高权限运行的优势来执行操作系统命令。
- mysql的提权一般是使用自定义函数提权或mof提权;
- mssql的提权一般是调用xp_cmdshell函数来提权;
- Oracle通常利用java扩展来执行。
数据库提权首先我们要先有访问数据库的特定功能的权限,所以通常我们拿到webshell之后要去网站目录去找数据库连接文件,常在一些配置文件中。
- sap/php:com.asp.config.asp.db.asp
- aspx:web.config
- java:DBUtile.class/conn.jsp/jdbc.properties/ApplicationContext.xml/中间件连接池配置文件
1. mysql提权
- UDF(用户定义函数)是一类对mysql服务器功能进行扩充的代码,通常是用C或C++写的;
- 通过添加新函数,性质就像使用本地mysql函数abs()或concat()。当你需要扩展mysql服务器功能时,UDF通常是最好的选择;
- 同时UDF也是黑客在拥有低权限mysql账号是比较好用的一种提权方法。
2. mysql提权的使用场景
(1)目标主机系统是windows(win2000、XP、win2003)
(2)拥有该主机mysql中的某个用户账号,该账号需要有对mysql的insert和delete权限
(3)最好mysql是默认启动的权限(system)
3. mysql提权的方法
(1)获取当前mysql的一个数据库连接信息,通常包含地址、端口、账号、密码、库名等五个信息;
(2)把udf专用的webshell传到服务器上,访问并进行数据库连接;
(3)连接成功后,导出dll文件。
导出dll文件
- mysql版本低于5.0,导出路径随意;
- mysql版本在5.0到5.1之间,则需要导出至目标服务器的系统目录(如system32),否则在下一步操作中你会看到 “no paths allowed for shared library” 错误
- mysql版本高于5.1,需要导出dll到插件路径,例如:D:\ProgramFiles\MySQL\MySQL Server 5.1.3\lib\plugin
使用mysql语句创建自定义函数
语法:
create function 函数名 returns string soname '导出的dll路径';
create function cmdshell returns string soname 'udf.dll';
功能函数说明:
- cmdshell执行cmd
- downloader 下载者,到网上下载指定文件并保存到指定目录
- open3389 通用开3389终端服务,可指定端口(不改端口无需重启)
- backshell 反弹shell
- ProcessView 枚举系统进程
- regread 读注册表
- regwrite 写注册表
- shut 关机、注销、重启
- about 说明与帮助函数
sql语句调用定义的函数
select 创建的函数名('参数列表');
select cmdshell("net user test test/add");
-- 创建一个用户test,密码为test
函数调用完成后要把生成的dll和创建的函数删掉(先删除函数再删除dll)
drop function 创建的函数名;
drop function cmdshell;
五、获取windows管理员账号
下载系统的sam文件,("%windir%system32\config")
然后用samlnside等软件进行破解,只要能拿到并且肯花时间,就能破解
六、读取操作系统账户密码
渗透过程中,为了下一步渗透,我们常常会需要管理员的操作系统密码、数据库密码、常用密码等信息。获取操作系统密码已经有很多工具可以办到了,那么,为什么我们可以利用工具轻松获取到操作系统的常用密码呢?
通常是从内存里抓取active账号的lm hash ntlm hash
七、获取浏览器中保存下来的密码
chrome://settings/passwords
关注我,带你一起写bug
warning :未经授权,不得转载
有问题的小伙伴请在下方留言,喜欢就点个赞吧