常見Web安全漏洞

2021-10-25 16:47:10 字數 4519 閱讀 7223

不同許可權賬戶之間的存在越權訪問

檢測防範

1伺服器端必須對每個頁面鏈結進行許可權判斷。

2使用者登陸後,伺服器端不應再以客戶端提交的使用者身份資訊為依據,而應以會話中服務端儲存的已登陸的使用者身份資訊為準。

3頁面提交的資源標誌與已登陸的使用者身份進行匹配比對,然後判斷其對當前鏈結是否有許可權。

4必須在伺服器端對每個請求url進行鑑權,而不能僅僅通過客戶端的選單遮蔽或者按鈕disable來限制。

後台sql語句拼接了使用者的輸入,而且web應用程式對使用者輸入資料的合法性沒有判斷和過濾,前端傳入後端的引數是攻擊者可控的,攻擊者通過構造不同的sql語句來實現對資料庫的任意操作。

檢測

對注入點進行測試,

單引號,雙引號–>報錯

and 1=1 and 1=2 『or 『1』 = 『1 『or 『1』 = 『2 兩次web伺服器響應不同

時間延時 sleep(5) 延遲響應

get post 引數、cookie引數、http請求頭

sqlmap進行測試

防範

(1)預編譯(preparedstatement)(jsp)

sql注入只對sql語句的編譯過程有破壞作用,而preparedstatement已經預編譯好了,執行階段只是把輸入串作為資料處理。而不再對sql語句進行解析。因此也就避免了sql注入問題。

(2)pdo(php)

pdo對於解決sql注入的原理也是基於預編譯。

(3)使用正規表示式過濾,對使用者輸入的資料進行嚴格的檢查,使用正規表示式對危險字串進行過濾,這種方法是基於黑名單的過濾

(4)使用 web 應用防火牆

報錯注入–>傳送門

寬位元組注入–>傳送門

攻擊者在web頁面插入惡意的script**,當使用者瀏覽訪問時,其中的script**會被執行,從而達到惡意攻擊。

檢測

查詢可能出現xss跨站的位置,搜尋框、資訊儲存等

常用測試語句

檢視原始碼,測試語句是否在系統響應html**中輸出。

可以輸出的話進行xss測試

防範攻擊者上傳web支援的動態指令碼程式(asp,asp.net,php,jsp等)

web程式對使用者上傳的型別不做檢測,或者被繞過

檢測

找到可以上傳的地方,上傳要求合理的合法檔案,檢視上傳點是否可以使用,需要一些繞過姿勢(大小寫切換,00截斷,抓包改型別等等),上傳webshell,連刀。

防範

客戶端檢測:使用js對上傳檢測,包括檔案大小,副檔名,檔案型別等

服務端檢測:對檔案大小,檔案路徑,副檔名,檔案型別,檔案內容檢測,對檔案重新命名等。

伺服器端上傳目錄設定不可執行許可權。

檢查**有沒有檔案解析漏洞和檔案包含漏洞。

將檔案上傳到單獨的檔案伺服器,並且單獨設定檔案伺服器的網域名稱。

檔案上傳過濾和繞過–>傳送門

檢測:防範**存在配置缺陷,導致**目錄可以被任意瀏覽,這會導致**很多隱私檔案與目錄洩露,比如資料庫備份檔案、配置檔案等,攻擊者利用該資訊可以為進一步入侵**做準備。

檢測防範

對使用者傳過來的引數名進行編碼,對檔案型別進行白名單控制,拒絕惡意字元或空字元。

apache中關閉目錄瀏覽功能:開啟apache配置檔案httpd.conf,查詢「options indexes followsymlinks」,修改為「 options -indexes」(減號表示取消,儲存退出,重啟apache)。

nginx 中預設不會開啟目錄瀏覽功能,若您發現當前已開啟該功能,可以編輯nginx.conf檔案,刪除如下兩行:autoindex on;autoindex_exact_size on,然後重啟nginx。

不斷惡意或欺詐性地重複乙個有效的資料報,重放攻擊者可以攔截並重**該資料到服務端,伺服器端未對使用者提交的資料報重放進行有效限制。

檢測

抓包抓取登入請求,獲得使用者和密碼引數

密碼字典 暴力破解

防範

新增token、時間戳、驗證碼

攻擊者以使用者的身份完成操作達到各種目的

檢測

登入**,使用bp構造csrf poc 儲存在html

傳送到另一台伺服器,訪問html檢視是否可以實現html功能

防範對系統使用者口令等機密資訊的保護不足,攻擊者利用攻擊工具,從網路上竊取合法使用者的口令資料,從而登入系統執行非法操作。

檢測

使用工具抓取關於使用者的資料報

檢視相關引數是否做加密處理

防範

對密碼資訊進行加密處理

使用加密演算法 不使用易破解的加密方式

注入一段使用者能控制的指令碼或**,並讓伺服器端執行,對要包含的檔案變數名沒有進行檢測或初始化。

include include_once require require_once

檢測

在檔案包含的地方,包含攻擊者的檔案進行測試

防範

盡量不使用檔案包含

使用include,如include(『test.php』)

包含檔案驗證–是否為白名單,白名單過濾

路徑限制,進製目錄跳轉字元

關閉 allow_url_include=on(遠端檔案包含)、allow_url_fopen=on(本地檔案包含)

檔案包含–>傳送門

程式邏輯不嚴謹或太複雜,導致一些邏輯分支不能夠正常處理或處理錯誤。

檢測

一般在任意密碼修改(沒有密碼驗證),越權訪問,密碼找回,交易支付金額,進行抓包重放檢視是否與邏輯不符合。

防範

業務流程需要有必要的控制引數,同時避免控制引數被繞過。

防止繞過流程節點和檢查參考(如token等)

不需要使用者操作或訪問的資料避免傳送到客戶端(如驗證碼傳送給客戶端)

驗證所有輸入(數字的邊界、正負值等)

防範資源消耗攻擊(如簡訊等)、拒絕服務攻擊(大規模資料查詢,如搜尋萬用字元)等

使用者通過瀏覽器提交執行命令,由於伺服器端沒有針對執行函式做過濾,攻擊者的輸入作為系統命令的引數拼接到命令列中。

檢測

在瀏覽器輸入 拼接&、 | 、|| (命令連線符)

防範

進行命令執行的函式或者方法之前,都引數進行過濾

引數的值盡量用引號包裹,並在拼接前呼叫addslashes進行轉義

禁止能執行系統命令的函式,可在php的配置檔案中設定 disable_functions

命令執行和**執行–>傳送門

應用程式在呼叫一些能夠將字串轉換為**的函式時,沒有考慮使用者是否控制這個字串,將造成**執行漏洞。

檢測

原始碼,**審計

防範

保證使用者不能接觸eval()函式,使用正則嚴格判斷

字串使用單引號包裹,並在插入前進行 addslashes()

對preg_replace()放棄使用e修飾符,保證第二個引數中對於正則匹配出的物件,用單引號包裹。

命令執行和**執行–>傳送門

由攻擊者構造請求,有服務端發起請求的安全漏洞,本質是資訊洩露。

檢測防禦

限制請求的埠只能為web埠,只允許訪問http,https的請求(禁掉file協議)

限制不能訪問內網的ip,以防止對內網進行攻擊

遮蔽返回的詳細資訊。

ssrf–>傳送門

在應用程式解析xml輸入時,xml檔案的解析依賴libxml 庫,而 libxml2.9 以前的版本預設支援並開啟了對外部實體的引用,服務端解析使用者提交的xml檔案時,未對xml檔案引用的外部實體(含外部一般實體和外部引數實體)做合適的處理,並且實體的url支援 file:// 和 ftp:// 等協議,導致可載入惡意外部檔案 和 **,造成任意檔案讀取、命令執行、內網埠掃瞄、攻擊內網**、發起dos攻擊等危害。

檢測

通過手工篡改**中xml實體中的頭部,加入相關的讀取檔案或者是鏈結,或者是命令執行等,如file:///$path/file.txt;http://url/file.txt;看看能否顯示出來

防範

xml解析庫在呼叫時嚴格禁止對外部實體的解析。

使用開發語言提供的禁用外部實體的方法

過濾使用者提交的xml資料

xxe(xml外部實體注入)漏洞–>傳送門

Web安全漏洞

web的大多數安全問題都屬於下面三種型別之一 1 伺服器向公眾提供了不應該提供的服務。2 伺服器把本應私有的資料放到了公開訪問的區域。3 伺服器信賴了來自不可信賴資料來源的資料。顯然,許多伺服器管理員從來沒有從另乙個角度來看看他們的伺服器,例如使用埠掃瞄程式。如果他們曾經這樣做了,就不會在自己的系統...

常見應用安全漏洞

1.注入 注入攻擊漏洞,例如sql os ldap注入。這些攻擊發生在當不可信的資料作為命令或查詢語句的一部分,被傳送給直譯器的時候,攻擊者傳送的惡意資料可以欺騙直譯器,以執行計畫外的命令或未授權的查詢。2.失效的身份認證和會話管理 與身份認證和會話管理相關的應用程式功能往往得不到正確的實現,這就導...

WEB服務的安全漏洞

隨著網路的飛速發展,如今很多系統都是基於 b s的模式提供 web服務,web系統很方便但也很危險,傳輸的資料很容易被截獲,從而給使用者造成損失,如果部署了 ssl數字證書的話,在很大程度上能保證資料的安全,尤其是在傳輸過程中。ssl secure sockets layer 安全套接層 其繼任者傳...