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