-
-
[原创]【老树新枝】com接口过uac另类应用
-
发表于:
2019-3-13 10:09
5755
-
一、概述
近日在测试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的结果是
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)