@@ -15,42 +15,49 @@ def initialize(info = {})
15
15
info ,
16
16
'Name' => 'Microsoft SharePoint Server ToolPane Unauthenticated Remote Code Execution (aka ToolShell)' ,
17
17
'Description' => %q{
18
- This module exploits the authentication bypass vulnerability CVE-2025-53771 (a patch bypass of CVE-2025-49706),
19
- and an unsafe deserialization vulnerability CVE-2025-53770 (a patch bypass of CVE-2025-49704), to achieve
20
- unauthenticated RCE against a vulnerable Microsoft SharePoint Server.
18
+ This module exploits the authentication bypass vulnerabilities CVE-2025-49706 and CVE-2025-53771, and an unsafe
19
+ deserialization vulnerability CVE-2025-49704, to achieve unauthenticated RCE against a vulnerable Microsoft
20
+ SharePoint Server. The vulnerability CVE-2025-53770 was disclosed as being a patch bypass of CVE-2025-49704,
21
+ and as described by the finders, CVE-2025-53770 targets a different endpoint within the /_vti_bin/ URI path.
22
+ As this exploit module does not target the endpoint associated with CVE-2025-53770 (per the original finders),
23
+ we believe this module is best described as exploiting CVE-2025-49704 and not CVE-2025-53770.
21
24
} ,
22
25
'License' => MSF_LICENSE ,
23
26
'Author' => [
24
27
# Discovered CVE-2025-49704 and CVE-2025-49706, demoed at Pwn2Own Berlin 2025.
28
+ # Credited by Microsoft as also discovering CVE-2025-53770 and CVE-2025-53771.
25
29
'Viettel Cyber Security' ,
26
- # Metasploit module, based on the public PoC of the zero-day exploit for CVE-2025-53770 and CVE-2025-53771 .
30
+ # Metasploit module, based on the public PoC of the exploit for CVE-2025-49706 and CVE-2025-49704 .
27
31
'sfewer-r7'
28
- # NOTE: The author attribution for CVE-2025-53770 and CVE-2025-53771 is unclear.
29
32
] ,
30
33
'References' => [
31
34
# Microsoft SharePoint DataSetSurrogateSelector Deserialization of Untrusted Data Remote Code Execution Vulnerability.
32
35
[ 'CVE' , '2025-49704' ] ,
33
36
# Microsoft SharePoint ToolPane Authentication Bypass Vulnerability.
34
37
[ 'CVE' , '2025-49706' ] ,
35
- # Patch bypass for CVE-2025-49704, exploited in-the-wild as a zero-day .
38
+ # Patch bypass for CVE-2025-49704, by targeting a different endpoint within the /_vti_bin/ path .
36
39
[ 'CVE' , '2025-53770' ] ,
37
- # Patch bypass for CVE-2025-49706, exploited in-the-wild as a zero-day .
40
+ # Patch bypass for CVE-2025-49706.
38
41
[ 'CVE' , '2025-53771' ] ,
39
42
# Technical analysis of CVE-2025-49704 and CVE-2025-49706 by the original finder, Dinh Ho Anh Khoa (Viettel Cyber Security).
40
43
[ 'URL' , 'https://blog.viettelcybersecurity.com/sharepoint-toolshell/' ] ,
41
- # LeakIX blog which captured the malicious request for the in-the-wild exploit.
44
+ # LeakIX blog which captured the malicious request for the in-the-wild exploit for CVE-2025-49706, CVE-2025-53771, and CVE-2025-49704 .
42
45
[ 'URL' , 'https://blog.leakix.net/2025/07/using-their-own-weapons-for-defense-a-sharepoint-story/' ] ,
43
46
# Technical analysis of CVE-2025-49704, CVE-2025-49706, CVE-2025-53770 and CVE-2025-53771 by Kaspersky.
44
47
[ 'URL' , 'https://securelist.com/toolshell-explained/' ] ,
45
48
# ZDI advisories for CVE-2025-49704 and CVE-2025-49706, discovered by Viettel Cyber Security.
46
49
[ 'URL' , 'https://www.zerodayinitiative.com/advisories/ZDI-25-580/' ] ,
47
50
[ 'URL' , 'https://www.zerodayinitiative.com/advisories/ZDI-25-581/' ] ,
48
- # Microsoft advisories for CVE-2025-53770 and CVE-2025-53771, caught in-the-wild.
51
+ # Microsoft advisories for CVE-2025-49704 and CVE-2025-49706.
52
+ [ 'URL' , 'https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-49704' ] ,
53
+ [ 'URL' , 'https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-49706' ] ,
54
+ # Microsoft advisories for CVE-2025-53770 and CVE-2025-53771.
49
55
[ 'URL' , 'https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53770' ] ,
50
56
[ 'URL' , 'https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53771' ] ,
51
57
# Microsoft Guidance.
58
+ [ 'URL' , 'https://www.microsoft.com/en-us/security/blog/2025/07/22/disrupting-active-exploitation-of-on-premises-sharepoint-vulnerabilities/' ] ,
52
59
[ 'URL' , 'https://msrc.microsoft.com/blog/2025/07/customer-guidance-for-sharepoint-vulnerability-cve-2025-53770/' ] ,
53
- # The zero-day exploit for CVE-2025-53770 and CVE-2025-53771 , published July 21, 2025.
60
+ # The zero-day exploit for CVE-2025-49704, CVE-2025-49706 , published July 21, 2025.
54
61
[ 'URL' , 'https://gist.github.com/gboddin/6374c04f84b58cef050f5f4ecf43d501' ] ,
55
62
# Markus Wulftange (CODE WHITE GmbH) reproduced CVE-2025-49704 and CVE-2025-49706, circa July 14, 2025.
56
63
[ 'URL' , 'https://x.com/codewhitesec/status/1944743478350557232' ] ,
@@ -59,7 +66,7 @@ def initialize(info = {})
59
66
# Prior work from Steven Seeley on a similar DataSet gadget chain for SharePoint.
60
67
[ 'URL' , 'https://srcincite.io/blog/2020/07/20/sharepoint-and-pwn-remote-code-execution-against-sharepoint-server-abusing-dataset.html' ]
61
68
] ,
62
- 'DisclosureDate' => '2025-07-19 ' , # Disclosure date for CVE-2025-53770 and CVE-2025-53771 .
69
+ 'DisclosureDate' => '2025-07-08 ' , # Disclosure date for CVE-2025-49704 and CVE-2025-49706 .
63
70
'Platform' => [ 'win' ] ,
64
71
'Arch' => [ ARCH_CMD ] ,
65
72
'Privileged' => false , # Executes as the SharePoint site user.
@@ -112,6 +119,8 @@ def check
112
119
# compare the target version against the RTM version (i.e. the first version of an edition) and the version *before*
113
120
# the patch for CVE-2025-53770 and CVE-2025-53771 (which supersedes patches for CVE-2025-49704 and CVE-2025-49706
114
121
# from July 2025).
122
+ # Note: A SharePoint server that has the patch for CVE-2025-49704 applied, may still be vulnerable if a SharePoint
123
+ # configuration update has not also manually occurred.
115
124
# https://learn.microsoft.com/en-us/sharepoint/product-servicing-policy/updated-product-servicing-policy-for-sharepoint-2019
116
125
# https://learn.microsoft.com/en-us/officeupdates/sharepoint-updates
117
126
0 commit comments