当前位置: 首页 > news >正文

c++ 与windows服务的通讯_Windows操作系统之不带引号的服务路径提权

25232bb66b83cb9c078b307484512e24.png

BINARY_PATH_NAME 如果没有加双引号的话,在启用服务过程中查询路径的时候,遇上空格会造成截断,那么利用思路就出来了,在C:Program Files(程序路径,我本机是安装在C盘)这个目录的同级目录 也就是C: 放置一个Program的程序,启用服务的过程中是不是就加载了这个程序呢?

当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

这可能有点不直观,所以让我们来看一个实际的例子。假设服务配置类似于以下存在bug的示例服务:

C:Program FilesVulnerable ServiceSub Directoryservice.exe

Windows命令解释程序可能会遇到名称中的空格,并且希望通过将字符串包装在引号中来对它们进行转义。在上面的示例中,如果系统运行该服务,它将尝试运行以下可执行文件:

C:Program.exe

C:Program FilesVulnerable.exe

C:Program FilesVulnerable ServiceSub.exe

C:Program FilesVulnerable ServiceSub Directoryservice.exe

为了讲清楚这个漏洞,定义一个名为example.exe的程序,这是一个简单打印出自己名称的正常二进制文件:

#include

void main(int argc, char *argv[])

{

printf("[*] Executed %s", argv[0]);

}

考虑当从命令行通过其绝对路径执行此程序时会发生什么,在引号内:

C:>"C:ExampleSub Directoryexample.exe"

[*] Executed C:ExampleSub Directoryexample.exe

eb29bc263c389992b4dbee0f696b660b.png

C:>

or:

63f8502d33ffeac066004b7eed89c745.png

C:>C:ExampleSub Directoryexample.exe

'C:ExampleSub' is not recognized as an internal or external command, operable program or batch file.

3a8690dfbb29c976c23a7c47857d3bc5.png

C:>

这意味着如果服务路径不加引号,我们可以放置一个与第一个名称相同的恶意二进制文件作为文件系统对象,并在其名称中包含空格,并且当服务尝试执行其二进制文件时会将它运行。我们所需要的只是对路径中目录的写权限。

通过隐藏example.exe来利用上述示例,C:ExampleSub.exe在没有空格的情况下调用上面的示例,如易受攻击的服务:

C:>C:ExampleSub Directoryexample.exe

[*] Executed C:ExampleSub

2ab7486947f65cfba9f1764cd40c2a53.png

C:>

写入我们的木马Sub.exe

成功上线

ff2e46be259a921d6f539c82794e1f31.png

一条命令找到这些错误配置:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:Windows" |findstr /i /v """

d7b5f2f3cb770dd23bee361fb4134012.png

总结:

1、在msf中exploit/windows/local/trusted_service_path,这个模块也可以进行相应的利用

2、比较鸡肋,因为大家都知道C: 目录默认是不让写的,但是大家可以去了解下什么叫Weak File Permissions,能帮助到你进行深一步的提权!

3、对于路径配置的提权,我们所需要的权限只需要能写

相关文章:

  • 10.Spring——框架的AOP
  • 为什么自动关闭_为什么老司机一上车就关掉这个功能?
  • ubuntu安装logisim_Ubuntu server 16.04安装网卡驱动方法
  • 二、C到C++的升级
  • 腐蚀rust研究台抽奖_福世蓝无化学品循环水处理系统 --- 用来控制污垢和腐蚀
  • bat配置JDK环境变量
  • ppt如何旋转流程图_稳准狠!这四款PPT插件的炫酷技能我先抱走了
  • 正确停止线程的方式三 使用Thread类中的内置的中断标记位-----------不熟悉
  • python numpy常用操作_Python numpy的基本操作你一般人都不会
  • option标签中selected属性
  • 地表反射率影响因素_地表反射率计算-flaash.ppt
  • 计蒜客 2018南京网络赛 I Skr ( 回文树 )
  • float相乘后的类型_js中float型相乘出现问题
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • cad灯具图标_这份CAD图例图标合集,必须人手一份!
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • E-HPC支持多队列管理和自动伸缩
  • Js基础知识(一) - 变量
  • passportjs 源码分析
  • PAT A1017 优先队列
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Vue UI框架库开发介绍
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对象管理器(defineProperty)学习笔记
  • 如何使用 JavaScript 解析 URL
  • 设计模式(12)迭代器模式(讲解+应用)
  • 线性表及其算法(java实现)
  • # Apache SeaTunnel 究竟是什么?
  • # 数据结构
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #QT项目实战(天气预报)
  • $ git push -u origin master 推送到远程库出错
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (20050108)又读《平凡的世界》
  • (4)logging(日志模块)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)LINQ之路
  • .cn根服务器被攻击之后
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @31省区市高考时间表来了,祝考试成功
  • @Autowired和@Resource的区别
  • @RequestBody与@ModelAttribute
  • @vue/cli脚手架
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...