Web初探索(四)

複述本週任務


時間:2020.5.18——2020.5.23
內容:

  • 學習CSRF(跨站請求僞造)
  • 完成dvwa第三個模塊CSRF
  • 繼續學習php以及HTML

學習CSRF(跨站請求僞造)


什麼是CSRF

在這裏插入圖片描述
我的理解就是:
我給一家超市說:本週所有的賬單,只要報了我的名字就記在我的賬上;但是有一次我去了另一家店(惡意),這家店用某種方式知道了我的名字(cookie),然後他就去那家店報我名免費消費了。

如何實現CSRF

⭐ 貼一段百度上的一個比較形象的回答:
附鏈接1:CSRF攻擊與防禦(寫得非常好)
附鏈接2:Cross-Site Request Forgeries
附鏈接3:CSRF原理簡介
如下:其中Web A爲存在CSRF漏洞的網站,Web B爲攻擊者構建的惡意網站,User C爲Web A網站的合法用戶。

  1. 用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;
  2. 在用戶信息通過驗證後,網站A產生Cookie信息並返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;
  3. 用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
  4. 網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A;
  5. 瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的情況下 攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求其實是由B發起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執行。

如何檢測CSRF漏洞

  1. 最簡單的方法:抓取一個正常請求的數據包,去掉Referer字段 後再Forward,如果該提交有響應,則基本上可以確定存在CSRF漏洞。
  2. 工具:CSRFTester,CSRF Request Builder等。

如何防禦CSRF漏洞

  1. 檢查Referer字段
    http頭中的Referer字段(用以標明請求來源於哪個地址)。
    在處理敏感數據請求時,通常來說,Referer字段應和請求的地址位於同一域名下。而如果是CSRF攻擊傳來的請求,Referer字段會是包含惡意網址的地址。
    侷限性:因其完全依賴瀏覽器發送正確的Referer字段。雖然http協議無法保證瀏覽器沒有安全漏洞影響到此字段;並且也存在攻擊者攻擊某些瀏覽器,篡改其Referer字段的可能。
  2. 在請求地址中添加校驗token
    若用戶瀏覽器提供不保存在cookie中且攻擊者無法僞造的數據作爲校驗,那麼攻擊者就無法再運行CSRF攻擊。這種數據通常是窗體中的一個數據項。服務器將其生成並附加在窗體中,其內容是一個僞隨機數
    當客戶端通過窗體提交請求時,這個僞隨機數也一併提交上去以供校驗。正常的訪問時,客戶端瀏覽器能夠正確得到並傳回這個僞隨機數,而通過CSRF傳來的欺騙性攻擊中,攻擊者無從事先得知這個僞隨機數的值,服務端就會因爲校驗token的值爲空或者錯誤,拒絕這個可疑請求。
    侷限性 難以保證 token 本身的安全。特別是在一些論壇之類支持用戶自己發表內容的網站,黑客可以在上面發佈自己個人網站的地址。由於系統也會在這個地址後面加上 token,黑客可以在自己的網站上得到這個 token,並馬上就可以發動 CSRF 攻擊。爲了避免這一點,系統可以在添加 token 的時候增加一個判斷,如果這個鏈接是鏈到自己本站的,就在後面添加 token,如果是通向外網則不加。不過,即使這個 CSRFtoken 不以參數的形式附加在請求之中,黑客的網站也同樣可以通過 Referer 來得到這個 token 值以發動 CSRF 攻擊。這也是一些用戶喜歡手動關閉瀏覽器 Referer 功能的原因。
  3. 在 http頭中自定義屬性並驗證
    這種方法也是使用 token 並進行驗證,但並不是把 token 以參數的形式置於http請求之中,而是把它放到http頭中自定義的屬性裏
    侷限性:XMLHttpRequest 請求通常用於 Ajax 方法中對於頁面局部的異步刷新,並非所有的請求都適合用這個類來發起,而且通過該類請求得到的頁面不能被瀏覽器所記錄下,從而進行前進,後退,刷新,收藏等操作,給用戶帶來不便。另外,對於沒有進行 CSRF 防護的遺留系統來說,要採用這種方法來進行防護,要把所有請求都改爲 XMLHttpRequest 請求,這樣幾乎是要重寫整個網站。

Related Attacks

  1. Cross-site Scripting (XSS)
  2. Cross Site History Manipulation (XSHM)

完成dvwa第三個模塊CSRF


附鏈接1:DVWA-1.9系列操作之CSRF
附鏈接2:DVWA-CSRF學習筆記
在第一個小任務中已經對CSRF做了初步瞭解,下面將開始實踐…

該模塊主要實現的是一個修改密碼的操作,兩次輸入想要修改的密碼點擊提交修改密碼。
依舊是分爲low、medium、high、impossible四個難易級別。

low級別

如果參數password_new與password_conf相同,就會直接修改密碼:
在這裏插入圖片描述
可以自己僞造一個http://127.0.0.1/dvwa-master/vulnerabilities/csrf/?password_new=mima&password_conf=mima&Change=Change HTTP/1.1。打開這個html文檔,密碼就可以改變。
在這裏插入圖片描述

medium級別

不僅僅是檢查參數password_new與password_conf是否相同,會首先檢查的是這個請求來自哪裏。請求來自主機,那麼就可以更改密碼;如果不是就輸出:“Passwords did not match.”
因此,我們想要通過驗證,就必須保證在http請求中Referer字段中必須包含Host (即把之前的test.html文件重命名爲127.0.0.1.html),所以我們只需要把我們的文件名改成他的Host的name就可以完美的通過驗證。

high級別

在前者的基礎上,加上了Anti-CSRF token驗證。當用戶提交的時候,會在服務器端比對一下token值是否正確。正確就繼續,不正確就報錯。
可以先用burp抓包得到後再更改參數(利用repeater)。

  1. 找到瀏覽器cookie,複製:
    在這裏插入圖片描述
  2. 返回dvwa的CSRF模塊,向輸入框中輸入我想修改的密碼secret,用burp抓包:
    在這裏插入圖片描述
    修改cookie(粘貼進去),修改成功!
    在這裏插入圖片描述

impossible級別

Impossiable端代碼添加了一個輸入原來密碼的操作,因此只能在知道原密碼的條件下才能夠修改密碼。

學習php以及HTML


php(超文本處理器)

學習鏈接: PHP入門視頻教程之一週學會PHP
php是一門開發語言,針對開發語言的軟件,稱之爲開發環境
服務器:電腦
集成環境包:由網頁服務器、數據庫服務器、php解析器組成(選擇更新快、操作簡單、選擇性少的)——>phpstudy
工具選擇:Notepad++;phpstorm
⭐ 前幾次作業都沒有安裝筆記,於是在本次任務中,將先對phpstorm安裝步驟進行簡單記錄:

  1. 在php.cn–工具下載中找到phpstorm,點擊下載;在這裏插入圖片描述
  2. PHPstorm —— 安裝
    鏈接:Step 1
    鏈接:Step 2
  3. PHPstorm —— 激活
    當時是找了很久很久的激活碼/(ㄒoㄒ)/~~,附可用鏈接:https://www.jianshu.com/p/8ee607919511
  4. 快捷鍵
    phpstorm使用方法

將上次學習的php知識點作以運行:
附指導鏈接:PHPStorm運行PHP代碼(新手教程)

  1. 打開phpstudy – Apache;打開phpstorm,點擊Creat New Project;
  2. PHP Empty Project,選擇保存的位置(不建議放在C盤)
  3. Project – New – PHP File
  4. 完成php代碼,選擇任意已安裝瀏覽器打開
  5. 會出現502狀態碼
    在這裏插入圖片描述
    ⭐ 解決辦法:
    • 編譯器右下角出現“configured”提示,點擊“configure PHP Interpreter”;
    • 找到php.exe(還挺不好找…)在這裏插入圖片描述
  6. 設置好後,重新用瀏覽器打開,即可
    在這裏插入圖片描述

HTML

學習鏈接:HTML 菜鳥教程

⭐ 超文本標記語言HyperText Markup Language(用於創建網頁的標準標記語言)
⭐ 對於中文網頁需要使用 utf-8 聲明編碼,否則會出現亂碼。
有些瀏覽器(如 360 瀏覽器)會設置 GBK 爲默認編碼,則你需要設置爲gbk

瀏覽器在顯示 HTML 時,會省略源代碼中多餘的空白字符(空格或回車等)。
⭐ HTML文檔的後綴名:

  • .html
  • .htm
    以上兩種無區別

⭐ HTML 文檔(也叫做 web 頁面)包含了HTML 標籤文本內容

  • HTML 標籤
  1. 尖括號< >
  2. 成對出現(開始/開放標籤和結束/閉合標籤)
  • 文本內容(元素)在這裏插入圖片描述

⭐ HTML 基礎
在這裏插入圖片描述

  1. HTML 標題
    HTML 標題(Heading)是通過尖括號h1尖括號h6 標籤來定義的。
  2. HTML 段落
    HTML 段落是通過標籤 尖括號p 來定義的。
  3. HTML 鏈接
    HTML 鏈接是通過標籤 尖括號a 來定義的。
  4. HTML 圖像
    HTML 圖像是通過標籤 尖括號img 來定義的。
  5. HTML 空元素
    沒有內容的 HTML 元素被稱爲空元素。空元素是在開始標籤中關閉的。如:尖括號br
  6. HTML 格式化標籤
    尖括號b (“bold”) 或者 尖括號strong尖括號i (“italic”) 或者 尖括號em 對輸出的文本進行格式

    在這裏插入圖片描述

下面是結合所學的一些知識點簡單地構造了一個文檔:
在這裏插入圖片描述
改後綴爲.html:
在這裏插入圖片描述
得到:
在這裏插入圖片描述
以上就是我這次的任務,不足之處還請大家批評指正,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章