绕过web认证学习总结
生活随笔
收集整理的這篇文章主要介紹了
绕过web认证学习总结
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
繞過(guò)Web授權(quán)和認(rèn)證之篡改HTTP請(qǐng)求
http://www.myhack58.com/Article/html/3/8/2015/62279_17.htm?什么是HTTP請(qǐng)求
?
超文本傳輸協(xié)議(HTTP)提供了多種請(qǐng)求方法來(lái)與web服務(wù)器溝通。當(dāng)然,大多
數(shù)方法的初衷是幫助開(kāi)發(fā)者在開(kāi)發(fā)或調(diào)試過(guò)程中部署和測(cè)試HTTP應(yīng)用。如果服務(wù)
器配置不當(dāng),這些請(qǐng)求方法可能被用于一些不法用途。比如:跨站跟蹤(XST)
是一種高危漏洞,這種跨站腳本能利用HTTP TRACE請(qǐng)求。
?
GET和POST是開(kāi)發(fā)者獲取服務(wù)器信息的最常用請(qǐng)求,沒(méi)有之一。可以列舉出常用
HTTP請(qǐng)求:
?
HEAD
GET
POST
PUT
DELETE
TRACE
OPTIONS
CONNECT
理論上,由于這些請(qǐng)求允許攻擊者修改web服務(wù)器上存儲(chǔ)的文件、或者刪除服務(wù)
器上web頁(yè)面、甚至上傳web shell并獲取用戶的身份信息,它們都有可能制造出
嚴(yán)重的安全漏洞。另外出于安全考慮,服務(wù)器root權(quán)限必須禁用如下請(qǐng)求:
?
PUT:允許上傳新文件至web服務(wù)器。攻擊者可以上傳惡意文件(比如可以執(zhí)行調(diào)
用cmd.exe命令的ASP/PHP文件)或者將受害者服務(wù)器用于存儲(chǔ)自己的文件。
DELETE:允許刪除web服務(wù)器上的文件。攻擊者可以簡(jiǎn)單粗暴的丑化受害者網(wǎng)站
或?qū)嵤〥DoS攻擊。
CONNECT:允許客戶端將服務(wù)器配置為代理。
TRACE:可以在客戶端上回顯任何發(fā)送到服務(wù)器上的字符串。這個(gè)請(qǐng)求本來(lái)是用
于幫助開(kāi)發(fā)者調(diào)試的。但這個(gè)看似人畜無(wú)害的請(qǐng)求,卻被Jeremiah Grossman發(fā)
現(xiàn)可以被利用以實(shí)施XST攻擊。
?
即使一些Web服務(wù)經(jīng)常會(huì)用到PUT或DELETE請(qǐng)求,但當(dāng)我們真的遇到如上請(qǐng)求時(shí),
務(wù)必謹(jǐn)慎一些,確認(rèn)這些請(qǐng)求是由可信用戶在安全的環(huán)境中發(fā)出的。很多網(wǎng)絡(luò)環(huán)
境使用基于請(qǐng)求的認(rèn)證及訪問(wèn)控制策略(VBAAC)。但是否會(huì)被繞過(guò)呢?我們來(lái)
看下面這個(gè)例子:
?
JAVA EE web XML file
<security-constraint>
? ? <web-resource-<a?
href="http://resources.infosecinstitute.com/collection/">collection</a
>>
? ? <url-pattern>/auth/*</url-pattern>
? ? <http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
? ? <role-name>root</role-name>
</auth-constraint>
</security-constraint>
?
這樣的設(shè)定是告訴HTTP Servlet的Container,僅允許用戶角色為root的使用者
,通過(guò)GET和POST的請(qǐng)求,獲取路徑為/auth/*下的資源。乍一看,代碼限定了用
戶訪問(wèn)權(quán)限,好像沒(méi)什么問(wèn)題。但是,我們卻可以通過(guò)篡改HTTP請(qǐng)求來(lái)繞過(guò)限制
!為何?因?yàn)樗](méi)有限制其他的HTTP請(qǐng)求應(yīng)該被服務(wù)器拒絕!
?
我們可以用HEAD或者其他非GET/POST請(qǐng)求,諸如PUT, TRACK, TRACE, DELETE等
,或者還可以嘗試發(fā)送任意字符串(如ASDF),無(wú)比輕松的繞過(guò)這條規(guī)則,達(dá)到
獲取/auth/*路徑下文件的目的。
我們總結(jié)一下可能會(huì)發(fā)生繞過(guò)的情形:
?
允許非等冪的GET請(qǐng)求或者允許任意HTTP方法
僅通過(guò)列出HTTP請(qǐng)求來(lái)控制安全
不禁用沒(méi)有列出的HTTP請(qǐng)求
以上是發(fā)生繞過(guò)的幾種最常見(jiàn)情形。各種排列組合或細(xì)節(jié)差異隨實(shí)際的服務(wù)器配
置而千變?nèi)f化。但萬(wàn)變不離其宗,看似復(fù)雜的實(shí)際案例背后的原理卻是相同的。
?
如何利用HTTP Verb Tampering繞過(guò)VBAAC
?
HEAD請(qǐng)求
?
如上所述,HEAD請(qǐng)求與GET類似,只不過(guò)服務(wù)器在響應(yīng)時(shí)不會(huì)返回消息體。設(shè)想
你的應(yīng)用中有一段URL,若僅通過(guò)“拒絕GET和POST獲取/auth路徑下文件”這條
規(guī)則保護(hù),仍然是極不安全的。
?
http://httpsecure.org/auth/root.jsp?cmd=adduser
?
如果你強(qiáng)制瀏覽器訪問(wèn)該URL,安全機(jī)制會(huì)被觸發(fā),檢查請(qǐng)求資源和請(qǐng)求者是否
符合授權(quán)規(guī)則。第一個(gè)當(dāng)然就是檢查并阻斷瀏覽器發(fā)送的GET和POST請(qǐng)求了。這
時(shí),只要你使用瀏覽器代理,比如Suite Burp,將攔截下來(lái)的GET請(qǐng)求替換成
HEAD。由于HEAD未被列入安全約束規(guī)則中而暢行無(wú)阻,因此adduser命令將被成
功調(diào)用,而你的瀏覽器也將得到一個(gè)空消息體作為HEAD請(qǐng)求的響應(yīng)。
任意HTTP請(qǐng)求
?
包括PHP, JAVA EE在內(nèi)的大多數(shù)平臺(tái)都默認(rèn)允許使用任意的HTTP請(qǐng)求。而這些請(qǐng)
求可以取代GET繞過(guò)規(guī)則。更可怕的是,使用任意HTTP請(qǐng)求可以讓你看到內(nèi)部頁(yè)
面,甚至是網(wǎng)頁(yè)源碼,而這些是HEAD辦不到的。某些服務(wù)器廠商允許HEAD請(qǐng)求,
如下服務(wù)器廠商默認(rèn)允許HEAD請(qǐng)求:
?
APACHE 2.2.8
JBOSS 4.2.2
WEBSPERE 6.1
TOMCAT 6.0
IIS 6.0
WEBLOGIC 8.2
科普:繞過(guò)Web授權(quán)和認(rèn)證之篡改HTTP請(qǐng)求
來(lái)源:Sobug漏洞時(shí)間 作者:佚名 時(shí)間:2015-05-12 TAG: 我要投稿
?
表面上,允許使用HEAD方法并不是一個(gè)漏洞,因?yàn)镽FC也有這種要求。讓我們來(lái)
看看一些最流行的應(yīng)用安全機(jī)制是否會(huì)給我們繞過(guò)VBAAC以可乘之機(jī)。如下是一
些可能會(huì)受到篡改請(qǐng)求影響的服務(wù)器:
?
服務(wù)器類型
是否允許HTTP請(qǐng)求?
是否可繞過(guò)?
HEAD請(qǐng)求是否可用?
JAVA EE
YES
YES
YES
.htaccess
YES
YES(默認(rèn)配置)
YES
ASP.NET
YES
YES(默認(rèn)配置)
YES
如何防范HTTP Verb Tampering
?
如何防范HTTP Verb Tampering JAVA EE容器,讓我們來(lái)看看如下安全約束策略
:
?
<security-constraint>
<display-name>Example Security Constraint Policy</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>/auth/security/*
</url-pattern>
<!-- If you list http methods, only those methods are protected -->
<http-method>POST</http-method>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>GET</http-method>
</web-resource-collection>
...
</security-constraint>
?
以上代碼中,偉大的攻城獅列舉并限制了POST, PUT, DELETE, GET等方法。因此
,只有當(dāng)瀏覽器使用這些在<http-method>表中列舉出的請(qǐng)求去獲
取/auth/security/*路徑下文件時(shí)才會(huì)觸發(fā)安全約束策略。
?
因此,把其他未列出的方法也一并禁用才是完善這條規(guī)則的最優(yōu)解。遺憾的是,
以上策略目前卻并非如此嚴(yán)謹(jǐn)。比如,由于HEAD并沒(méi)有被列舉出來(lái),利用HEAD請(qǐng)
求不難繞過(guò)此策略。確保JAVA EE安全性的正確打開(kāi)方式是從安全約束策略中去
除所有<http-method>,并使安全約束策略針對(duì)所有的HTTP請(qǐng)求方法。但如果您
仍想限制某些特定方法,建議您參考如下方法,分2步創(chuàng)建安全約束策略。
<security-constraint>
? ? <web-resource-collection>
? ? ? ? <web-resource-name>site</web-resource-name>
? ? ? ? <url-pattern>/*</url-pattern>
? ? ? ? <http-method>GET</http-method>
? ? </web-resource-collection>
...
</security-constraint>
<security-constraint>
? ? <web-resource-collection>
<web-resource-name>site</web-resource-name>
? ? ? ? <url-pattern>/*</url-pattern>
? ? </web-resource-collection>
...
</security-constraint>
?
如上,第1條策略將拒絕GET請(qǐng)求,而第2條策略則拒絕所有請(qǐng)求方法。
?
ASP.NET授權(quán)
?
我們知道ASP.NET授權(quán)的安全機(jī)制是可能被繞過(guò)的,舉幾個(gè)例子來(lái)說(shuō)明吧。
<authorization>
? ? <allow verbs="POST" users="joe"/>
? ? <allow verbs="GET" users="*"/>
? ? <deny verbs="POST" users="*"/>
</authorization>
在上面這段代碼中:
?
允許用戶joe發(fā)送POST請(qǐng)求
允許所有用戶發(fā)送GET請(qǐng)求
拒絕所有用戶發(fā)送POST請(qǐng)求
?
由于第2條允許所有用戶發(fā)送GET請(qǐng)求,都無(wú)需用HEAD繞過(guò)了,簡(jiǎn)直毫無(wú)安全性可
言。不要覺(jué)得你的智商被侮辱了,我們繼續(xù)往下看。以下代碼做了部分限制,但
仍然會(huì)被HEAD繞過(guò)。
?
<authorization>
? ? <allow verbs="GET" users="root"/>
<allow verbs="POST" users="joe"/>
? ? <deny verbs="POST,GET" users="*" />
</authorization>
?
原因是逐條匹配以下規(guī)則后,發(fā)現(xiàn)HEAD請(qǐng)求不在限制范圍內(nèi)。
?
允許用戶root發(fā)送GET請(qǐng)求
允許用戶joe發(fā)送POST請(qǐng)求
拒絕所有用戶發(fā)送POST, GET請(qǐng)求
由于.NET會(huì)悄悄地在所有規(guī)則的最后插入一條規(guī)則允許所有用戶發(fā)送所有請(qǐng)求。
因此,HEAD請(qǐng)求會(huì)被放行。為避免這種情況,我們應(yīng)該在最后一條規(guī)則后加上“
拒絕所有用戶發(fā)送所有請(qǐng)求”。于是,有了如下代碼:
?
<authorization>
? ? <allow verbs="GET" users="root"/>
? ? <allow verbs="POST" users="joe"/>
? ? <deny verbs
="*" users="*" />
</authorization>
?
這樣才能完全確保只有那些在規(guī)則白名單中的特定用戶才被允許發(fā)送特定HTTP請(qǐng)
求。
?
總結(jié)
?
在業(yè)務(wù)許可的情況下,加上”deny all”。
?
配置你的web服務(wù)器和應(yīng)用服務(wù)器完全禁用HEAD請(qǐng)求。
?
轉(zhuǎn)載請(qǐng)注明原文出自SOBUG眾測(cè)平臺(tái),并附帶本文鏈接。
原文參考:
http://resources.infosecinstitute.com/http-verb-tempering-bypassing-
web-authentication-and-authorization/
========
關(guān)于繞過(guò)web認(rèn)證的一點(diǎn)思路
想必大家應(yīng)該知道cmcc和chinanet之類的連進(jìn)去之后會(huì)自動(dòng)彈出賬戶密碼輸入界
面,現(xiàn)在很多的路由器都自帶這種web認(rèn)證功能。在某論壇看到,dns隧道技術(shù)。
通過(guò)請(qǐng)求dns查詢數(shù)據(jù)包上網(wǎng)。本人親測(cè),磊科nr235w路由器,自帶web認(rèn)證功能
的路由器,繞過(guò)認(rèn)證上網(wǎng)。在這發(fā)帖是希望找到朋友共同研究,做出能滿足普通
人快速接入上網(wǎng)的軟件。先介紹我用的方法。叫做dns隧道技術(shù).大家接入認(rèn)證的
路由后,可以cmd試試ns lookup baidu.com查詢一下百度地址,如果出現(xiàn)ip證明
dns數(shù)據(jù)查詢的請(qǐng)求是可用的。需要dns服務(wù)器.有些網(wǎng)站提供免費(fèi)的dns解析,例
如freedns.一定要帶ns解析。通過(guò)ns記錄解析到網(wǎng)址'網(wǎng)址再解析到ip到達(dá)我們
發(fā)送數(shù)據(jù)包的服務(wù)器...(因?yàn)閚s記錄不能直接解析ip所以才要解析兩步)然后是
那臺(tái)ip的機(jī)子,數(shù)據(jù)交換需要開(kāi)個(gè)代理.例如http代理.把dns解析過(guò)來(lái)對(duì)應(yīng)的端
口對(duì)應(yīng)到代理端口,就能實(shí)現(xiàn)上網(wǎng),同時(shí)需要一個(gè)dns和tcp數(shù)據(jù)轉(zhuǎn)化軟件例如
tcp-over-dns.hryoka.iodine這三個(gè)。。。可能大家有些不理解,因?yàn)闄C(jī)子打的
,有些講不清。。。過(guò)幾天我發(fā)圖文教程哈。
========
繞過(guò)授權(quán)驗(yàn)證
授權(quán)在網(wǎng)絡(luò)上的意思是指,對(duì)特定資源的讀寫權(quán)限。通俗地講,就是你的權(quán)限能讓你做什么事情。而驗(yàn)證則表示你是否真的可以對(duì)這些資源進(jìn)行讀寫。
授權(quán)問(wèn)題是指訪問(wèn)了沒(méi)有授權(quán)的資源或信息,也叫作越權(quán)。越權(quán)又可以分為
兩種:水平越權(quán)與垂直越權(quán)。
1.水平越權(quán)
例如,http://www.xxx.org提供了用戶修改資料的功能,當(dāng)訪問(wèn)URL:
http://www.xxx.org /userinfo.action?id=2時(shí),將會(huì)顯示自己的信息,并且可
以編輯,UserInfo.java源代碼如下:
public String ?execute(){
int id = this.user.getUserId();
this.user = new UserProxy.findUserById(id);
return SUCCESS;
}
這段代碼并沒(méi)有對(duì)ID做任何驗(yàn)證,直接接收用戶的ID,然后根據(jù)ID來(lái)查詢用
戶信息。
當(dāng)提交URL為:http://www.xxx.org/userinfo.action?id=3時(shí),程序就會(huì)按
部就班地執(zhí)行,返回ID為3的User信息到頁(yè)面中,這就是水平越權(quán)。
總的來(lái)說(shuō),水平越權(quán)就是相同級(jí)別(權(quán)限)的用戶或者同一角色的不同用戶
之間,可以越權(quán)訪問(wèn)、修改或者刪除的非法操作。
2.垂直越權(quán)
垂直越權(quán)又被分為向上越權(quán)與向下越權(quán)。比如,某些網(wǎng)站,像發(fā)布文章、刪
除文章等操作是屬于管理員做的事情,假設(shè)一個(gè)匿名用戶也可以做相同的事情,
這就叫作向上越權(quán)。
向下越權(quán)與向上越權(quán)恰恰相反,向下越權(quán)是一個(gè)高級(jí)別用戶可以訪問(wèn)一個(gè)低
級(jí)別的用戶信息。這樣做似乎沒(méi)錯(cuò),而且很多網(wǎng)站都是這么做的,包括低級(jí)別密
碼也可以被高級(jí)別用戶掌控,但這樣做可以說(shuō)是完全錯(cuò)誤!因?yàn)榧词箼?quán)限再低的
用戶都有他自己的隱私,可能用戶為了更方便,會(huì)將自己的銀行卡號(hào)與密碼記錄
在網(wǎng)站中,這些信息都屬于用戶的隱私。
========
總結(jié)
以上是生活随笔為你收集整理的绕过web认证学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构学习工具总结
- 下一篇: powertool 使用学习总结