安全測試基礎知識


常見安全問題

跨站腳本攻擊XSS

跨站請求偽造攻擊CSRF

前端Cookies安全性

點擊劫持攻擊

傳輸過程安全問題

用戶密碼安全問題

SQL注入攻擊

 

XSS(Cross Site Scripting)跨站腳本攻擊介紹

什么是XSS

web攻擊的一種,通過對網頁注入可執行代碼(html代碼或JS代碼)成功被瀏覽器執行

實施XSS攻擊具備的條件

  1. 需要向web頁面能夠注入惡意代碼(輸入框、url)
  2. 惡意代碼能夠被瀏覽器成功執行

XSS攻擊原理

用戶傳入的數據被當做是程序,所以會執行程序

XSS能干嘛

  • 獲取頁面數據:通過document即可獲取指定元素的值,如獲取用戶名稱、手機號、住址等【偷取網站任意數據包括用戶資料】
  • 獲取cookies:通過document.cookies可以獲取網站當前的所有cookies,盜取當前登錄用戶的登錄態,從而冒充被盜用戶登錄網站甚至后台管理系統【偷取用戶密碼和登錄態】
  • 劫持前端邏輯:可以修改某個操作的反饋內容,譬如點擊某個按鈕本來應該只提交一個請求,但通過XSS腳本可篡改該請求地址,然后用戶提交的信息發送到攻擊者封裝的接口;或可改變用戶跳轉的頁面【欺騙用戶,流量劫持】
  • 發送請求:攻擊者可以讓用戶在不知情的情況下發送某個請求收集用戶信息

XSS攻擊方式

  • 反射型XSS:用戶訪問一個被攻擊者篡改后的鏈接時,被植入的腳本會被用戶瀏覽器執行,也稱非持久型因為是一次性,僅對當次的頁面訪問產生影響
  • 反射型XSS場景:帶有XSS腳本的鏈接轉成的短鏈;【在url后跟xss腳本】,網址跳轉
  • 存儲型XSS:包含XSS攻擊腳本的內容會被存儲到服務器端,也稱持久型,用戶讀取到內容時會自動執行腳本
  • 存儲型XSS場景:其他用戶查看別人發布的留言、評論,管理員發布的公告,黑客發布的博客文章;反饋功能,投訴功能,聊天記錄功能

XSS攻擊注入點

  • HTML節點內容:動態生成,包含用戶輸入的內容,從而包含XSS腳本
  • HTML屬性:像img的src、輸入框的value等需要用戶自行輸入的地方
  • JS代碼:某個JS代碼需要用戶傳值進入
  • 富文本:富文本編輯框本身保存的內容就包含html標簽,用戶可輸入XSS腳本

潛在注入點

判斷輸入點是否可以成功把數據注入到頁面內容,對於提交數據內容但是不輸出到頁面的輸入點是沒有必要進行Fuzzing的,因為即使可以提交攻擊代碼,也不會產生XSS;

Fuzzing:模擬XSS攻擊,模糊測試挖漏洞最常用的一種手段,不斷嘗試的過程

Payload:相當於測試用例

標簽屬性中: 如<a href="注入位置">test</a>,       Payload:"></a><script>alert(0)</script><a  href="
標簽事件中: <img href="a.jpg" onload="注入位置">,   Payload:alert(0)

防御XSS攻擊

  1. 瀏覽器自帶防御,X-XSS-Protection,主要防御反射型XSS攻擊,如參數出現在HTML內容和屬性
  2. 對html內容進行轉義,譬如將【<>】轉義成&lt; &gt; 存入數據庫時即轉義,或顯示時轉義
  3. 對html屬性中的雙引號和單引號【"" ''】轉義成&quto; &apos;
  4. CSP1(Content SecurityPolicy)內容安全策略,用於指定哪些內容可執行

 

CSRF(Cross Site Request Forgy)跨站請求偽造

通俗易懂的理解CSRF

  1. 用戶訪問的網站對惡意網站發出了一些請求,且這些請求是用戶不知情的情況下完成的
  2. 攻擊者盜用受信任用戶的身份,以他的名義向第三方網站發送惡意請求,對於服務器來說這個請求時合法的

CSRF攻擊原理

 

CSRF是如何攻擊的?又如何防御

  1. 站點B向站點A發送請求
  2. 請求帶站點Acookies
  3. 不訪問站點A前端
  4. referer為站點B

CSRF攻擊危害

  1. 利用用戶登錄態
  2. 用戶不知情
  3. 完成業務請求(盜取用戶資金、冒充用戶發帖背鍋)
  4. 造成蠕蟲攻擊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM