文件包含漏洞
文件包含漏洞也是一種注入型漏洞,其本質就是輸入一段用戶能夠控制的腳本或者代碼,并讓服務端執行。有時候由于網站功能需求,會讓前端用戶選擇要包含的文件,而開發人員又沒有對要包含的文件進行安全考慮,就導致攻擊者可以通過修改文件的位置來讓后臺執行任意文件,從而導致文件包含漏洞。
PHP偽協議
file:// — 訪問本地文件系統
http:// — 訪問 HTTP(s) 網址
ftp:// — 訪問 FTP(s) URLs
php:// — 訪問各個輸入/輸出流(I/O streams)
zlib:// — 壓縮流
data:// — 數據(RFC 2397)
glob:// — 查找匹配的文件路徑模式
phar:// — PHP 歸檔
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音頻流
expect:// — 處理交互式的流
php://filter可以獲取指定文件源碼。當它與包含函數結合時,php://filter經常會被當作代碼唄執行,所以我們通常會對他進行BASE64編碼
Php://input任意代碼執行;這種偽協議用于讀取原始的HTTP POST數據,可以用于處理上傳的文件和表單數據。
data://text/plain?任意代碼執行
zip://?配合文件上傳開啟后門
案列:
Php://input
第一步:
使用url:?file=php://input查看源代碼
第二步:
使用BP進行抓包,使用POST傳參傳入偽協議<?php system(‘ls /’)?>
第三步:
看到了flag,使用cat,得到flag
讀取源代碼
第一步:
提示了flag在/flag里
第二步:
構造url:?file=php://filter/resource=/flag 得到flag
遠程包含
第一步:
使用php://
使用BP傳參,用POST傳參傳入PHP偽協議,得到flag