這是burpsuite官網的免費優質實驗.php
實驗室地址 https://portswigger.net/web-security/information-disclosurehtml
僅爲本人學習記錄文章android
信息泄露指網站無心向用戶泄露敏感信息.可能包括如下內容:git
這種泄露多是不慎泄露給瀏覽該網站信息用戶的,也有多是攻擊者經過惡意的交互從網站得到數據.程序員
一些敏感信息泄露的示例:web
敏感信息泄露的產生緣由可大體歸類以下幾點:數據庫
如何防止信息泄露?編程
網站開發人員要明確哪些信息是敏感信息緩存
針對錯誤消息正確處理安全
檢查網站開發環境中的任何調試或者診斷功能是否禁用
瞭解站點所使用的第三方技術的配置設置與安全隱患.花時間禁用實際上不須要的任何功能和設置
下面將介紹一些關於敏感信息泄露挖掘的思路
像robots.txt, sitemap.xml
這些文件會列出特定目錄不讓爬蟲爬取,由於它們可能包含敏感信息
在burpsuite的sitemap裏面可能看不到它們,須要手動測試一下,看是否存在有用的東西
有的網站由於不當的配置可能暴露了網站目錄
(圖片來源於網絡)
可能泄露一些開發者不但願用戶訪問的文件
泄露敏感資源的存在與位置
開發過程當中,開發者可能在HTML中寫有關敏感信息的註釋.
部署到生成文件前,一般會刪除.可是可能有時會由於有些人沒有安全意識而忘記.
也有多是js代碼會保留一些敏感信息
實驗:
在這個實驗中,咱們查看HTML源代碼.發現下面的js代碼
若是訪問用戶是管理員,將在頁面上增長一個超連接 Admin panel 在. /admin-f6zfiz
若是不看源代碼,經過目錄爆破很難發現.
同時,該網站的訪問控制也沒有作好,咱們能夠輕鬆進入控制頁面
刪除Carlos用戶
信息泄露的最多見緣由之一是冗長的錯誤消息。
您應密切注意測試期間遇到的全部錯誤消息。
錯誤消息可能提醒測試人員應該輸入什麼消息或者什麼數據類型的消息,這能夠幫助咱們識別可利用的參數來縮小攻擊範圍
詳細的錯誤消息還能夠提供有關網站使用的技術信息 .如數據庫類型,模板類型,服務器版本號等.
您可能還會發現該網站正在使用某種開源框架 , 在這種狀況下,您能夠下載研究源代碼,可能有意外收穫
錯誤消息對SQL注入,用戶名枚舉等都很關鍵.
實驗:
咱們嘗試修改id
引起報錯能夠發現該站點使用了Apache Struts 2 2.3.31
搜索能夠發現這個版本存在一個Struts 2 遠程代碼執行漏洞.
但在這個實驗不用嘗試,點擊 Submit solution 將發現填進去便可過關
出於調試目的,許多網站會生成自定義錯誤消息和日誌,其中包含有關應用程序行爲的大量信息
儘管此信息在開發過程當中頗有用,但若是在生產環境中泄漏,則對攻擊者也很是有用。
調試消息有時可能包含用於發起攻擊的重要信息,包括 :
調試信息有時可能會記錄在單獨的文件中。
實驗:
在這個實驗裏,經過burpsuite的sitemap就能夠發現,泄露了phpinfo頁面
phpinfo就泄露了不少信息,包括 SECRET_KEY
這個值是某些加密的鹽值(在不安全的反序列化一節中有用到)
在這提交secret_key值就能夠過關
用戶的我的資料或「個人賬戶」頁面一般包含敏感信息 , 例如用戶的電子郵件地址,電話號碼,API密鑰等。
因爲用戶一般只能訪問本身的賬戶頁面,所以這自己並不表示漏洞。可是,某些網站包含邏輯缺陷,這些缺陷可能使攻擊者能夠利用這些頁面來查看其餘用戶的數據。
例如,考慮一個基於user參數肯定要加載哪一個用戶的賬戶頁面的網站。
GET /user/personal-info?user=carlos
實驗:
在帳戶頁面有我的的API Key
可是下面是my-account?id=wiener
嘗試修改成carlos
burp抓包修改
以前的wiener的API key NczbKj9I0GfmU6Q9KnA5FLpKfckLQaxU
若是直接訪問會重定向,下面的sYtJ1hbZ0t9Vv884PoCQeQRE3nRTzdMa就是carlos的API key
直接提交carlos的API key就ok
得到源代碼訪問權限使攻擊者更容易理解應用程序的行爲並構造高嚴重性攻擊。
敏感數據有時甚至被寫在在源代碼中,如數據庫IP,密碼(程序員提交到GitHub的開源項目)
有時候,網站自身可能因爲某些緣由,泄露其源代碼:
好比用Vim編程,在修改文件後 系統會自動生成一個帶~的備份文件 , 某些狀況下能夠對其下載進行查看;
還有一些文件備份會在文件後面加上.bak
以下面的兩種狀況:
泄露了目錄信息
以及備份文件信息
這些均可以經過burpsuite的爬蟲爬出來
若是查看robots.txt
能夠發現它禁止爬取backup目錄下的文件,正好和前面描述的相符
而在源碼中又能夠發現敏感信息
(提交e4634c3retqjcb9wov4ci2bmyuybz8ud過關)
Vim備份文件泄露
因爲配置不當,網站有時容易受到攻擊。
又因爲第三方技術的普遍使用,這種狀況尤其廣泛,第三方技術的不少配置選項並不必定被使用它們的人員所理解。
在其餘狀況下,開發人員可能會忘記在生產環境中禁用各類調試選項
例如,HTTP TRACE
方法被設計用於診斷目的 , TRACE容許顧客看到經過請求鏈的那一端在接收了些什麼並使用那些數據來測試和診斷信息狀況,開啓可能致使某些危害
訪問admin頁面
同時該網站TRACE方法又開啓了
X-Custom-IP-Authorization爲咱們的請求IP
結合這兩條能夠知道,web站點管理員在開發網站時設置了,本地不須要登陸也能夠進入admin頁面
可是,咱們能夠欺騙服務器咱們是127.0.0.1
這樣設置後再次訪問
能夠成功刪除 Carlos 的帳號
TRACE探測
Git基礎請參考 https://www.runoob.com/w3cnote/android-tutorial-git-repo-operate.html
幾乎全部網站都是使用某種形式的版本控制系統(例如Git)開發的
默認狀況下,Git項目將其全部版本控制數據存儲在名爲.git
的文件夾中
有時,網站在生產環境中公開此目錄。在這種狀況下,您可能只需瀏覽到便可訪問它/.git
。
並且還能夠下載到本地,用本地安裝的Git打開它 以訪問網站的版本控制歷史記錄
這可能沒法讓您訪問完整的源代碼, 可是您能夠閱讀更改的代碼片斷
這仍然可能存在某些敏感數據
實驗:
訪問/.git
咱們能夠下載到本地查看
wget -r https://ac931f6d1f3043de818db753009500ba.web-security-academy.net/.git
git status命令查看信息
能夠發現,admin.conf和admin_panel.php被管理員從目錄刪除了
可是"還沒有緩存以備提交的變動",說明並無從當前版本刪除.
使用下面的命令恢復到當前版本
git reset --hard HEAD
cat admin.conf發現沒有管理員密碼!...
git log 查看歷史版本信息
發現帳號密碼上一版被刪除了..
再恢復上一版
git reset --hard HEAD^
拿到管理員密碼,administrator/7e4yhifp8ni8olt5aap2 登陸後臺,刪除指定用戶便可.