TTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是Web應用程序中常見的數據傳輸協議。HTTP是一種無狀態的應用層協議,主要用于Web瀏覽器與服務器之間的通信。HTTPS則是在HTTP的基礎上加入了SSL(Secure Sockets Layer)或TLS(Transport Layer Security)協議,以提供數據加密和安全通信。
云服務器,高防服務器就選藍易云,頭條搜索:藍易云
云服務器,高防服務器就選藍易云,頭條搜索:藍易云
HTTP協議是一個基于請求-響應模式的協議。客戶端(通常是Web瀏覽器)向服務器發送請求,服務器處理請求并返回響應。HTTP請求和響應都由頭部和可選的主體組成。
HTTP的特點:
HTTPS在HTTP的基礎上加入了SSL/TLS協議,通過加密通信確保數據的安全性。SSL/TLS提供了三個主要功能:加密、數據完整性和身份驗證。
HTTPS的特點:
特性 | HTTP | HTTPS |
數據傳輸 | 明文傳輸 | 加密傳輸 |
安全性 | 容易被竊聽和篡改 | 提供數據加密和身份驗證 |
性能 | 較高 | 較低(因加密解密開銷) |
使用場景 | 不敏感數據傳輸 | 敏感數據傳輸(如支付信息) |
XSS(Cross-Site Scripting)攻擊是一種常見的Web安全漏洞,攻擊者通過在受信任的網站上注入惡意腳本,使其在用戶的瀏覽器上執行。XSS攻擊的主要目標是竊取用戶數據、劫持會話以及進行其他惡意操作。
反射型XSS攻擊通過將惡意腳本嵌入到URL參數中,誘騙用戶點擊包含惡意腳本的鏈接。當用戶點擊鏈接時,惡意腳本被反射到服務器的響應中,并在用戶瀏覽器中執行。
示例:
<a href="http://example.com?search=<script>alert('XSS')</script>">Click me</a>
存儲型XSS攻擊將惡意腳本存儲在服務器端的數據存儲中(如數據庫),當用戶訪問包含該數據的頁面時,惡意腳本被執行。此類攻擊通常發生在用戶輸入內容的地方,如評論區或論壇帖子。
示例:
<input type="text" name="comment" value="<script>alert('XSS')</script>">
DOM-based XSS攻擊利用網頁的DOM結構,通過操作DOM元素觸發惡意腳本。與反射型和存儲型不同,DOM-based XSS攻擊不依賴服務器端的響應,而是直接在客戶端進行。
示例:
<script>
var search = location.hash.substring(1);
document.write("<div>" + search + "</div>");
</script>
對用戶輸入的數據進行嚴格驗證和過濾,確保只接受預期格式的輸入。可以使用正則表達式或白名單來限制輸入內容。
示例:
import re
def validate_input(user_input):
if re.match("^[a-zA-Z0-9_]+$", user_input):
return True
return False
對輸出到瀏覽器的數據進行編碼和轉義,防止惡意腳本在瀏覽器中執行。常用的方法包括HTML實體編碼和JavaScript轉義。
示例:
<!-- HTML實體編碼 -->
<div>{{ user_input | escape }}</div>
內容安全策略(CSP)是一種Web安全策略,通過限制頁面可以加載的資源類型,防止XSS攻擊。可以通過設置HTTP頭部或HTML meta標簽來配置CSP。
示例:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self';">
為了更好地理解HTTP、HTTPS和XSS攻擊的概念,下面提供了一張思維導圖:
以上內容詳細介紹了HTTP和HTTPS的工作原理及其區別,以及XSS攻擊的類型和防范方法。通過這些知識的理解和應用,可以有效提升Web應用的安全性,防范潛在的安全威脅。
SS,中文名稱:跨站腳本攻擊。聽名字就很霸氣,的確是,不但霸氣,還很難學(好多程序員都不會,為啥?)。它還有一個孿生兄弟,名叫:SQL注入。這個聽過沒有?
為啥說SQL注入是它的孿生兄弟呢?這個就,小孩沒娘說來話長了。話說,Web互聯網剛起步的時候,就為這倆貨誕生埋下了罪惡種子。XSS如果換個名字就更容易理解,有人把XSS叫作:HTML注入,是不是感覺和SQL注入的名字很像?
有人要問了,你說他們是孿生兄弟,不會是因為他們的名字很像吧?Of course not。說他們是孿生兄弟是因為他們倆在安全界,總是被相提并論,總是一起被拿出來研究,總是一起被黑客利用,總是...。
言歸正傳,當年小編第一次接觸XSS的時候,不知其為何物。曾嘗試用它彈出一個alert框,心中充滿了困惑:彈個框出來,有個毛線用?于是就把它放一邊,潛心研究SQL注入,因為SQL注入再賴,但也能實現讓你繞過密碼驗證從而非法登錄,是不是很厲害?但是學了很長時間,只學會了一個:' or 1=1# 。感覺自己不適合學習這些高級的技術,因為自己只會根據書本上的例子,寫個測試Demo,離開書本,在實際運用中,無從下手。
痛定思痛,小編決定重新學習這方面的知識。從XSS開始,一步一個腳印,一步一個坑。
下邊從一個簡單的例子說明一下XSS到底是個啥東西?
首先:建一個PHP頁面,下圖是后臺代碼:
第二步:通過GET請求正常訪問這個頁面。鏈接參數param為:XSS測試。鏈接如下:
http://localhost:82/xxs-case1.php?param=XSS測試
結果如下圖:
看到結果,是我們代碼期望的結果,沒問題。
下一步兒我來測試一下XSS。
第三步:發送帶HTML代碼的參數,看看效果。鏈接參數:
http://localhost:82/xxs-case1.php?param=<script>alert('XSS測試')</script>
頁面沒有按我們預想的那樣,返回:<script>alert('XSS測試')</script>,而是把我們的參數當代碼,執行了,然后彈出了一個alert框。
總結一下:
首先重點強調,XSS攻擊跟后臺用什么語言開發無關,這里用PHP演示學習,只是因為小編擅長PHP,不是因為PHP的漏洞多。
其次:XSS,形成的原因是:開發人員沒有把數據和代碼區分開來。就像是應用軟件中的堆棧溢出一樣,用戶輸入的數據,影響到了軟件執行流程,最終導致漏洞的出現。
再次:如果有人問,XSS除了能彈出一個框外,還有啥用途?這個問題,我回答不了,我只能說:黑客的想象力有多大,XSS的危害就有多大。竊取cookie刪帖,嚴重的可以盜取賬戶,非法修改你的密碼。總之,越是復雜的應用場景,XSS越是能發揮它的潛力。
今天的分享就這些了,明天繼續。看在我碼了一千一百七十八個字的面子上,點個贊再走吧。
譯:h4d35
預估稿費:120RMB
投稿方式:發送郵件至linwei#360.cn,或登陸網頁版在線投稿
前言
本篇文章主要介紹了在一次漏洞懸賞項目中如何利用配置錯誤挖到一個認證繞過漏洞。
從JS文件中發現認證繞過漏洞
本文內容源自一個私有漏洞賞金計劃。在這個漏洞計劃中,接受的漏洞范圍限于目標網站少數幾個公開的功能。基于前期發現的問題(當我被邀請進這個計劃時,其他人一共提交了5個漏洞),似乎很難再挖到新的漏洞。同時,在賞金詳情中提到了這樣一句話:
如果你成功進入管理頁面,請立即報告,請勿在/admin中進行進一步的測試。
然而,目標網站中存在一個僅限于未認證和未經授權的用戶訪問的管理頁面。當我們訪問/login或/admin時會跳轉到https://bountysite.com/admin/dashboard?redirect=/。
對登錄頁面進行暴力破解也許是一個可行方案,但是我并不喜歡這種方式。看一下網頁源碼,沒什么有用的內容。于是我開始查看目標網站的結構。似乎目標網站的JS文件都放在少數幾個文件夾中,如/lib、/js、/application等。
有意思!
祭出神器BurpSuite,使用Intruder跑一下看能否在上述文件夾中找到任何可訪問的JS文件。將攻擊點設置為https://bountysite.com/admin/dashboard/js/*attack*.js。注意,不要忘記.js擴展名,這樣如果文件能夠訪問則返回200響應。確實有意思!因為我找到了一些可訪問的JS文件,其中一個文件是/login.js。
訪問這個JS文件https://bountysite.com/admin/dashboard/js/login.js,請求被重定向至管理頁面:) 。但是,我并沒有查看該文件的權限,只能看到部分接口信息。
但是我并沒有就此止步。這看起來很奇怪,為什么我訪問一個.js文件卻被作為HTML加載了呢?經過一番探查,終于發現,我能夠訪問管理頁面的原因在于*login*。是的,只要在請求路徑/dashboard/后的字符串中含有*login*(除了'login',這只會使我回到登錄頁面),請求就會跳轉到這個管理接口,但是卻沒有正確的授權。
我繼續對這個受限的管理接口進行了進一步的測試。再一次查看了頁面源碼,試著搞清楚網站結構。在這個管理接口中,有其他一些JS文件能夠幫助我理解管理員是如何執行操作的。一些管理操作需要一個有效的令牌。我試著使用從一個JS文件中泄露的令牌執行相關管理操作,然并卵。請求還是被重定向到了登錄頁面。我發現另外一個真實存在的路徑中也部署了一些內容,那就是/dashboard/controllers/*.php。
再一次祭出BurpSuite,使用Intruder檢查一下是否存在可以從此處訪問的其他任何路徑。第二次Intruder的結果是,我發現幾乎不存在其他無需授權即可訪問的路徑。這是基于服務器返回的500或者200響應得出的結論。
回到我在上一步偵察中了解到的網站結構中,我發現這些路徑是在/controllers中定義的,通過/dashboard/*here*/進行訪問。但是直接訪問這些路徑會跳轉到登錄頁面,似乎網站對Session檢查得還挺嚴格。此時我又累又困,幾乎都打算放棄了,但是我想最后再試一把。如果我利用與訪問管理頁面相同的方法去執行這些管理操作會怎么樣呢?很有趣,高潮來了:) 我能夠做到這一點。
通過訪問/dashboard/photography/loginx,請求跳轉到了Admin Photography頁面,并且擁有完整的權限!
從這里開始,我能夠執行和訪問/dashboard/*路徑下的所有操作和目錄,這些地方充滿了諸如SQL注入、XSS、文件上傳、公開重定向等漏洞。但是,我沒有繼續深入測試,因為這些都不在賞金計劃之內,根據計劃要求,一旦突破管理授權限制,應立即報告問題。此外,根據管理頁面顯示的調試錯誤信息可知,我之所以能夠訪問到管理頁面,是因為應用程序在/dashboard/controllers/*文件中存在錯誤配置。期望達到的效果是:只要請求鏈接中出現*login*,就重定向至主登錄頁面,然而,實際情況并不如人所愿。
后記
總之,這是有趣的一天!我拿到了這個漏洞賞金計劃最大金額的獎勵。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。