如何解析 web 應用程式

2021-02-24 信安之路

每日學習打卡計劃是信安之路知識星球開啟的每天讀書一小時,挑戰打卡一百天的活動,能夠堅持學習打卡 100 天的同學可以獲得信安之路提供的百分成就徽章和證書,學習書籍可以自選,主要目的是養成每日讀書學習的好習慣,並將自己的學習心得分享出來供大家學習,下圖為最新打卡內容以及上周星球主題集贊榜單 TOP5,目前每周集贊第一名可獲得騰訊視頻 VIP 月卡一張,以滋鼓勵:

打卡一 P109-136

這部分內容主要解決的問題是,我們如何獲取 web 應用的站點地圖,也就是網站的所有頁面和功能,我們可以對其測試的攻擊面,主要分幾種:主動式爬蟲、被動式抓取、隱藏頁面獲取、頁面參數擴展。

主動式爬蟲:這個很好理解,就是爬蟲,通過頁面之間的超連結關聯來一層一層獲取頁面內容,然後從內容中匹配頁面連結,逐步將網站的所有連結完整爬取,對於從來沒有在其他網頁設置超連結的頁面是無法通過這種方式獲取到的,工具的話,可以用自實現的爬蟲工具,用 python 寫的居多,如今的網站好多架構前端都是 nodejs 框架,數據的獲取通過普通的爬蟲已經無法實現,可以藉助無頭瀏覽器來對頁面進行解析,從而獲取數據。

被動式抓取:這個原理就是開啟一個網頁代理,然後在瀏覽器設置通過代理訪問,這樣我們在使用瀏覽器訪問網站,點擊網站的各個按鈕時,流量通過代理,代理就會將所有請求連結和數據都保留下來,這種方式的好處就是可以將動態的頁面和數據保留下來,彌補主動爬蟲獲取數據難度大的問題。

隱藏頁面獲取:對於隱藏的頁面,通過前兩種方式都無法獲取,那麼就需要我們進行一些暴力枚舉,設置一些目錄和文件的字典,通過不斷嘗試訪問,根據返回結果,比如 404 表示頁面不存在,200 表示頁面存在,然後獲取因此的目錄和頁面,網站為了限制搜尋引擎的數據爬取,會使用 robots.txt 來制定規則,這也是我們獲取因此目錄和頁面的方式,還有就是搜尋引擎的歷史歸檔記錄,由於網站的變化,舊的頁面也許未進行刪除,但是已不再使用,通過爬蟲和暴力枚舉都無法獲取的情況下,可以藉助搜尋引擎,查詢歷史歸檔,這裡涉及一些搜尋引擎的語法,需要自行查閱。

頁面參數獲取:有了功能頁面之後,我們需要跟網站進行交互,那麼就需要知道不同的頁面有哪些參數可以利用,我們在前期的信息收集時會抓到很多不同類型的參數提交方式和默認參數信息,有一些隱藏參數是我們在正常操作時無法獲取的,那麼也需要用到我們經常用的暴力枚舉的方式,猜測其有哪些參數存在但是已不再使用的情況,說不定有意想不到的收穫。

最後關於暴力枚舉,這個在不同的場景下成功率取決於字典的質量,每個場景都有一些默認的字典,我們還可以根據已經收集到的情報,比如目錄和文件的命名方式,公司的常用關鍵詞等組合一些自定義字典,這個在實際的滲透中有很大的幫助。

打卡二 P137-140

有了攻擊面之後,我們就需要對 web 的頁面進行測試,因為應用的安全問題來自於用戶的輸入,所以所有可以輸入的地方都是我們要重點關注的,這部分內容主要講的是如何識別用戶輸入點。

用戶可以輸入和利用的地方主要包括:URL 中帶的參數,也就是 GET 方式提交參數;POST 請求主體中的參數;cookie 中的欄位;header 中的 referer、x-forword-for、user-agent、Host 等。

關於 URL 的類型,主要取決於開發者,已經經常說的偽靜態,看上去是靜態頁面,其實頁面的名字就是個變量,這種設置主要用 .htaccess 。

referer 的問題在於,有些應用程式通過 referer 來判斷用戶來源,針對不同的來源釋放不同的內容,比如對於來自搜尋引擎的跳轉,來自合作廣告商的推廣等等,這是我們可以利用的點。

user-agent 的問題在於,不同 UA 可以判斷用戶使用的設備,為了提升用戶體驗,根據 UA 為用戶提供不同的展示頁面,如果展示頁面屬於不同的開發者,不同的頁面,雖然 PC 端展示頁不存在安全問題,那麼移動端展示頁就可能存在問題。

x-forword-for 對於有負載均衡的網站,通常會記錄用戶的外網 IP,對於來源 IP 如果設置了特權,那我們就有利用的可能,比如反爬蟲會對搜尋引擎的 IP 加白,我們可以設置這個參數為搜尋引擎的 IP,那麼就實現了繞過反爬的可能

最後一個帶外通道,理解起來比較費勁,說的應該是應用程式會獲取一些數據,然後攻擊者控制著這些數據,這些數據在被應用程式獲取並處理時觸發安全問題,可以利用的應用程式包括:web 郵箱、自動化爬蟲並展示的應用、獲取網絡流量並展示的系統。

打卡三 P140-145

這部分內容主要講如何識別 web 伺服器的類型和版本,主要包括:伺服器消息頭、URL 的文件擴展名、伺服器報錯信息、目錄指紋、會話令牌、第三方組件,識別伺服器的版本能夠讓我們在未來的測試中更有針對性,縮小測試範圍,提升測試效率,也存在以前比較老版本的伺服器組件存在一些 Nday,如果遇到對應版本有漏洞的可以直接進行利用嘗試。

不同的伺服器在請求的響應包中有所提示,但是有些伺服器管理員為了迷惑攻擊者可以將默認的響應信息進行自定義或者偽造,所以在伺服器類型識別中要結合多種方式來進行確認,不能依靠單一方式。

通過 URL 中的文件擴展也能很好的判斷,比如 php 後綴的,通常是 php + apache 或者 PHP + nginx,aspx 後綴的通常是 iis + asp.net 等。

通過各種嘗試使伺服器報錯之後的錯誤頁面能夠看到詳細的伺服器版本信息,比如訪問不存在的目錄或文件報錯,參數中輸入單引號報錯等。

有些伺服器會默認帶一些文件或者目錄,通過目錄測試也可以識別部分 web 伺服器的信息。

開發者在開發的時候經常會使用第三方組件來提升開發效率,結合第三方組件的指紋來對網站進行探測能夠很好的識別網站使用的框架和 web 伺服器的類型。

不同的伺服器在 cookie 中默認使用的 session ID 的名稱有所不同,比如:PHP--PHPSESSID、IIS--ASPSESSIONID、Java--JSESSIONID 等。

關於這塊的技術,存在大量自動化工具,一般 web 自動化掃描器都會存在這個功能,見的多了之後,基本上很快就可以識別出來,一眼看出使用什麼樣的伺服器,網站架構是什麼樣子。

打卡四 P146-156

這是第四章最後的內容,其中包括如何識別 url ,查看數據包中哪些是我們可以利用的參數,根據經驗大概推測背後的功能邏輯,做那些操作等等。

這部分內容對後續的章節關於漏洞的類型做了個總結,本書涉及的安全漏洞包括:

客戶端操作確認——伺服器對客戶端攜帶數據沒有做安全檢查

資料庫交互——可能存在 SQL 注入漏洞

文件上傳與下載——路徑遍歷漏洞、存儲型跨站漏洞

對用戶輸入的數據進行展示——跨站漏洞

頁面動態重定向——重定向漏洞與消息頭注入攻擊

社交網絡功能——用戶名枚舉、存儲型跨站漏洞

登錄——用戶名枚舉、弱口令、撞庫、暴力破解

多階段登錄——登錄邏輯漏洞

會話狀態——預測令牌、令牌洩漏

訪問控制——水平越權、垂直越權、未授權訪問

用戶管理——權限提升

明文傳輸——會話劫持、網絡嗅探

站外連結——Referer 消息頭中查詢字符串參數洩漏

錯誤提示——信息洩漏

電子郵件交互——郵件替換

執行本地代碼——緩衝區溢出、命令注入

使用第三方應用程式組件——已知漏洞 Nday

Web 伺服器軟體——伺服器 Nday、配置錯誤

以上內容會在後續的書籍內容中呈現,前面所需的基礎還需踏實沉澱。

相關焦點

  • Web應用程式開發五步法
    那麼作為一名Web開發人員,怎樣去開發一款優秀的Web應用程式呢?這個問題沒有一個簡單的答案,甚至那些教育機構都未必能清楚的知道。所以,像大多數在這個領域裡的web開發人員一樣,我們只是通過去做,去實驗才學會了這些。沒有人告訴我們如何去做,我們從給自己做點什麼東西開始,學會如何開發web應用程式是在這個過程中的一個副產品。這是學習任何語言的一個非常有效的方法。
  • 鳶尾花預測:如何創建機器學習Web應用程式?
    本文就將展示如何在Python庫中使用streamlit,用不到50行的代碼構建一個簡單的基於機器學習的數據科學web應用程式。數據科學生命周期鳶尾花預測應用程式概述我們將構建一個簡單的機器學習web應用程式,用於預測鳶尾花的類標籤,包括setosa、versicolor
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 如何優化Web應用數據訪問實現方式以提高軟體應用系統的響應性能
    軟體項目實訓及課程設計指導——如何優化Web應用數據訪問實現方式以提高軟體應用系統的響應性能在軟體應用系統中離不開數據訪問和數據處理兩個方面的功能,而數據處理之前首先要進行數據訪問,也就是只有快速地獲得了數據,才能進行下一步的數據處理。
  • 多些體驗 10個免費web分析工具應用程式
    分析工具和應用程式,他們可以幫助你收集和分析與你網站內容有關的數據。BBClone如果你正在尋找一個簡單的,服務端的並且不依賴於第三方服務的web應用來監控網站數據,BBClone - 一個基於PHP的服務端應用,為你報告詳細的站點流量和訪客數據。BBClone能夠與時下最受歡迎的發布平臺容易的集成,比如Drupal,Wordpress,Textpattern等。6.
  • 如何在一天內構建和部署機器學習web應用程式 — 榴槤分類
    應用程式不需要太多的代碼行。你可以確保它(假設它會被調用應用程式副本)可以通過在命令行中輸入以下命令在本地運行:將我們的模型部署到Heroku就我個人而言,部署不是我最喜歡的部分,但是,如果web應用程式不在web上,那它還有什麼意義呢?我們開始吧。你可以通過多種方式為web應用程式提供服務,也可以使用許多雲服務提供商來託管它。在這種情況下,我選擇使用Heroku主要是因為我以前沒有嘗試過。什麼是Heroku?
  • 關於測試Web應用程式的完整指南
    通過啟用或禁用瀏覽器選項中的Cookie來測試應用程式。測試Cookie是否在寫入用戶機器之前加密。如果您正在測試會話cookie(即在會話結束後到期的Cookie)在會話結束後檢查登錄會話和用戶統計信息。通過刪除Cookie檢查應用程式安全性的影響。
  • 如何利用MyEclipse開發工具開發基於Velocity模板的Web應用
    軟體項目實訓及課程設計指導——如何利用MyEclipse開發工具開發基於Velocity模板的Web應用1、在MyEclipse開發工具中新建一個名稱為WebVelocity的Web項目在名稱為WebVelocity的J2EE Web應用項目中的lib目錄下添加
  • 如何應用Web頁面靜態化技術以提高J2EE Web應用系統的響應性能
    在Web應用系統的表示層開發中如何通過應用Velocity模板技術以提高Web應用系統的響應性能,作者在以前的文章中的做了詳細的介紹,有興趣的讀者可以翻看文章《軟體項目實訓及課程設計指導——如何在Web應用系統表示層開發實現中應用Velocity模板技術》。
  • 用Docker部署SpringBoot應用程式
    將應用程式部署為Docker容器可以幫助您在多個環境(即dev、QA、暫存、生產)中順利地行動應用程式。本教程向您展示了如何利用Docker部署SpringBoot應用程式。用SDKMAN或直接來自AdoptOpenJDKDocker:我推薦Docker Desktop免費的Okta developer account稍後提供更多信息創建一個SpringBoot應用程式
  • 騰訊前端團隊是如何做web性能監控的?
    應用性能怎麼樣呀?是否會優於海量 web 應用市場呢?本文就來整理下如何進行 web 性能監控?包括我們需要監控的指標、監控的分類、performance 分析以及如何監控。但是,如何進行 web 性能監控本身是一個很大的話題,文中只會側重一部分進行研究,某些內容不是很全面。前言:為什麼需要監控?
  • 如何用簡單的Python編寫Web應用程式?
    圖片來源:Cody Black Unsplash稍作休息,開始編碼。於是StreamLit帶著自身的使命出現了,它僅藉助Python就能夠創建Web應用程式。Python的宗旨:簡單勝於複雜,而Streamlit創建應用程式則完美地詮釋了其易操作性。這篇文將為大家講解何使用Streamlit來創建支持數據科學項目的應用程式。
  • 如何在Web應用中實現Velocity 與Struts 框架相互集成的應用實例
    軟體項目實訓及課程設計指導——如何在Web應用系統中實現Velocity 與Struts 框架相互集成的應用實例1、Velocity Tools 子項目及其中的 VelocityStruts 組件(1)Velocity Tools是什麼
  • 微信小程序出師不利,谷歌百度或推新Web應用標準抄後路
    二是,小程序不會替代APP,最多僅僅是應用生態的一個補充。所以我們看到京東商城等首批上線的小程序,基本上都是閹割版,他們依然會把注意力放到原生APP上,尤其對高頻應用和入口級的平臺來說,小程序短期依然是打醬油或引流、試用的角色,叫Widget可能更準確。
  • 什麼是 Webhook 網絡鉤子?
    我們能用事件描述的事物越多,webhook的作用範圍也就越大。Webhook作為一個輕量的事件處理應用,正變得越來越有用。準確的說webhoo是一種web回調或者http的push API,是向APP或者其他應用提供實時信息的一種方式。Webhook在數據產生時立即發送數據,也就是你能實時收到數據。這一種不同於典型的API,需要用了實時性需要足夠快的輪詢。
  • 結構方程模型元分析:Web應用
    Cheung開發了網頁版的結構方程模型元分析應用程式,對結構方程模型元分析感興趣的多加關注。英文題目和摘要Meta-analytic structural equation modeling made easy: A tutorial and web application for one-stage MASEMMeta-analytic Structural
  • 如何在Web應用中實現Velocity 與Struts2框架相互集成的應用實例
    軟體項目實訓及課程設計指導——如何在Web應用系統中實現Velocity 與Struts2框架相互集成的應用實例1、Struts 2應用框架提供對 Velocity 和 FreeMarker 模板引擎的支持在Struts 2應用框架中不僅繼續保留有對Velocity
  • 用Python將Keras深度學習模型部署為Web應用程式
    我們想要的是將深度學習模型部署為世界上任何人都可以訪問的Web應用程式。在本文中,我們將看到如何編寫一個Web應用程式,該應用程式使用經過訓練的Keras遞歸神經網絡,並允許用戶生成新的專利文摘。這個項目建立在遞歸神經網絡的基礎上,但是了解如何創建RNN是不必要的。現在我們將其視為黑匣子:我們按一個開始的順序進行操作,它輸出一個全新的專利文摘,可以在瀏覽器中顯示!
  • 如何使用pprof分析應用
    inuse_objects終端查看web查看3、程序啟動到現在的內存使用 alloc_space終端查看web 查看4、從啟動到現在的總分配對象 alloc_objects1、PProf2、支持什麼使用模式3、可以做什麼4、 測試demo5、 訪問web6、指標解析1、runtime.futex2、 runtime.gopark--協程指標gopark函數做的主要事情分為兩點:調用過程3、runtime.ready
  • 如何構建一個交互式數據分析 Web 應用?
    作者 | AJ Gordon責編 | Carol頭圖 | CSDN 付費下載於視覺中國本文主要介紹如何利用Python的Streamlit庫和Heroku雲平臺來做一個交互式數據分析Web應用。開發環境如下:Windows10系統Anaconda3(python3.7.4)Git(2.26.0.windows.1)Heroku帳號梯子(Heroku需科學上網才可訪問)Streamlit根據Streamlit官方文檔介紹,它是一個開放原始碼的Python庫,可以輕鬆地為機器學習和數據科學構建漂亮的自定義web應用程式。