首页
社区
课程
招聘
[原创]【老树新枝】com接口过uac另类应用
发表于: 2019-3-13 10:09 5754

[原创]【老树新枝】com接口过uac另类应用

2019-3-13 10:09
5754

一、概述

         近日在测试COM串链时发现,利用windows的程序与管理功能卸载某些进程时,意外的将我放在根目录下用来测试的Program.exe执行起来。

    

    

很明显微软在处理这里的时候没有严格的传递命令行,导致路径被空格截断,使得空格后面的路径被当作命令行执行。

测试环境

Win7 x86 sp1、 win10 x86 16193

测试工具

Procmon、procxp、ida、windbg等

二、COM接口绕过UAC的再利用

本次的方法和之前UACme提到到的利用控制面板启动卸载程序绕UAC的方法类似, 参考https://www.freebuf.com/vuls/183914.html

2.1原理

参考之前的分析,我们之间将断点设置在explorer.exe的Kernel32!CreateProcessW上,从控制面板中执行卸载程序,这时触发中断

可以看到是调用appwiz!CARPUninstallStringLauncher::LaunchUninstallStringAndWait接口进行提取操作

然后我们来看看CreateProcessW的参数

可以很明显的看到,lpApplicationName参数已经被设成为D:\Program.exe,并且lpCommandLine也被设置为"D:\Program.exe" Files\*\*\UnInstaller.exe

我们来看看LaunchUninstallStringAndWait这个函数的实现。

调试后可以发现lpCommandLine与lpApplicationName都被SHEvaluateSystemCommandTemplate函数转换过,那么F5一下切换到伪代码看看。

那么SHEvaluateSystemCommandTemplate函数是做什么的?查询MSDN的结果是


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (5)
雪    币: 465
活跃值: (191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
之前安与此生提出过,但在win10 1803后就无效了
2019-7-26 17:39
0
雪    币: 918
活跃值: (1875)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
gaomingwei 之前安与此生提出过,但在win10 1803后就无效了
看完啊,这里是利用现有的注册表路径,避免了之前需要写注册表路径导致被hips监控,本质是微软api解析路径的问题
2019-7-26 17:51
0
雪    币: 218
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主这贴其实跟uac没啥关系。我觉得。。。

。c:\program.exe 其实就是800年前的玩法。。没啥用得。
昨天我试了,c:\program不带扩展名也能玩
2019-7-27 20:52
0
雪    币: 918
活跃值: (1875)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
wanjumuma 楼主这贴其实跟uac没啥关系。我觉得。。。 。c:\program.exe 其实就是800年前的玩法。。没啥用得。 昨天我试了,c:\program不带扩展名也能玩
c盘下的反而不行...你倒是看全啊,SHEvaluateSystemCommandTemplate这个函数会校验c盘下的program file路径,对其他盘符没做校验,主要是说这个函数的处理漏洞,确实和uac没啥关系
2019-7-29 10:57
0
雪    币: 218
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
wuxiwudi c盘下的反而不行...你倒是看全啊,SHEvaluateSystemCommandTemplate这个函数会校验c盘下的program file路径,对其他盘符没做校验,主要是说这个函数的处理漏洞,确 ...
多谢提醒,我亲测了。C盘确实不行。

没注意到SHEvaluateSystemCommandTemplate这一段,抱歉。。。
2019-7-29 12:05
1
游客
登录 | 注册 方可回帖
返回
//