渗透(3)
为了防止频繁的sudo su,这里给root改密码,方便之后用root登录进行操作:
永恒之蓝需要用的kali中msf模块里的ms17-010,这里的1号exp会比0号exp适用的版本更老:
首先利用auxiliary进行漏洞的检测判断是否存在这个漏洞,auxiliary模块在第二节中提到了:
这里选用0号exp成功进行拿到shell:
由于永恒之蓝是系统内核级的缓冲区溢出漏洞,所以能直接拿到目标主机的最高权限,这里使用hashdump进行查看目标主机的用户的密码,可以在cmd5网站解密后查看原文:
拿到了最高权限之后这里就能进行之前第四节提到的msf后渗透环节的一系列操作此处不一一赘述
此时可以直接输入shell进入到目标主机的shell,不过会出现乱码:
解决办法:直接输入chcp 65001
,可以发现乱码没了:
1 |
|
可以看到永恒之蓝漏洞可以拿到最高权限,而之前提到的文件上传漏洞拿到的只是普通用户权限,最直观的感受就是普通用户不能通过hashdump
获取目标主机的密码,这里就涉及到了提权,假设目标主机不存在永恒之蓝漏洞仅可以通过文件上传漏洞进行攻击,想看如何提权,请前往下一节。
前言
通过上一节可以看到永恒之蓝漏洞可以拿到最高权限,而之前提到的文件上传漏洞拿到的只是普通用户权限,最直观的感受就是普通用户不能通过hashdump
获取目标主机的密码,这里就涉及到了提权。
权限概述
Windows计算机中常见的权限:
- 用户权限(Users)
- 管理员权限(Administrators)
- 系统权限 (SYSTEM)
- 访客权限 (Guest)
Windows提权路径:
- user ‐‐> administrator
- administrator ‐‐> system
- services ‐‐> system
Linux提权路径:
- user ‐‐‐> root
提权分类
操作系统提权
Windows:MS06-067、MS10-084、MS11-014、MS11-05、MS12-020、MS16032 等
Linux:CVE-2017-7308、CVE-2017-6074、CVE-2017-5123、CVE-2016-9793、CVE-2016-5195 等
应用程序提权
SQL Server、MySQL、Oracle 等
提权方法
本地提权漏洞是指一个本来权限非常低、操作受限制的用户,通过某种条件(例如,通过应用程序漏洞或者系统漏洞)直接提升到系统最高权限。
远程提权是指黑客或者攻击者通过漏洞利用程序,直接获取远程服务器的权限(在远程服务器上必须存在漏洞且未修补或者修补未成功)。
提权条件
1 拥有Webshell/Beacon/Sessions
2 拥有普通用户权限
3 拥有某些软件的账号密码
4 本地或远程服务器上存在漏洞
5 拥有漏洞利用工具代码
Windows内核漏洞提权
1 https://github.com/Ascotbe/Kernelhub //包含大量的Windows系统提权Exp
2 https://github.com/SecWiki/windows‐kernel‐exploits //另一个包含有大量Windows提权Exp的集合(更新到2018年)
3 https://msrc.microsoft.com/update‐guide/zh‐cn //微软应急响应中心发布的漏洞信息集合
4 https://github.com/chroblert/WindowsVulnScan/tree/master //依据当前主机的补丁信息来收集漏洞信息
Windows内核漏洞提权
CVE-2020-0787
这应该是windows系统最方便的提权CVE,直接下载exe文件上传到目标主机后执行即可拿到system权限:地址:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases
直接在目标主机运行即可从普通用户提升到system权限,不过system的shell会在目标主机桌面上弹出不会在远程主机上,这里需要再用远程桌面进行操作:
令牌提权
令牌窃取(Token Theft)是一种Windows上常用的提权攻击技术,攻击者可以通过获取系统中一个高权限进程的安全令牌,然后将其注入到一个低权限进程中,使得低权限进程可以获得高权限进程的访问权限。
令牌分类:
访问令牌(Access Token):表示访问控制操作主体的系统对象;
会话令牌(Session Token):是交互会话中唯一的身份标识符;
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾等。
访问令牌(access token):令牌所包含的信息是与该user账户相关的进程或线程的身份和权限信息。当user登录时,系统通过将user输入的密码与储存在安全数据库中的密码进行对比。若密码正确,系统此时会为user生成一个访问令牌,Windows的访问令牌(AccessToken)有两种类型:
Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)
令牌窃取主要用模拟令牌,通过incognito.exe工具能够获取到已注销用户的token,这里可以利用一个叫烂土豆的漏洞,对应的是MS16‐075漏洞,是本地提权的漏洞,仅针对本地用户,支持将用户权限从administrator提权到system,不能用于域用户。
https://github.com/SecWiki/windows‐kernel‐exploits/tree/master/MS16‐075
利用方法:
1、先拿到administrator权限的shell
meterpreter > getprivs 查看是否具有 SeImpersonate 权限(普通用户一般不具有
或者服务器的cmd下键入以下命令
1 |
|
2、执行烂土豆,模仿安全令牌拿到system权限
1 |
|
Windows系统错误配置漏洞-可信任服务路径漏洞
原理
Trusted Service Paths 漏洞是由系统中的“CreateProcess”函数引起的,并利用了windows文件
路径解析的特性。该漏洞是由于一个服务的可执行文件没有正确的处理所引用的完整路径名,即一个服务的可执行文件的完整路径中含有空格且没有被双引号引起来,那么该服务就存在这个漏洞。
Windows中文件路径解析的特性
例如,有一个文件路径为“C:\Program Files\Some Folder\Service.exe”。那么,对于该路径中
的每一个空格,Windows都会尝试寻找并执行与空格前面的名字相匹配的程序。
如上面的目录为例,Windows会依次尝试确定和执行以下程序:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
可见,最后才确定并执行真正的程序Service.exe。而由于Windows服务通常是以system权限运行的,所以系统在解析服务文件路径中的空格时,也会以system系统权限进行,那么,如果将一个“适当命名”的可执行程序上传到以上所说的受影响的目录中,服务一旦启动或重启,该程序就会以system权限运行了,可见该漏洞利用了服务路径的文件/文件夹的权限。
利用
1、检测目标主机是否存在该漏洞
1 |
|
2、检测对目录程序目录是否有写入权限
1 |
|
3、生成Payload
1 |
|
4、上传Payload
将Payload放置在C:\Program Files (x86)\目录下
5、监听主机端口,
在攻击侧监听主机端口,等待目标主机重启后自动建立shell连接