安全測試整理

 

1、安全測試的目的:

爲了儘量的發現安全漏洞php

2、安全測試的基本步驟:

收集信息>熟悉環境—>梳理功能—>評估風險—>制定計劃—>執行測試—>輸出結果前端

一、如何熟悉環境:a. 測試在哪兒執行:瀏覽器仍是APP數據庫

b. 測試有沒有前置條件:內部系統仍是外部系統?是否須要特定帳號才能使用瀏覽器

c. 系統特殊屬性:是不是行業專門系統,是否須要其餘預先只是儲備安全

2、功能是否已就緒:通常在功能測試基本完成以後進行安全測試服務器

3、制定計劃(設置場景,設計用例)xss

4、執行測試ide

3、一般容易出現的安全漏洞

一、CSRF攻擊

(跨站請求僞造,經過假裝來自受信任用戶的請求來利用受信任的網站工具

如:某用戶轉帳操做:http://www.mybank.com/Transfer.php?toBankId=11&money=1000。轉帳操做成功後訪問某個網站(或連接圖片),該網站有以下代碼:<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=10000>。訪問成功後該用戶帳戶就少了10000人民幣了~測試

其原理是由於該用戶訪問銀行操做網站後,該網站沒有惟一標識認證用戶,所以在短期再次訪問該連接不能辨認是不是用戶本身在進行轉帳操做,進而操做成功,這樣用戶在不知情的狀況下就損失了10000元,就算再次去銀行查帳也只會認爲是用戶本身轉出10000元。

那麼如何檢測某個地方是否存在CSRF攻擊:經過fiddlerCharles抓包查看接口是否有惟一標識(如:在增刪改的表單提交接口上,若沒有csrftoken或者refer校驗,則存在csrf漏洞

  1. 若是增刪改的表單有referer,需把referer參數改成www.baidu.com 看是否頁面返回正常;
  2. 若是沒有refer,看是否有csrftoken,更改token,看是否正常;
  3. 若沒有refercsrftoken,則說明存在問題

 

二、XSS

(跨站腳本攻擊,目的是在頁面中輸入可被控制的HTML代碼。因此有輸出的地方就有可能又XSS

如:設計上出現失誤:容許用戶在頁面中輸出HTML代碼,以下頁面

 

 

該頁面源代碼爲:

 

 

試着在輸入框中輸入:abcd123,獲得結果爲

也就是說咱們輸入的字符會被原封不動的輸出來,那麼若是在該輸入框中輸入以下JS代碼:

<script>alert(‘xss’)</script>會出現什麼狀況呢?由此看來XSS的原理就是利用輸出的環境來構造代碼。XSS就是在頁面執行你想要的JS,(以上舉例摘抄某博客,寫的比較基礎,比較容易懂:http://netsecurity.51cto.com/art/201408/448305_all.htm

以上例子輸入代碼點擊提交,成功彈出對話框,基本就能夠肯定存在XSS漏洞了。

那麼如何檢測某個地方是否是存在XSS,經過舉例也應該瞭解一些了。整理下來:

- 肯定輸入點&肯定輸出點

- 構造攻擊向量:--></textarea>/><img src=x onerror=alert(1)/><!--

- 刷新頁面,查看是否有彈框?

三、SQL注入

SQL注入詳解:

(一)https://baijiahao.baidu.com/s?id=1568598718373461&wfr=spider&for=pc

(二)

https://m9.baidu.com/feed/data/landingpage?s_type=news&dsp=wise&nid=3745639765741583179&p_from=4

(三)https://baijiahao.baidu.com/s?id=1568598718373461&wfr=spider&for=pc

 

原理:SQL語句中有容許用戶任意控制的經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令後果極其嚴重,能夠致使數據庫被攻擊者徹底控制,甚至致使服務器崩潰。因此,有參與到數據庫語句構造的地方就有可能有SQL注入。

如:一個簡單的登陸頁面,代碼方法中userName password 是沒有通過任何處理,直接拿前端傳入的數據。輸入正常數據,合併的SQL爲:

SELECT COUNT(*) FROM Login WHERE UserName='admin' AND Password='123456'

 

 

若是我輸入:admin’ --,密碼隨便輸,合併的SQL語句變爲:

SELECT COUNT(*) FROM Login WHERE UserName='admin'-- Password='123'

其中--爲註釋符,後面語句則被省略而登陸成功了。如圖:

 

 

這是最簡單的一種SQL注入。常見的SQL注入語句詳見(也可自行百度)

http://blog.csdn.net/ywb201314/article/details/52401511

那麼如何檢查是否存在SQL注入呢?一個簡單的方法:隨手在參數後面加一個英文半角單引號(‘)

緣由:單引號在SQL語句中一般是閉合字符串,通常程序無需閉合字符串,而是在代碼中替用戶完成這整個過程,用戶新增的單引號會使得程序的閉合亂序,每每頁面就會報錯。

四、鑑權失當

鑑權失當有多種,一般只有在有權限控制的功能中出現。

- 低權限用戶能夠控制高權限用戶才能使用的功能稱爲【垂直越權】

- 同等級用戶間能夠互相訪問本來只有對方纔能訪問的功能稱爲【水平越權】

- 某個功能在特定狀況下才能訪問,但能夠被繞過稱爲【上下文越權】

鑑權失當實際上是一個邏輯漏洞,常見的:管理後臺容易出現越權

測試方法:

- 準備兩個或者更多個不一樣權限的帳號

- 拷貝相關的URL,交給拎一個權限的帳號訪問

- 若是能看到前一個帳號的信息,就證實問題存在

五、上傳漏洞

容許文件上傳的地方就可能出現上傳漏洞(用於利用上傳漏洞來控制服務器的工具:WebShell

測試方法:用同種語言寫一個hello Word」,上傳這個文件至這個程序,若是在頁面中程序被執行了,(輸出源代碼不算數),則說明存在上傳漏洞

六、敏感信息泄露

相關文章
相關標籤/搜索