PHPMailer 任意文件讀取漏洞(CVE-2017-5223)
漏洞原理
PHPMailer在發送郵件的過程中,會在郵件內容中尋找圖片標簽(<img src="...">),并將其src屬性的值提取出來作為附件。所以,如果我們能控制部分郵件內容,可以利用<img src="/etc/passwd">將文件/etc/passwd作為附件讀取出來,造成任意文件讀取漏洞。
漏洞環境
在當前目錄下創建文件.env,內容如下(將其中的配置值修改成你的smtp服務器、賬戶、密碼):
SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_EMAIL=your_email@example.com
SMTP_PASSWORD=secret
SMTP_SECURE=tls
其中,SMTP_SECURE是SMTP加密方式,可以填寫none、ssl或tls。
然后編譯、運行測試環境:
docker-compose build
docker-compose up -d
環境啟動后,訪問http://your-ip:8080/,即可看到一個“意見反饋”頁面。
漏洞復現
“意見反饋”頁面,正常用戶填寫昵稱、郵箱、意見提交,這些信息將被后端儲存,同時后端會發送一封郵件提示用戶意見填寫完成:

該場景在實戰中很常見,比如用戶注冊網站成功后,通常會收到一封包含自己昵稱的通知郵件,那么,我們在昵稱中插入惡意代碼
<img src="/etc/passwd">,目標服務器上的文件將以附件的形式被讀取出來。
同樣,我們填寫惡意代碼在“意見”的位置:

收到郵件,其中包含附件/etc/passwd和/etc/hosts:

下載讀取即可。
Vulhub 文檔
推薦文章: