日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从CSRF原理到CMS漏洞利用

發布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从CSRF原理到CMS漏洞利用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • 0x01 基礎知識:
          • 1、CSRF漏洞簡介:
          • 2、與XSS的區別:
          • 3、攻擊的細節:
          • 4、常見的攻擊類型:
            • 4.1、GET類型的CSRF:
            • 4.2、POST類型的CSRF:
        • 0x02 CSRF漏洞檢測:
          • 1、手動測試:
          • 2、使用CSRF檢測工具:
            • 2.1、CSRFTester:
            • 2.2、BurpSuite:
        • 0x03 CSRF漏洞利用實例:
          • 1、MetInfo CMS:
          • 2、騎士CMS:
        • 0x04 如何防御CSRF攻擊:
          • 1、驗證HTTP Referer字段:
          • 2、添加Token,并驗證:
          • 3、關鍵請求添加驗證碼:
        • 最后:

0x01 基礎知識:

1、CSRF漏洞簡介:

CSRF全稱:Cross-site request forgery,即,跨站請求偽造,也被稱為 “One Click Attack” 或 “Session Riding”,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。舉個生活中的例子:就是某個人點了個奇怪的鏈接,自己什么也沒輸,但自己的qq號或其他的號就被盜了。即該攻擊可以在受害者不知情的情況下以受害者名義偽造請求,執行惡意操作,具有很大的危害性。

2、與XSS的區別:

CSRF聽起來很像跨站腳本攻擊(XSS),但它與XSS有很大區別,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。兩者的攻擊流程如下圖:

3、攻擊的細節:

跨站請求攻擊,簡單地說,是攻擊者通過一些技術手段欺騙用戶的瀏覽器去訪問一個用戶曾經認證過的網站并執行一些操作(如發郵件,發消息,甚至財產轉賬和購買商品)。由于瀏覽器曾經認證過,所以被訪問的網站會認為是真正的用戶操作而去運行。這利用了Web中用戶身份驗證的一個漏洞:簡單的身份驗證只能保證請求發自某個用戶的瀏覽器,卻不能保證請求本身是用戶自愿發出的。

CSRF攻擊流程如下:

舉個例子

場景需求:壞人小黑想要修改小明在購物網站www.xx.com上填寫的會員地址。

小黑想要修改小明的信息,他需要擁有:1、登錄權限 2、修改個人信息的請求。

但是小明又不會把自己的賬號密碼告訴小黑,那小黑怎么辦?于是小黑自己跑到www.xx.com上注冊了一個賬號,然后修改了一下自己的個人信息(比如email地址),他發現修改的請求是:http://www.xxx.com/edit.php?email=xiaohei@qq.com&Change=Change

然后,他進行了這樣一個操作:把這個鏈接偽裝一下,在小明登錄xxx網站后,欺騙他進行點擊,小明點擊這個鏈接后,個人信息就被修改了,小黑就完成了攻擊目的。

這種惡意的網址可以有很多種形式,藏身于網頁中的許多地方。此外,攻擊者也不需要控制放置惡意網址的網站。例如他可以將這種地址藏在論壇,博客等任何用戶生成內容的網站中。這意味著如果服務端沒有合適的防御措施的話,用戶即使訪問熟悉的可信網站也有受攻擊的危險。

通過例子能夠看出,攻擊者并不能通過CSRF攻擊來直接獲取用戶的賬戶控制權,也不能直接竊取用戶的任何信息。他們能做到的,是欺騙用戶的瀏覽器,讓其以用戶的名義運行操作。

CSRF的攻擊過程需要滿足以下兩個條件:

  • 目標用戶已經登錄了網站,能夠執行網站的功能。

  • 目標用戶訪問了攻擊者構造的URL。

  • 4、常見的攻擊類型:

    CSRF原理很簡單,一般來說,常見的攻擊類型有以下2 種:

    • GET型

    • POST型

    下面就以pikachu靶場為例,演示下這幾種類型的攻擊流程。靶場下載

    4.1、GET類型的CSRF:

    GET類型的CSRF利用很簡單,只需要構造一個HTTP請求就可以完成。

    示例

    某網站的個人信息頁面如下:

    修改個人信息并抓包:

    從提交的請求可以看到,系統并沒有對用戶設置 Token,而且是通過GET請求來提交修改信息。那么我們拿到這個URL之后,就可以改成自己想要修改的數據,如把受害者的郵箱修改為自己的郵箱:

    www.xx.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=13676767767&add=nba+76&email=hacker%40pikachu.com&submit=submit

    然后通過各種手段讓已經登錄的用戶訪問這個鏈接,攻擊就完成了。

    當受害者點擊鏈接后,可以看到受害者的郵箱地址已經變成我們自己設置的了,如圖:

    當然,直接訪問上面這個鏈接太可疑了,因此可以利用短鏈接生成器進行偽裝,例:

    訪問生成的短鏈接同樣執行成功。

    常用短鏈接網站:

    http://tool.chinaz.com/tools/dwz.aspx
    https://www.985.so/

    4.2、POST類型的CSRF:


    還是和上面一樣,修改個人信息,抓包:

    可以看到是POST類型,參數是在請求體中提交的,我們就不能通過偽造URL的方式進行攻擊了。

    這種類型的 CSRF 利用起來通常使用的是一個自動提交的表單;攻擊者可以在自己的公網服務器上搭建一個站點,在站點上做一個表單,誘導受害者點擊這個鏈接,當用戶點擊時,就會自動向存在CSRF的服務器提交POST請求修改個人信息。

    編寫一個html 頁面,代碼如下,然后把此頁面放到攻擊者自己的Web服務器上(這里為了演示方便,放在虛擬機上了)

    post.html:

    <html> <head> <script> window.onload = function() {document.getElementById("postsubmit").click(); } </script> </head> <body> <form method="post" action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php"><input id="sex" type="text" name="sex" value="boy" /><input id="phonenum" type="text" name="phonenum" value="1367676776" /><input id="add" type="text" name="add" value="nab 76" /><input id="email" type="text" name="email" value="hacker@pikachu.com" /><input id="postsubmit" type="submit" name="submit" value="submit" /> </form> </body> </html>

    目標服務器:127.0.0.1

    攻擊者服務器:192.168.50.130

    把上面的構建好的頁面放在kali上的var/www/html目錄下(別忘開啟apache服務),訪問鏈接為:

    http://192.168.50.130/post.html

    然后把該URL發送給受害者,只要受害者一點擊這個鏈接,就會自動發送POST請求,修改其郵箱地址。

    點擊鏈接是這個頁面,然后會自動提交數據。


    修改成功。( ̄︶ ̄)↗

    0x02 CSRF漏洞檢測:

    1、手動測試:

    常用的辦法是:尋找站內增刪改的地方,抓取一個正常請求的數據包,修改鏈接或表單的參數,再用驗證過的瀏覽器打開鏈接或提交表單,如果操作可以成功執行就代表存在CSRF漏洞。

    手動測試CSRF漏洞比較麻煩,因此可以選擇使用工具來進行高效的檢測。下面簡單介紹下幾個常用的CSRF檢測工具。

    2、使用CSRF檢測工具:

    常用的CSRF檢測工具有CSRFTester、Burpsuite、CSRF Request Builder等,這里介紹下前兩個工具的使用方法。

    2.1、CSRFTester:

    CSRFTester測試流程:使用代理抓取我們在瀏覽器中訪問過的所有的連接以及表單等信息,然后在CSRFTester中修改相應的表單參數等信息,重新提交,相當于一次偽造客戶端請求,如果修改后的測試請求成功被目標服務器接受,則說明存在CSRF漏洞。同理 CSRFTester也可作為攻擊工具。最新下載鏈接

    使用注意事項:

    • 需要java環境,并更改 run.bat中的 jre路徑為你自己的:

    • 設置HTTP代理,端口為8008。

    雙擊 run.bat文件啟動,頁面如下:

    像這樣就是正常啟動了。

    點擊Start Recording,開啟CSRFTester檢測工作,執行添加管理員操作,抓取到數據包:

    修改管理員用戶名(也可以在下面生成的表單中修改),點擊 Generate HTML 會生成一個 HTML 測試腳本:

    使用同一瀏覽器打開此文件

    可以看到,成功添加了賬號,說明網站存在CSRF漏洞。

    2.2、BurpSuite:

    Burpsuite中 Engagement tools 的 Generate CSRF PoC 模塊也可以作為CSRF的測試工具。

    還是同樣執行添加管理員操作,抓包,然后右鍵選擇 Engagement tools 找到Generate CSRF PoC。

    修改參數,生成測試表單

    右下角的 Test in browser 是在本地測試用的(Copy HTML 可以復制下來HTML,保存到攻擊者服務器,用來攻擊),點擊會生成一個測試鏈接,內容就是生成的測試頁面,打開鏈接(這里瀏覽器必須開著bp的代理):

    點擊提交按鈕并在bp中放包。

    可以看到成功執行了測試,證明存在著CSRF漏洞。

    0x03 CSRF漏洞利用實例:

    說了這么多,不實際操作下還是紙上談兵;下面就以這兩個本地CMS為例,復現一下CSRF漏洞的實際利用過程。

    1、MetInfo CMS:

    cms版本:MetInfo5.3.1
    環境:phpStudy集成環境
    cms下載:https://pan.baidu.com/s/1ZgKx3BE3hmJkflJxundYSA 提取碼:pek6

    解壓到www目錄下,訪問目錄開始安裝

    按照提示一步一步完成配置,進入網站


    訪問 /網站首頁/admin 進入后臺管理頁面,并登錄,找到添加管理員模塊,添加一個管理員。

    瀏覽器開啟代理后,使用我們的 CSRFTester工具抓取數據包

    找到對應的請求,修改參數。這里用戶名改為hacker,然后點擊Generate HTML 保存表單。

    刪除多余的請求表單后,放到攻擊者的服務器上,訪問鏈接為(這里放本地了):http://127.0.0.1/Me/index.html

    然后誘導網站管理員訪問鏈接

    成功添加。

    使用添加的用戶登錄,賬號:hacker 密碼:admin

    登陸成功,攻擊完成

    2、騎士CMS:

    cms版本:74cms_v4.1.24
    環境:phpStudy集成環境
    cms下載:https://pan.baidu.com/s/1U-I28J2DDTZkY1esQr9H4A 提取碼:75sx

    解壓后訪問 upload目錄開始安裝:

    按照提示一步一步完成配置,進入網站

    進入后臺管理頁面,找到添加管理員頁面


    使用bp抓包,使用 Generate CSRF PoC 構造攻擊頁面


    點擊 Copy HTML 保存到本地,為誘惑管理員點擊,可以添加一些具有誘惑性的東西,舉個例子:(忽略這個很丑的頁面→_→)


    然后放到攻擊者的服務器上(這里就放到本地了),訪問鏈接為:http://127.0.0.1/74/lol.html

    然后誘導管理員點開鏈接并提交,成功執行。

    使用剛才創建的賬號密碼進行登錄測試,賬號 hacker 密碼 admin

    登錄成功,攻擊完成。

    0x04 如何防御CSRF攻擊:

    CSRF通常從第三方網站發起,被攻擊的網站無法防止攻擊發生,只能通過增強網站對CSRF的防護能力來提升安全性。

    在服務器端防御CSRF攻擊主要有三種策略:

    1、驗證HTTP Referer字段:

    Referer字段存在于 HTTP請求頭中,它記錄了該 HTTP請求的來源地址。正常情況下請求的 Referer 值是 請求發出所在頁面的URL,當檢測到 Referer 是其他網站的話,則有可能是黑客的 CSRF 攻擊,拒絕該請求。

    例如黑客要對銀行網站實施 CSRF 攻擊,他只能在他自己的服務器構造請求,當用戶點擊黑客的鏈接發送請求到銀行時,該請求的 Referer 是指向黑客自己的網站,就會拒絕該請求。

    2、添加Token,并驗證:

    Token介紹:

    • token是服務端生成的一串隨機數,作為客戶端進行請求的一個令牌,當第一次登錄后,服務器生成一個Token并返回給客戶端。

    Token驗證:

    • 在 HTTP請求中以參數的形式添加一個隨機產生的 token,并在服務器端建立一個攔截器來驗證這個 token,假設請求中沒有token 或者 token 內容不對,則可能是 CSRF 攻擊而拒絕該請求。
    3、關鍵請求添加驗證碼:

    當進行一些敏感操作時,如修改密碼、添加管理員等操作,可以通過增加網站的驗證手段,例如增加圖形驗證碼或短信驗證碼等,只有通過驗證的請求才算合法。

    最后:

    🆗,本次的CSRF學習就到這了,本次學習 收獲頗豐,繼續加油!最后提醒大家,一定不要隨便點別人發的鏈接!


    參考文章:
    https://cloud.tencent.com/developer/article/1586164
    https://www.jianshu.com/p/4152a4947cdc
    https://blog.csdn.net/kzadmxz/article/details/92076837
    https://www.cnblogs.com/54chensongxia/p/11693666.html
    https://www.secpulse.com/archives/78792.html
    https://shu1l.github.io/2020/04/03/csrf-lou-dong-xue-xi/
    https://shu1l.github.io/2020/04/03/csrf-lou-dong-xue-xi/

    總結

    以上是生活随笔為你收集整理的从CSRF原理到CMS漏洞利用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。