πXML external entity (XXE) injection
KhΓ‘i niα»m, cΓ‘c lα» hα»ng vΓ bαΊ£o vα»
ChΓΊng ta sαΊ½ xem doc trΖ°α»c khi bΖ°α»c vΓ o thα»±c hΓ nh lab.

XML lΓ ngΓ΄n ngα»― ΔΓ‘nh dαΊ₯u mα» rα»ng, nΓ³ Δược sα» dα»₯ng rα»ng rΓ£i, Δược phΓ‘t triα»n Δα» lΖ°u truwxx vΓ truyα»n dα»― liα»u. Hiα»n nay cΓ³ rαΊ₯t nhiα»u loαΊ‘i tΓ i liα»u sα» dα»₯ng Δα»nh dαΊ‘ng XML nhΖ° rtf, pdf, tα»p hΓ¬nh αΊ£nh (svg) hay cΓ‘c file cαΊ₯u hΓ¬nh.
CαΊ₯u trΓΊc XML lΓ cΓ‘c thΓ nh phαΊ§n cΖ‘ bαΊ£n cα»§a ngΓ΄n ngα»― ΔΓ‘nh dαΊ₯u tΓ i liα»u XML (Extensible Markup Language). XML Δược sα» dα»₯ng Δα» mΓ΄ tαΊ£ vΓ trao Δα»i dα»― liα»u giα»―a cΓ‘c α»©ng dα»₯ng khΓ‘c nhau. XML sα» dα»₯ng cΓ‘c thαΊ» Δα» xΓ‘c Δα»nh cαΊ₯u trΓΊc cα»§a tΓ i liα»u vΓ nα»i dung cα»§a nΓ³.
CΓ‘c thΓ nh phαΊ§n cΖ‘ bαΊ£n cα»§a cαΊ₯u trΓΊc XML bao gα»m:
Khai bΓ‘o XML: Khai bΓ‘o XML lΓ mα»t chuα»i Δα»nh dαΊ‘ng Δα» chα» ra rαΊ±ng tΓ i liα»u lΓ mα»t tΓ i liα»u XML. Khai bΓ‘o XML phαΊ£i Δược ΔαΊ·t α» ΔαΊ§u cα»§a tΓ i liα»u vΓ cΓ³ Δα»nh dαΊ‘ng nhΖ° sau:
ThαΊ»: ThαΊ» lΓ cΓ‘c khα»i xΓ’y dα»±ng chΓnh cα»§a tΓ i liα»u XML. ChΓΊng Δược sα» dα»₯ng Δα» xΓ‘c Δα»nh nα»i dung cα»§a tΓ i liα»u. Mα»t thαΊ» bao gα»m thαΊ» mα», thαΊ» ΔΓ³ng vΓ nα»i dung nαΊ±m giα»―a chΓΊng. VΓ dα»₯:
Thuα»c tΓnh: Thuα»c tΓnh Δược sα» dα»₯ng Δα» cung cαΊ₯p thΓ΄ng tin bα» sung vα» mα»t phαΊ§n tα». ChΓΊng cΓ³ thα» Δược sα» dα»₯ng Δα» xΓ‘c Δα»nh cΓ‘c thuα»c tΓnh cα»§a phαΊ§n tα» hoαΊ·c Δα» truyα»n tαΊ£i thΓ΄ng tin bα» sung. Thuα»c tΓnh cΓ³ thα» Δược xΓ‘c Δα»nh trong thαΊ» mα» cα»§a phαΊ§n tα». VΓ dα»₯:
ChΓΊ thΓch: ChΓΊ thΓch Δược sα» dα»₯ng Δα» thΓͺm thΓ΄ng tin giαΊ£i thΓch cho tΓ i liα»u XML. ChΓΊ thΓch bαΊ―t ΔαΊ§u bαΊ±ng cαΊ·p kΓ½ tα»± "<!--". ChΓΊ thΓch khΓ΄ng αΊ£nh hΖ°α»ng ΔαΊΏn nα»i dung cα»§a tΓ i liα»u. VΓ dα»₯:
KhΓ΄ng gian tΓͺn: KhΓ΄ng gian tΓͺn Δược sα» dα»₯ng Δα» phΓ’n biα»t cΓ‘c phαΊ§n tα» cΓ³ cΓΉng tΓͺn nhΖ°ng thuα»c cΓ‘c khΓ΄ng gian tΓͺn khΓ‘c nhau. KhΓ΄ng gian tΓͺn cΓ³ thα» Δược xΓ‘c Δα»nh trong khai bΓ‘o XML hoαΊ·c trong thαΊ» mα» cα»§a phαΊ§n tα». VΓ dα»₯:
ΔΓ’y lΓ cαΊ₯u trΓΊc cΖ‘ bαΊ£n cα»§a tΓ i liα»u XML, cho phΓ©p xΓ‘c Δα»nh nα»i dung vΓ cαΊ₯u trΓΊc cα»§a tΓ i liα»u, cΕ©ng nhΖ° thΓͺm thΓ΄ng tin bα» sung vα» dα»― liα»u mΓ nΓ³ chα»©a.
XML Document Type Definition (DTD) lΓ mα»t tαΊp tin vΔn bαΊ£n Δα»nh nghΔ©a cαΊ₯u trΓΊc, cΓ‘c phαΊ§n tα» vΓ thuα»c tΓnh cα»§a mα»t tΓ i liα»u XML. DTD Δược sα» dα»₯ng Δα» xΓ‘c Δα»nh cΓ‘ch mΓ cΓ‘c phαΊ§n tα» vΓ thuα»c tΓnh phαΊ£i Δược sα» dα»₯ng trong tΓ i liα»u XML, cΕ©ng nhΖ° cΓ‘c quy tαΊ―c mΓ phαΊ£i tuΓ’n thα»§ khi tαΊ‘o tΓ i liα»u XML.
VΓ dα»₯, ΔoαΊ‘n mΓ£ XML sau ΔΓ’y sα» dα»₯ng mα»t DTD Δα» Δα»nh nghΔ©a cαΊ₯u trΓΊc cα»§a mα»t tΓ i liα»u XML ΔΖ‘n giαΊ£n:
Trong vΓ dα»₯ nΓ y, DTD Δược Δα»nh nghΔ©a bΓͺn trong khai bΓ‘o DOCTYPE. NΓ³ Δα»nh nghΔ©a rαΊ±ng tΓ i liα»u XML phαΊ£i chα»©a ba phαΊ§n tα»: "title", "author" vΓ "content", theo thα»© tα»± nhΖ° vαΊy. Mα»i phαΊ§n tα» nΓ y chα» cΓ³ thα» chα»©a dα»― liα»u vΔn bαΊ£n, Δược Δα»nh nghΔ©a bαΊ±ng cΓ‘ch sα» dα»₯ng kΓ½ tα»± ΔαΊ‘i diα»n #PCDATA.
Δα» xα» lΓ½ Δược file xml, mα»i α»©ng dα»₯ng Δα»u cαΊ§n phαΊ£i cΓ³ mα»t XML parser (cΓ²n Δược gα»i lΓ XML processor) Δα» xα» lΓ½ file xml vΓ ΔΖ°a ra output. Khi chΓΊng ta khai bΓ‘o mα»t entity, parser sαΊ½ tα»± Δα»ng thay thαΊΏ giΓ‘ trα» cα»§a entity vΓ o nΖ‘i entity Δược khi bΓ‘o.
Request:
Response:
ChΓΊng ta cΓ³ thα» thαΊ₯y trong phαΊ§n DOCTYPE declaration, ngoΓ i khai bΓ‘o nhα»―ng elements , nΓ³ khai bΓ‘o thΓͺm mα»t URI (trong XML thΓ¬ URI Δược hiα»u lΓ mα»t system identifier) trα» ΔαΊΏn file c:/boot.ini. External entity Δược ΔαΊ·t tΓͺn bar vΓ Δược chα» Δα»nh trαΊ£ vα» thΓ΄ng qua <foo>&bar;</foo>
Vα»i XXE attack, tΓ΄i sαΊ½ cΓ³ thα» gαΊ·p cΓ‘c dαΊ‘ng phα» biαΊΏn sau:
Khai thΓ‘c XXE Δα» trΓch xuαΊ₯t file: Δα»nh nghΔ©a external entity chα»©a nα»i dung cα»§a 1 file vΓ trαΊ£ vα» trong response;
Khai thΓ‘c XXE Δα» thα»±c thi SSRF attacks: Δα»nh nghΔ©a external entity dα»±a vΓ o URL ΔαΊΏn back-end system;
Khai thΓ‘c blind XXE Δα» hα»t dα»― liα»u theo kiα»u out-of-band: Truyα»n tαΊ£i dα»― liα»u nhαΊ‘y cαΊ£m tα»« server ΔαΊΏn hα» thα»ng mΓ attacker cΓ³ thα» kiα»m soΓ‘t;
Khai thΓ‘c blind XXE Δα» trΓch xuαΊ₯t dα»― liα»u thΓ΄ng qua thΓ΄ng bΓ‘o lα»i: LΓ m phΓ‘t sinh parsing error message chα»©a thΓ΄ng tin nhαΊ‘y cαΊ£m.
HαΊ§u nhΖ° tαΊ₯t cαΊ£ cΓ‘c lα» hα»ng XXE phΓ‘t sinh do thΖ° viα»n phΓ’n tΓch cΓΊ phΓ‘p XML cα»§a α»©ng dα»₯ng hα» trợ cΓ‘c tΓnh nΔng XML nguy hiα»m tiα»m αΊ©n mΓ α»©ng dα»₯ng khΓ΄ng cαΊ§n hoαΊ·c khΓ΄ng cΓ³ Γ½ Δα»nh sα» dα»₯ng. CΓ‘ch dα» nhαΊ₯t vΓ hiα»u quαΊ£ nhαΊ₯t Δα» ngΔn chαΊ·n cΓ‘c cuα»c tαΊ₯n cΓ΄ng cα»§a XXE lΓ tαΊ―t cΓ‘c tΓnh nΔng ΔΓ³. NΓ³i chung, chα» cαΊ§n vΓ΄ hiα»u hΓ³a Δα» phΓ’n giαΊ£i cα»§a cΓ‘c thα»±c thα» bΓͺn ngoΓ i vΓ vΓ΄ hiα»u hΓ³a hα» trợ cho XInclude lΓ Δα»§. Δiα»u nΓ y thΖ°α»ng cΓ³ thα» Δược thα»±c hiα»n thΓ΄ng qua cΓ‘c tΓΉy chα»n cαΊ₯u hΓ¬nh hoαΊ·c bαΊ±ng cΓ‘ch ghi ΔΓ¨ hΓ nh vi mαΊ·c Δα»nh theo chΖ°Ζ‘ng trΓ¬nh. Tham khαΊ£o tΓ i liα»u vα» thΖ° viα»n phΓ’n tΓch cΓΊ phΓ‘p XML hoαΊ·c API cα»§a bαΊ‘n Δα» biαΊΏt chi tiαΊΏt vα» cΓ‘ch tαΊ―t cΓ‘c chα»©c nΔng khΓ΄ng cαΊ§n thiαΊΏt.
Lab
ChΓΊng ta Δα» khi Γ½ khi truy cαΊp trang web cΓ³ mα»t nΓΊt check xem sα» lượng sαΊ£n phαΊ©m cΓ²n lαΊ‘i lΓ bao nhiΓͺu.


DΓΉng burp suite Δα» check thΓ¬ chΓΊng ta sαΊ½ cΓ³ req vΓ res nhΖ° trΓͺn. VΓ chΓΊng ta tα»± ΔαΊ·t ra giαΊ£i thuyαΊΏt rαΊ±ng nαΊΏu thΓͺm mα»t external entity vΓ o giα»―a XML declaration vΓ stock element.
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
Sau ΔΓ³ thay 1 thΓ nh &xxe, kiα»u nhΖ° nΓ y:
Solve:

NhΖ° tiΓͺu Δα» α» ΔΓ’y chΓΊng ta cαΊ§n phαΊ£i khai thΓ‘c lα» hα»ng XXE thΓ΄ng qua SSRF, nαΊΏu chΖ°a biαΊΏt tα»i ssrf thΓ¬ cΓ³ thα» xem α» bΓ i gαΊ§n nhαΊ₯t trong mα»₯c server-side.

ChΓΊng ta sαΊ½ vαΊ«n dΓΉng burp suite Δα» bαΊ―t cΓ‘c request:


Mα»i lαΊ§n req thΓ¬ mα»i nΓ³ sαΊ½ bΓ‘o lα»i kΓ¨m theo endpoint mΓ chΓΊng ta cαΊ§n. Cho tα»i khi lαΊ₯y Δược full dα»― liα»u tαΊ‘i endpoint cuα»i.

XInclude lΓ mα»t tiΓͺu chuαΊ©n cα»§a W3C Δược sα» dα»₯ng trong tΓ i liα»u XML Δα» tham chiαΊΏu ΔαΊΏn cΓ‘c phαΊ§n khΓ‘c cα»§a tΓ i liα»u hoαΊ·c cΓ‘c tΓ i liα»u khΓ‘c vΓ chΓ¨n chΓΊng vΓ o tΓ i liα»u hiα»n tαΊ‘i. XInclude cho phΓ©p tΓ‘ch tΓ i liα»u thΓ nh cΓ‘c phαΊ§n nhα» hΖ‘n Δα» quαΊ£n lΓ½ vΓ tΓ‘i sα» dα»₯ng nΓ³ trong cΓ‘c tΓ i liα»u khΓ‘c.
XInclude Δược Δα»nh nghΔ©a bαΊ±ng cΓ‘c phαΊ§n tα» vΓ thuα»c tΓnh mα»i, bao gα»m:
<xi:include> phαΊ§n tα»: Δược sα» dα»₯ng Δα» tham chiαΊΏu ΔαΊΏn tΓ i liα»u hoαΊ·c phαΊ§n cα»§a tΓ i liα»u khΓ‘c vΓ chΓ¨n chΓΊng vΓ o tΓ i liα»u hiα»n tαΊ‘i. NΓ³ cΓ³ thα» cΓ³ mα»t sα» thuα»c tΓnh, bao gα»m "href" Δα» chα» Δα»nh ΔΖ°α»ng dαΊ«n ΔαΊΏn tΓ i liα»u Δược chΓ¨n, "parse" Δα» chα» Δα»nh cΓ‘ch tΓ i liα»u Δược phΓ’n tΓch, vΓ "xpointer" Δα» chα» Δα»nh phαΊ§n cα»§a tΓ i liα»u Δược chΓ¨n.
<xi:fallback> phαΊ§n tα»: Δược sα» dα»₯ng Δα» Δα»nh nghΔ©a mα»t phαΊ§n tα» dα»± phΓ²ng nαΊΏu tΓ i liα»u khΓ΄ng hα» trợ XInclude.
VΓ dα»₯, ΔoαΊ‘n mΓ£ sau ΔΓ’y minh hα»a cΓ‘ch sα» dα»₯ng XInclude Δα» chΓ¨n mα»t tΓ i liα»u XML vΓ o tΓ i liα»u hiα»n tαΊ‘i:
Trong ΔΓ³, phαΊ§n tα» <xi:include> Δược sα» dα»₯ng Δα» chΓ¨n tΓ i liα»u XML Δược chα» Δα»nh trong thuα»c tΓnh "href" vΓ o tΓ i liα»u hiα»n tαΊ‘i. Thuα»c tΓnh "parse" Δược sα» dα»₯ng Δα» chα» Δα»nh rαΊ±ng tΓ i liα»u Δược chΓ¨n cΕ©ng lΓ mα»t tΓ i liα»u XML.

Vα»i lab tiαΊΏp theo chΓΊng ta thαΊ₯y Δược lΓΊc nΓ y α» req truyα»n Δi dα»― liα»u vα»i tham sα» chα»© khΓ΄ng phαΊ£i xml. Tα»± hα»i rαΊ±ng cΓ³ thα» chΓ¨n Δược ΔoαΊ‘n nΓ y vΓ o productId khΓ΄ng?

ΔoαΊ‘n mΓ£ XML trΓͺn chα»©a mα»t phαΊ§n tα» XInclude tham chiαΊΏu ΔαΊΏn mα»t tΓ i nguyΓͺn bΓͺn ngoΓ i bαΊ±ng cΓ‘ch sα» dα»₯ng mα»t Δα»a chα» file URI. Cα»₯ thα», phαΊ§n tα» "xi:include" xΓ‘c Δα»nh rαΊ±ng nΓ³ muα»n bao gα»m nα»i dung cα»§a mα»t tα»p tin nαΊ±m tαΊ‘i "/etc/passwd" trΓͺn hα» thα»ng tα»p tin cα»₯c bα». Thuα»c tΓnh "parse" Δược ΔαΊ·t thΓ nh "text", cho biαΊΏt rαΊ±ng tα»p Δược bao gα»m sαΊ½ Δược xα» lΓ½ nhΖ° vΔn bαΊ£n thuαΊ§n tΓΊy chα»© khΓ΄ng phαΊ£i lΓ mα»t tΓ i liα»u XML.
Mα»i mα»₯c cα»§a bΓ i nΓ y Δα»u cΓ³ Δα» lαΊ‘i cmt kΓ¨m theo tαΊ£i mα»t file avatar, chΓΊng ta sαΊ½ khai thΓ‘c lα» hα»ng XXE qua upload
TrΖ°α»c hαΊΏt chΓΊng ta cαΊ§n tαΊ£i mα»t file αΊ£nh Δα»nh dαΊ‘ng svg vα» Δα» up lΓͺn.

Sau khi upload sαΊ½ nhΖ° nΓ y, sau ΔΓ³ vΓ o burp suite vΓ chuyα»n sang chαΊΏ Δα» repeater vΓ chα» sα»a ΔoαΊ‘n svg thΓ nh nhΖ° nΓ y:



BΓ i nΓ y cΕ©ng giα»ng cΓ‘c bΓ i khΓ‘c nhΖ°ng nhΖ° tiΓͺu Δα» thΓ¬ chΓΊng ta khΓ΄ng nhαΊn Δược kαΊΏt quαΊ£. VΓ vαΊ₯n Δα» α» ΔΓ’y thα» xem nΓ³ cΓ³ tΖ°Ζ‘ng tΓ‘c vα»i mα»t domain bΓͺn ngoΓ i khΓ΄ng?


TiαΊΏp theo chΓΊng ta sαΊ½ khai thΓ‘c XXE thΓ΄ng qua XML parameter entities. NαΊΏu chΖ°a hiα»u nΓ³ lΓ gΓ¬ thΓ¬ ΔαΊ‘i khΓ‘i:
XML parameter entities lΓ mα»t loαΊ‘i thα»±c thα» trong XML Δược sα» dα»₯ng Δα» Δα»nh nghΔ©a cΓ‘c tham sα» cΓ³ thα» Δược sα» dα»₯ng trong nα»i dung cα»§a tΓ i liα»u XML.
Mα»t parameter entity Δược khai bΓ‘o bαΊ±ng cΓ‘ch sα» dα»₯ng cαΊ·p kΓ½ tα»± % vΓ ;. Δα» sα» dα»₯ng mα»t parameter entity, bαΊ‘n cαΊ§n ΔαΊ·t tΓͺn cα»§a nΓ³ giα»―a cαΊ·p dαΊ₯u & vΓ ;.
VΓ dα»₯, ta cΓ³ thα» Δα»nh nghΔ©a mα»t parameter entity companyname nhΖ° sau:
Sau ΔΓ³, ta cΓ³ thα» sα» dα»₯ng parameter entity nΓ y trong nα»i dung cα»§a tΓ i liα»u XML nhΖ° sau:
Vα»i lab nΓ y thΓ¬ cΓ‘ch khai thΓ‘c XXE vα»i entity thΓ΄ng thΖ°α»ng thΓ¬ khΓ΄ng thα» vαΊy sα» dα»₯ng parameter entity.


α» hai lab trΓͺn Blind XXE thΓ¬ nΓ³ hΖ‘i nα»a nαΊ‘c nα»a mα»‘ chΖ°a khai thΓ‘c lαΊ₯y dα»― liα»u Δược gΓ¬, thΓ¬ trong lab nΓ y chΓΊng ta sαΊ½ leak data mΓ‘y chα»§ ra vΓ gα»i vα» server cα»§a chΓΊng ta bαΊ±ng cΓ‘ch tαΊ‘o mα»t file DTD.
TαΊn dα»₯ng lα» hα»ng XXE mΓΉ Δα» lαΊ₯y dα»― liα»u ra khα»i hα» thα»ng thΓ΄ng qua kα»Ή thuαΊt out-of-band PhΓ‘t hiα»n mα»t lα» hα»ng XXE mΓΉ thΓ΄ng qua kα»Ή thuαΊt out-of-band lΓ Δiα»u quan trα»ng, nhΖ°ng nΓ³ chΖ°a thα»±c sα»± cho thαΊ₯y cΓ‘ch lα» hα»ng cΓ³ thα» bα» khai thΓ‘c. Δiα»u mΓ kαΊ» tαΊ₯n cΓ΄ng thα»±c sα»± muα»n ΔαΊ‘t Δược lΓ lαΊ₯y ra dα»― liα»u nhαΊ‘y cαΊ£m. Δiα»u nΓ y cΓ³ thα» Δược thα»±c hiα»n thΓ΄ng qua mα»t lα» hα»ng XXE mΓΉ, nhΖ°ng nΓ³ ΔΓ²i hα»i kαΊ» tαΊ₯n cΓ΄ng phαΊ£i lΖ°u trα»― DTD Δα»c hαΊ‘i trΓͺn mα»t hα» thα»ng mΓ hα» kiα»m soΓ‘t, sau ΔΓ³ triα»u gα»i DTD ngoαΊ‘i vi tα»« XXE payload in-band.
Mα»t vΓ dα»₯ vα» DTD Δα»c hαΊ‘i Δα» lαΊ₯y nα»i dung cα»§a file /etc/passwd nhΖ° sau:
DTD nΓ y thα»±c hiα»n cΓ‘c bΖ°α»c sau:
Δα»nh nghΔ©a mα»t thα»±c thα» tham sα» XML cΓ³ tΓͺn lΓ file, chα»©a nα»i dung cα»§a file /etc/passwd.
Δα»nh nghΔ©a mα»t thα»±c thα» tham sα» XML cΓ³ tΓͺn lΓ eval, chα»©a mα»t khai bΓ‘o Δα»ng cα»§a thα»±c thα» tham sα» XML khΓ‘c cΓ³ tΓͺn exfiltrate. Thα»±c thα» exfiltrate sαΊ½ Δược ΔΓ‘nh giΓ‘ bαΊ±ng cΓ‘ch thα»±c hiα»n mα»t yΓͺu cαΊ§u HTTP ΔαΊΏn mΓ‘y chα»§ web cα»§a kαΊ» tαΊ₯n cΓ΄ng chα»©a giΓ‘ trα» cα»§a thα»±c thα» file trong chuα»i truy vαΊ₯n URL.
Sα» dα»₯ng thα»±c thα» eval, Δiα»u nΓ y khiαΊΏn cho khai bΓ‘o Δα»ng cα»§a thα»±c thα» exfiltrate Δược thα»±c hiα»n.
Sα» dα»₯ng thα»±c thα» exfiltrate, Δα» giΓ‘ trα» cα»§a nΓ³ Δược ΔΓ‘nh giΓ‘ bαΊ±ng cΓ‘ch yΓͺu cαΊ§u URL Δược chα» Δα»nh.
KαΊ» tαΊ₯n cΓ΄ng phαΊ£i lΖ°u trα»― DTD Δα»c hαΊ‘i trΓͺn mα»t hα» thα»ng mΓ hα» kiα»m soΓ‘t, thΖ°α»ng lΓ tαΊ£i nΓ³ lΓͺn mΓ‘y chα»§ web cα»§a mΓ¬nh. VΓ dα»₯, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» phα»₯c vα»₯ DTD Δα»c hαΊ‘i tαΊ‘i URL sau:
http://web-attacker.com/malicious.dtd
Cuα»i cΓΉng, kαΊ» tαΊ₯n cΓ΄ng phαΊ£i gα»i XXE payload sau ΔαΊΏn α»©ng dα»₯ng dα» bα» tαΊ₯n cΓ΄ng:
Payload XXE nΓ y khai bΓ‘o mα»t thα»±c thα» tham sα» XML cΓ³ tΓͺn xxe vΓ sau ΔΓ³ sα» dα»₯ng thα»±c thα» trong DTD. Δiα»u nΓ y sαΊ½ khiαΊΏn trΓ¬nh phΓ’n tΓch XML tΓ¬m nαΊ‘p DTD ngoαΊ‘i vi tα»« mΓ‘y chα»§ cα»§a kαΊ» tαΊ₯n cΓ΄ng vΓ diα» n giαΊ£i nΓ³ ngay lαΊp tα»©c. CΓ‘c bΖ°α»c Δược Δα»nh nghΔ©a trong DTD Δα»c hαΊ‘i sau ΔΓ³ Δược thα»±c hiα»n, vΓ file /etc/passwd Δược truyα»n ΔαΊΏn mΓ‘y chα»§ cα»§a kαΊ» tαΊ₯n cΓ΄ng.
LΖ°u Γ½ Kα»Ή thuαΊt nΓ y cΓ³ thα» khΓ΄ng hoαΊ‘t Δα»ng vα»i mα»t sα» nα»i dung file, bao gα»m cΓ‘c kΓ½ tα»± xuα»ng dΓ²ng trong file /etc/passwd. Δiα»u nΓ y lΓ do mα»t sα» trΓ¬nh phΓ’n tΓch XML tΓ¬m nαΊ‘p URL trong Δα»nh nghΔ©a thα»±c thα» ngoαΊ‘i vi bαΊ±ng API kiα»m tra cΓ‘c kΓ½tα»± Δược phΓ©p xuαΊ₯t hiα»n trong URL. Trong tΓ¬nh huα»ng nΓ y, cΓ³ thα» sα» dα»₯ng giao thα»©c FTP thay vΓ¬ HTTP. ΔΓ΄i khi, sαΊ½ khΓ΄ng thα» lαΊ₯y dα»― liα»u chα»©a cΓ‘c kΓ½ tα»± xuα»ng dΓ²ng, vΓ do ΔΓ³ mα»t file nhΖ° /etc/hostname cΓ³ thα» Δược mα»₯c tiΓͺu hΖ°α»ng tα»i thay thαΊΏ.

BΓ’y giα» nhΖ° mΓ¬nh giαΊ£i thΓch α» trΓͺn sαΊ½ tαΊ‘o mα»t DTD vα»i nα»i dung file nhΖ° trΓͺn.

Sau ΔΓ³ gα»i lαΊ‘i payload nhΖ° cΕ© kΓ¨m endpoint exploit.dtd Δα» exploit server.

Mα»t cΓ‘ch tiαΊΏp cαΊn khΓ‘c Δα» khai thΓ‘c XXE mΓΉ lΓ kΓch hoαΊ‘t mα»t lα»i phΓ’n tΓch XML trong ΔΓ³ thΓ΄ng bΓ‘o lα»i chα»©a dα»― liα»u nhαΊ‘y cαΊ£m mΓ bαΊ‘n muα»n lαΊ₯y. Δiα»u nΓ y sαΊ½ hiα»u quαΊ£ nαΊΏu α»©ng dα»₯ng trαΊ£ vα» thΓ΄ng bΓ‘o lα»i kαΊΏt quαΊ£ trong phαΊ£n hα»i cα»§a nΓ³.
BαΊ‘n cΓ³ thα» kΓch hoαΊ‘t thΓ΄ng bΓ‘o lα»i phΓ’n tΓch XML chα»©a nα»i dung cα»§a tα»p /etc/passwd bαΊ±ng cΓ‘ch sα» dα»₯ng mα»t DTD bΓͺn ngoΓ i Δα»c hαΊ‘i nhΖ° sau:
DTD nΓ y thα»±c hiα»n cΓ‘c bΖ°α»c sau:
XΓ‘c Δα»nh XML parameter entity Δược gα»i lΓ file, chα»©a nα»i dung cα»§a tα»p /etc/passwd.
XΓ‘c Δα»nh XML parameter entity Δược gα»i lΓ eval, chα»©a mα»t khai bΓ‘o Δα»ng cα»§a mα»t XML parameter entity khΓ‘c Δược gα»i lΓ error. Entity lα»i sαΊ½ Δược xem xΓ©t bαΊ±ng cΓ‘ch tαΊ£i mα»t tα»p khΓ΄ng tα»n tαΊ‘i cΓ³ tΓͺn chα»©a giΓ‘ trα» cα»§a
fileentity.Sα» dα»₯ng
evalentity, Δiα»u nΓ y lΓ m cho khai bΓ‘o Δα»ng cα»§a entity lα»i Δược thα»±c hiα»n.Sα» dα»₯ng entity lα»i, Δα» giΓ‘ trα» cα»§a nΓ³ Δược ΔΓ‘nh giΓ‘ bαΊ±ng cΓ‘ch cα» gαΊ―ng tαΊ£i tα»p khΓ΄ng tα»n tαΊ‘i, dαΊ«n ΔαΊΏn thΓ΄ng bΓ‘o lα»i chα»©a tΓͺn cα»§a tα»p khΓ΄ng tα»n tαΊ‘i, ΔΓ³ lΓ nα»i dung cα»§a tα»p /etc/passwd.
Gα»i DTD bΓͺn ngoΓ i Δα»c hαΊ‘i sαΊ½ dαΊ«n ΔαΊΏn thΓ΄ng bΓ‘o lα»i nhΖ° sau:
java.io.FileNotFoundException: /nonexistent/rootβ0:0:root:/root:/bin/bash daemonβ1:1:daemon:/usr/sbin:/usr/sbin/nologin binβ2:2:bin:/bin:/usr/sbin/nologin


Khi server cα»§a nαΊ‘n nhΓ’n khΓ³a chαΊ·t out-of-band interaction nhαΊ±m chα»ng lαΊ‘i phΖ°Ζ‘ng Γ‘n trΓch xuαΊ₯t dα»― liα»u thΓ¬ chΓΊng ta cΓ³ thα» sα» dα»₯ng external DTD α» local.
ChΓΊng ta sαΊ½ Δi vΓ o lab Δα» hiα»u rΓ΅ hΖ‘n. VαΊ«n nhΖ° cΕ© lab vαΊ«n cho chΓΊng ta check sα» liα»u.

ΔΓΊng ta sαΊ½ cΓ³ ΔoαΊ‘n paylaod sau:
α» ΔΓ’y ΔΖ°α»ng dαΊ«n lΓ m sao biαΊΏt Δược thΓ¬ vΓ dα»₯ Yelp Help Browser cho GNOME trΓͺn Linux thΓ¬ ΔΖ°Γ²ng dαΊ«n sαΊ½ βusr/share/yelp/dtd/docbookx.dtd
CΓ³ thα» check bαΊ±ng payload nΓ y: [NαΊΏu sinh lα»i thΓ¬ ΔΖ°α»ng dαΊ«n sai]

End
CαΊ£m Ζ‘n mn ΔΓ£ Δα»c bΓ i!! HαΊΉn mn cΓ‘c bΓ i research khΓ‘c....
Last updated