深信服應(yīng)用層安全培訓(xùn)-Web滲透測試系列-X-O課件_第1頁
深信服應(yīng)用層安全培訓(xùn)-Web滲透測試系列-X-O課件_第2頁
深信服應(yīng)用層安全培訓(xùn)-Web滲透測試系列-X-O課件_第3頁
深信服應(yīng)用層安全培訓(xùn)-Web滲透測試系列-X-O課件_第4頁
深信服應(yīng)用層安全培訓(xùn)-Web滲透測試系列-X-O課件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Web滲透測試系列_X_Oracle注入Web滲透測試系列_X_Oracle注入Oracle基礎(chǔ)滲透測試框架常規(guī)注入盲注入注入繞過PL/SQL注入總結(jié)培訓(xùn)提綱Oracle基礎(chǔ)培訓(xùn)提綱Oracle基礎(chǔ)Oracle基礎(chǔ)Oracle數(shù)據(jù)庫實例與數(shù)據(jù)庫標(biāo)識Oracle數(shù)據(jù)庫包含兩個方面,即Oracle數(shù)據(jù)庫和Oracle實例,用戶通過Oracle實例來訪問Oracle數(shù)據(jù)庫。數(shù)據(jù)庫是作為整體看待的數(shù)據(jù)集合,通常在安裝Oracle軟件的最后階段創(chuàng)建,用數(shù)據(jù)庫名加以標(biāo)識,數(shù)據(jù)庫名在創(chuàng)建數(shù)據(jù)庫時確認(rèn),且保存在控制文件中。實例是存取和控制數(shù)據(jù)庫的軟件機(jī)制。它由系統(tǒng)全局區(qū)(SystemGlobalArea)和Oracle進(jìn)程兩部分組成,和數(shù)據(jù)庫名一樣,實例也要唯一標(biāo)識,并且在安裝Oracle軟件時確認(rèn)。雖然數(shù)據(jù)庫名與實例名可以設(shè)置為相同的,但最好取不同標(biāo)識符。Oracle數(shù)據(jù)庫實例與數(shù)據(jù)庫標(biāo)識Oracle數(shù)據(jù)庫包含兩個Oracle數(shù)據(jù)庫文件Oracle數(shù)據(jù)庫有參數(shù)文件(.ora)、控制文件(.ctl)、數(shù)據(jù)文件(.dbf)、日志文件(.log)。當(dāng)Oracle數(shù)據(jù)庫啟動時,根據(jù)初始化參數(shù)文件找到控制文件,再由控制文件操作數(shù)據(jù)和日志文件。Oracle數(shù)據(jù)庫在建立和運(yùn)行中,都需要讀取一個初始化參數(shù)文件,它是一個文本文件,每個數(shù)據(jù)庫至少有一個初始化參數(shù)文件,一般命名為init.ora。Oracle數(shù)據(jù)庫文件Oracle數(shù)據(jù)庫有參數(shù)文件(.oraOracle數(shù)據(jù)庫物理結(jié)構(gòu)Oracle數(shù)據(jù)庫的物理結(jié)構(gòu)是面向操作系統(tǒng)的,它描述數(shù)據(jù)庫中的數(shù)據(jù)的存儲方式。在物理上Oracle數(shù)據(jù)庫文件包括數(shù)據(jù)文件、日志文件和控制文件。數(shù)據(jù)庫中的數(shù)據(jù),邏輯上存放在表空間里,但物理上確是存放在數(shù)據(jù)文件里的,每一個數(shù)據(jù)文件只與一個數(shù)據(jù)庫相聯(lián)系,數(shù)據(jù)庫文件一旦建立,就不能改變大小,一個表空間可以包含一個或多個數(shù)據(jù)文件。日志文件用于記錄數(shù)據(jù)庫所做的全部變更,以便在系統(tǒng)發(fā)生故障時進(jìn)行恢復(fù),每一個數(shù)據(jù)庫至少有兩個日志文件??刂莆募且粋€較少的二進(jìn)制文件,控制文件一旦被破壞,則無法對數(shù)據(jù)進(jìn)行操作。Oracle數(shù)據(jù)庫物理結(jié)構(gòu)Oracle數(shù)據(jù)庫的物理結(jié)構(gòu)是面向Oracle數(shù)據(jù)庫邏輯結(jié)構(gòu)數(shù)據(jù)庫的邏輯結(jié)構(gòu)是面向用戶的,數(shù)據(jù)庫的邏輯結(jié)構(gòu)包含表空間、段、范圍、數(shù)據(jù)塊和模式對象。從邏輯上看,一個數(shù)據(jù)庫由一個或多個表空間組成,表空間可以理解為一個或多個數(shù)據(jù)文件的邏輯集合;表空間的邏輯存儲對象是段,如用于表和索引的永久段,用于臨時表數(shù)據(jù)和排序的臨時段,用于事物回滾的回滾段;段由一組范圍組成;一組范圍由一組連續(xù)的數(shù)據(jù)塊組成;一個數(shù)據(jù)塊對應(yīng)磁盤上一個或多個物理塊。Oracle數(shù)據(jù)庫邏輯結(jié)構(gòu)數(shù)據(jù)庫的邏輯結(jié)構(gòu)是面向用戶的,數(shù)據(jù)Oracle的權(quán)限管理Oracle的權(quán)限可以分為系統(tǒng)權(quán)限與對象權(quán)限。系統(tǒng)權(quán)限規(guī)定用戶使用數(shù)據(jù)庫的權(quán)限,系統(tǒng)權(quán)限是對用戶而言的;對象權(quán)限規(guī)定對其他用戶的表或視圖的存取權(quán)限,是針對表或視圖而言的。Oracle的權(quán)限管理Oracle的權(quán)限可以分為系統(tǒng)權(quán)限與對Oracle的角色管理Oracle通常通過DBA、RESOURCE、CONNECT三種角色來管理系統(tǒng)權(quán)限。DBA角色擁有系統(tǒng)最高權(quán)限,被賦予DBA角色的用戶才可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu),被賦予RESOURCE角色的用戶只可以創(chuàng)建實體對象而不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu),被賦予CONNECT角色的用戶只可以登錄Oracle而不可以創(chuàng)建實體對象和創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。我們應(yīng)該對普通用戶賦予CONNECT,RESOURCE角色,對于dba管理用戶賦予CONNECT,RESOURCE,DBA角色。Oracle的角色管理Oracle通常通過DBA、RESOUOracle的用戶管理Oracle數(shù)據(jù)庫是個多用戶系統(tǒng)。為了保證數(shù)據(jù)庫系統(tǒng)的安全,Oracle數(shù)據(jù)庫管理系統(tǒng)配置了良好的安全機(jī)制。每一個Oracle數(shù)據(jù)庫都有個用戶表,它記載著每一個用戶的有關(guān)信息,一旦用戶進(jìn)入系統(tǒng),Oracle系統(tǒng)會通過這張表來檢查用戶的合法性。Oracle系統(tǒng)通過合理分配用戶的權(quán)限來管理用戶,通常Oracle將用戶分為三類,即DBA、RESOURCE和CONNECT三類角色,使不同用戶的權(quán)限各不相同。Oracle的用戶管理Oracle數(shù)據(jù)庫是個多用戶系統(tǒng)。為了Oracle的數(shù)據(jù)字典數(shù)據(jù)字典是Oracle存放有關(guān)數(shù)據(jù)庫信息的地方,是用來描述數(shù)據(jù)的,比如一個表的創(chuàng)建者的信息,創(chuàng)建時間信息,所屬表空間信息,用戶訪問權(quán)限信息等等。Oracle中的數(shù)據(jù)字典有靜態(tài)和動態(tài)之分。靜態(tài)數(shù)據(jù)字典主要是在用戶訪問數(shù)據(jù)字典時數(shù)據(jù)字典不會發(fā)生改變,例如用戶創(chuàng)建的表。動態(tài)數(shù)據(jù)字典是依賴數(shù)據(jù)庫運(yùn)行的性能的,反映數(shù)據(jù)庫運(yùn)行的一些內(nèi)在信息,所以在訪問這類數(shù)據(jù)字典時往往不是一成不變的。靜態(tài)數(shù)據(jù)字典主要是由表和視圖組成,數(shù)據(jù)字典中的表是不能直接被訪問的,但是可以訪問數(shù)據(jù)字典中的視圖。靜態(tài)數(shù)據(jù)字典的視圖分為三類,它們分別由三個前綴組成:user_*、all_*、dba_*。Oracle的數(shù)據(jù)字典數(shù)據(jù)字典是Oracle存放有關(guān)數(shù)據(jù)庫信Oracle集合并查詢Oracle集合查詢中的并查詢(unionselect)在SQL注入過程中常用來提取數(shù)據(jù)。Union是并的意思,它可以連接兩條或多條select語句的查詢結(jié)果。Oracle使用union必須要滿足兩個限定條件:一個就是兩個查詢返回的列數(shù)必須相同,即匹配列;另一個就是兩個select語句返回的數(shù)據(jù)所對應(yīng)的列必須類型相同或至少是兼容的,即匹配數(shù)據(jù)類型。Oracle集合并查詢Oracle集合查詢中的并查詢(uni滲透測試框架滲透測試框架框架概述利用Web應(yīng)用程序存在的OracleSQL注入漏洞,攻擊者可以做很多事情,其中最直接也是最普遍的就是提取數(shù)據(jù),除此之外還可以提升權(quán)限、讀寫文件、執(zhí)行系統(tǒng)命令等,直到攻擊者可以完全控制服務(wù)器。顯而易見的是攻擊者要想利用Oracle注入漏洞完全控制服務(wù)器不是一蹴而就的,是需要經(jīng)過尋找、探測、利用等過程,而這個過程就是指導(dǎo)我們安全滲透測試人員測試OracleSQL注入漏洞的框架。框架概述利用Web應(yīng)用程序存在的OracleSQL注入漏洞框架圖解框架圖解框架說明滲透測試框架圖解說明OracleSQL注入滲透測試分兩大模塊,左邊模塊是注入漏洞的探測階段,在該模塊的主要任務(wù)是覆蓋應(yīng)用程序所有的可測試點并對測試點進(jìn)行探測,確定每一個可測試點是否是一個可注入點,發(fā)現(xiàn)可注入點后,再探測清楚數(shù)據(jù)庫的基本信息,為右邊的漏洞利用提供依據(jù),左邊模塊從左到右是一個探測流程。右邊模塊是在左邊模塊探測的基礎(chǔ)上發(fā)起的實際的攻擊,每一個攻擊都為完成不同的目的,各自獨(dú)立。從框架圖中,可以清楚的了解SQL注入漏洞的探測階段才是滲透過程的重點,無論對于攻擊者還是對于滲透測試人員都是如此,發(fā)現(xiàn)了漏洞才能利用漏洞??蚣苷f明滲透測試框架圖解說明OracleSQL注入滲透測試常規(guī)注入常規(guī)注入收集應(yīng)用程序可測試點應(yīng)用程序可測試點指的是Web應(yīng)用程序頁面中用戶可控數(shù)據(jù)的入口點。用戶通過入口點輸入的數(shù)據(jù),如果沒有經(jīng)過驗證過濾而被用于操作數(shù)據(jù)庫,就有可能存在SQL注入漏洞。所以在收集可測試點的過程中,應(yīng)盡量確保覆蓋范圍,不遺漏每一個可測試點。常見的可測試點有url查詢字符串參數(shù)、post表單數(shù)據(jù)、cookie數(shù)據(jù),post表單數(shù)據(jù)往往還包含一些隱藏字段。當(dāng)然可測試點遠(yuǎn)不止這幾種,http請求報文頭中的任何消息報頭的值都可以作為可測試點,如Referer消息報頭等,但通常情況下我們只需要考慮常見的那三種可測試點即可(因為請求消息報頭一般不會被應(yīng)用程序用于操作數(shù)據(jù)庫)。收集應(yīng)用程序可測試點應(yīng)用程序可測試點指的是Web應(yīng)用程序頁面確定可測試點是可注入點確定可測試點是否是可注入點,是SQL注入滲透測試最重要的一個環(huán)節(jié)。確定的依據(jù)主要有兩種,一種是依據(jù)用戶輸入數(shù)據(jù)是否會導(dǎo)致應(yīng)用程序出現(xiàn)SQL語法錯誤,另一種是依據(jù)用戶輸入數(shù)據(jù)執(zhí)行結(jié)果的差異性。依據(jù)SQL語法錯誤判定通常指的就是單引號測試,依據(jù)SQL語句執(zhí)行的差異判定最經(jīng)典就是“and1=1”與“and1=2”測試。確定可測試點是可注入點確定可測試點是否是可注入點,是SQL注數(shù)據(jù)庫類型探測發(fā)現(xiàn)了SQL注入漏洞相當(dāng)于找到了切入點,對于攻擊者沒有任何意義,對于滲透測試人員沒有令人信服的憑證,所以萬里長征要想取得成功,我們還需一步步走。如果說發(fā)現(xiàn)SQL注入漏洞為我們指明了革命的方向,那么探測清楚數(shù)據(jù)庫類型就是革命的路線方針,它可以讓我們在整個滲透測試過程中少走彎路,為我們進(jìn)一步的發(fā)起總攻提供強(qiáng)有力的支持。常用的方法有Oracle特有dual數(shù)據(jù)表、Oracle錯誤信息、Oracle版本信息、Oracle特有拼串操作符、Oracle特有函數(shù)。數(shù)據(jù)庫類型探測發(fā)現(xiàn)了SQL注入漏洞相當(dāng)于找到了切入點,對于攻數(shù)據(jù)庫基本信息探測探測數(shù)據(jù)庫類型也是探測基本信息的一步,但知道了數(shù)據(jù)類型與版本還遠(yuǎn)遠(yuǎn)不夠,還不足以為進(jìn)一步滲透提供足夠的信息,還有一些基本信息需要探測清楚,包括當(dāng)前用戶名、當(dāng)前用戶權(quán)限、當(dāng)前數(shù)據(jù)庫名、當(dāng)前數(shù)據(jù)庫表信息、當(dāng)前數(shù)據(jù)庫列信息。知道了這些信息,基本上我們就可以明確利用這個SQL注入漏洞可以做些什么,是爆取數(shù)據(jù)、獲取敏感文件還是上傳木馬。數(shù)據(jù)庫基本信息探測探測數(shù)據(jù)庫類型也是探測基本信息的一步,但知爆取數(shù)據(jù)庫數(shù)據(jù)利用SQL注入漏洞爆取數(shù)據(jù)庫數(shù)據(jù),是SQL注入攻擊的最直接的價值體現(xiàn)。有了基本信息探測階段探測的數(shù)據(jù)庫表信息與數(shù)據(jù)庫列信息,爆取數(shù)據(jù)庫數(shù)據(jù)是水到渠成的事情。直接構(gòu)造SQL語句“select列名from表名”爆取數(shù)據(jù)。爆取數(shù)據(jù)庫數(shù)據(jù)利用SQL注入漏洞爆取數(shù)據(jù)庫數(shù)據(jù),是SQL注入盲注入盲注入一般推斷技術(shù)一般推斷技術(shù)分兩步:第一步推斷某個要探測的數(shù)據(jù)的長度N;第二步推斷N個字節(jié)的值。第一步推斷長度是非常重要的,如果沒有推斷出長度,就無法確定第二步要推斷多少個字節(jié)的值。以推斷用戶名為例它的推斷公式是:and(selectlength(sys_context('userenv','current_user'))fromdual)=d,d是整數(shù)and(selectsubstr(sys_context('userenv','current_user'),i,1)fromdual)='w',i取0..N,w取A-Z,a-z,0-9,_一般推斷技術(shù)一般推斷技術(shù)分兩步:第一步推斷某個要探測的數(shù)據(jù)的二分法推斷技術(shù)從推斷過程看二分法推斷技術(shù)同一般推斷技術(shù)一樣分兩步:第一步推斷要探測的數(shù)據(jù)的個數(shù)或長度或者兩者都有;第二步利用二分法發(fā)送8個請求推斷要探測的數(shù)據(jù)的每一個字節(jié)值。以推斷數(shù)據(jù)表表名為例它的推斷公式是:and(selectascii(substr(table_name,i,1))from(selectrownum,table_namefromuser_tableswhererownum<jorderby1desc)whererownum=1)>N,i取0..n-1,n是探測的數(shù)據(jù)表長度,j取2..m+1,m是探測的數(shù)據(jù)表的個數(shù),N取0..255二分法推斷技術(shù)從推斷過程看二分法推斷技術(shù)同一般推斷技術(shù)一樣分逐位推斷技術(shù)在逐位推斷技術(shù)中,長度個數(shù)的推斷也是必不可少的,以推斷TB_USRS數(shù)據(jù)表數(shù)據(jù)列的列名為例它的推斷公式是:andbitand((selectascii(substr(column_name,i,1))from(selectrownum,column_namefromuser_tab_columnswheretable_name=‘TB_USERS’andrownum<jorderby1desc)whererownum=1),2N)=2N,i取0..n-1,n是探測的TB_USERS第j-1個數(shù)據(jù)列的長度,j取2..m+1,m是探測的TB_USERS數(shù)據(jù)列的個數(shù),N取0..7逐位推斷技術(shù)在逐位推斷技術(shù)中,長度個數(shù)的推斷也是必不可少的,拆分與平衡技術(shù)拆分與平衡(ParameterSplittingandBalancing)是SQL盲注中經(jīng)常用到的技術(shù),分解合法輸入的操作稱為拆分,平衡則保證最終的查詢中不會包含不平衡的結(jié)尾單引號。其基本思想是收集合法的請求參數(shù),之后使用SQL關(guān)鍵字對它們進(jìn)行修改已保證與原數(shù)據(jù)不同,但當(dāng)數(shù)據(jù)庫解析它們時,二者的功能是等價的。department=Secu'||'rity與

department=Securityresume.jsp?id=0%2b(selectcasewhensubstr(sys_context('userenv','current_user'),0,1)='O'then1else0endfromdual)拆分與平衡技術(shù)拆分與平衡(ParameterSplitti判斷真假技術(shù)基于內(nèi)容基于錯誤基于時間判斷真假技術(shù)基于內(nèi)容注入繞過認(rèn)證注入繞過認(rèn)證注入繞過原理利用注入漏洞繞過認(rèn)證不同于常規(guī)注入和盲注,它的目的只是利用內(nèi)聯(lián)和終止式注入繞過應(yīng)用程序認(rèn)證,這種注入漏洞主要存在于應(yīng)用程序登錄頁面。字符串式內(nèi)聯(lián)注入繞過字符串式終止注入繞過數(shù)字式內(nèi)聯(lián)注入繞過數(shù)字式終止注入繞過注入繞過原理利用注入漏洞繞過認(rèn)證不同于常規(guī)注入和盲注,它的目字符串式內(nèi)聯(lián)注入繞過某公司W(wǎng)eb站點要求用戶輸入正確的用戶名和密碼進(jìn)行表單身份認(rèn)證,用戶輸入用戶名和密碼后,應(yīng)用向數(shù)據(jù)庫發(fā)送一個查詢以對用戶進(jìn)行認(rèn)證,查詢的格式為:select*fromadministratorswhereusername=‘[USERENTRY]’andpassword=‘[USERENTRY]’通過增加一個新的or條件(‘or1=1or’1‘=’1)繞過認(rèn)證,語句為:select*fromadministratorswhereusername=''or1=1or'1'='1'andpassword=''字符串式內(nèi)聯(lián)注入繞過某公司W(wǎng)eb站點要求用戶輸入正確的用戶名字符串式終止注入繞過某公司W(wǎng)eb站點要求用戶輸入正確的用戶名和密碼進(jìn)行表單身份認(rèn)證,用戶輸入用戶名和密碼后,應(yīng)用向數(shù)據(jù)庫發(fā)送一個查詢以對用戶進(jìn)行認(rèn)證,查詢的格式為:select*fromadministratorswhereusername=‘[USERENTRY]’andpassword=‘[USERENTRY]’通過username字段中注入“‘or’1‘=’1‘;--”,口令保持為空,語句如下:select*fromadministratorswhereusername=''or'1'='1';--'andpassword=''字符串式終止注入繞過某公司W(wǎng)eb站點要求用戶輸入正確的用戶名數(shù)字式內(nèi)聯(lián)注入繞過假設(shè)用戶可以登錄到Victim公司訪問自己的資料,格式如下:http:///messages/list.jsp?uid=1通過注入一個永真的條件“or1=1”語句,可以返回所有用戶的消息而不單是自己的消息,如下:/messages/list.jsp?uid=1or1=1此時服務(wù)器執(zhí)行的SQL語句為:select*frommessageswhereuid=1or1=1上述查詢會返回messages表所有的行,而不只是那些發(fā)送給自己的消息行,這樣我們就繞過了認(rèn)證訪問了發(fā)送給其他用戶的消息。數(shù)字式內(nèi)聯(lián)注入繞過假設(shè)用戶可以登錄到Victim公司訪問自己數(shù)字式終止注入繞過防御技術(shù)中包括從最開始的位置檢測清除用戶輸入中的所有空格或者截短用戶輸入的值,此時我們可以使用多行注釋繞過這些限制,還以數(shù)字式內(nèi)聯(lián)注入的例子說明,假設(shè)正在使用下列攻擊繞過驗證:/messages/list.jsp?uid=1/**/or/**/1=1新查詢不會在用戶輸入中包含空格,但是仍然有效,它返回message表中所有的行。數(shù)字式終止注入繞過防御技術(shù)中包括從最開始的位置檢測清除用戶輸PL/SQL注入PL/SQL注入確定PL/SQL注入漏洞要想成為PL/SQL注入漏洞,首先它必須是一個一般SQL注入漏洞,所以在滲透測試過程中,不需要特意去尋找PL/SQL注入漏洞,只需要按照滲透測試框架去發(fā)現(xiàn)確定SQL注入漏洞即可,發(fā)現(xiàn)了一個SQL注入漏洞,再在此基礎(chǔ)之上探測確定它是否還是一個PL/SQL注入漏洞。判斷的標(biāo)準(zhǔn)就是執(zhí)行一段PL/SQL代碼,如果能夠執(zhí)行,則可以確定是PL/SQL注入漏洞。確定PL/SQL注入漏洞要想成為PL/SQL注入漏洞,首先它PL/SQL注入提權(quán)在Oracle中,進(jìn)行提權(quán)一般需要結(jié)合Oracle特定版本的特定漏洞,且通過Web應(yīng)用的SQL注入提升權(quán)限非常困難,大多數(shù)權(quán)限提升攻擊方法均需要一個PL/SQL注入漏洞。sys.kupw$worker.m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論