![PHP代碼審計匯總_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/64c97075-79da-45c8-98ac-67c0a3a41031/64c97075-79da-45c8-98ac-67c0a3a410311.gif)
![PHP代碼審計匯總_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/64c97075-79da-45c8-98ac-67c0a3a41031/64c97075-79da-45c8-98ac-67c0a3a410312.gif)
![PHP代碼審計匯總_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/64c97075-79da-45c8-98ac-67c0a3a41031/64c97075-79da-45c8-98ac-67c0a3a410313.gif)
![PHP代碼審計匯總_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/64c97075-79da-45c8-98ac-67c0a3a41031/64c97075-79da-45c8-98ac-67c0a3a410314.gif)
![PHP代碼審計匯總_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/64c97075-79da-45c8-98ac-67c0a3a41031/64c97075-79da-45c8-98ac-67c0a3a410315.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、PHP代碼審計構建安全能力,創(chuàng)造業(yè)務價值目 錄12代碼審計之背景介紹 代碼審計之實戰(zhàn)漏洞分享23代碼審計之發(fā)展趨勢什么是代碼審計? 由具備豐富的編碼經驗并對安全編碼及應用安全具有很深刻理解的安全服務人員,根據(jù)一定的編碼規(guī)范和標準,針對應用程序源代碼,從結構、脆弱性以及缺陷等方面進行審查,最終輸出代碼審計報告,完善應用程序,提升自身安全水平怎么做代碼審計?(從發(fā)現(xiàn)安全漏洞維度出發(fā))具備哪些知識點 (運行環(huán)境搭建、熟悉開發(fā)語言、各類函數(shù)應用)了解常用漏洞產生成因 (SQL、xss、上傳漏洞、LFI、代碼執(zhí)行、CSRF等等)漏洞調試 (斷點輸出、變量跟蹤、漏洞關鍵函數(shù))高級應用漏洞(奇技淫巧應用:二
2、次注入、截斷注入、條件競爭、二次攻擊、黑白盒fuzz等)Poc編寫(數(shù)據(jù)包構造、語言類型)代碼審計帶來的好處?發(fā)現(xiàn)更多“隱蔽”的安全漏洞企業(yè)合規(guī)性要求提升企業(yè)整體安全水平提升企業(yè)安全開發(fā)編碼規(guī)范目 錄12代碼審計之背景介紹 代碼審計之實戰(zhàn)漏洞分享53代碼審計之發(fā)展趨勢Wamp WAMP是指在Windows服務器上使用Apache、MySQL和PHP的集成安裝環(huán)境,可以快速安裝配置Web服務器,一般說來,大家都習慣 于將Apache、MySQL、PHP架設在Linux系統(tǒng)下,但是,不可否認的是Windows也有其優(yōu)點,就是易用,界面友好,軟件豐富,操作起來非 常方便,因此對新手來說在Window
3、s平臺下使用Apache、MySQL、PHP也確實是一個不錯的選擇。下面我將介紹幾款在Windows下可以使 用的WAMP集成環(huán)境代碼查找工具上傳漏洞上傳漏洞文件包含漏洞文件包含漏洞邏輯漏洞邏輯漏洞遠程代碼執(zhí)行漏洞XPATH注入漏洞變量覆蓋漏洞變量覆蓋漏洞跨站腳本漏洞SQL注入漏洞目錄遍歷漏洞Csrf漏洞命令注入漏洞常見漏洞展示文件包含包含漏洞 代碼執(zhí)行執(zhí)行任意代碼漏洞命令執(zhí)行執(zhí)行任意命令漏洞文件系統(tǒng)操作文件(目錄)讀寫刪除等漏洞數(shù)據(jù)庫操作SQL注射漏洞數(shù)據(jù)顯示 XSS等客服端漏洞常見漏洞展示 審計代碼審計代碼審查相關危險函數(shù)XSSechoprint*SQL injectionmysql_qu
4、erymysqli_querymysqli:queryPDO:queryCode execassertevalpreg_replaceinclude*require*Command execpassthruSystempopenFilefreadcopyfputsunlinkOtherextractparse_strunserializeXss DiscuzDiscuz!7.X!7.X系列一處問題可導致反射型系列一處問題可導致反射型XSSXSS /bugs/wooyun-2010-084097 THINKSNS某功某功能高??缯灸芨呶?缯?http:/w
5、/bugs/wooyun-2012-013686 dedecms某處某處XSS打后打后臺臺 /bugs/wooyun-2014-072397SQL注入 DedeCMS最新版前臺最新版前臺SQL注射注射 /bugs/wooyun-2014-063441 Discuz某版本某版本SQL注射漏洞注射漏洞 /bugs/wooyun-2014-080359 ECSHOP最新全版本通殺最新全版本通殺注入注入 /bugs/w
6、ooyun-2014-086052代碼執(zhí)行 PHPMyWind最新版代碼執(zhí)行漏最新版代碼執(zhí)行漏洞洞 /bugs/wooyun-2010-082805 江南科友堡壘機遠程代碼執(zhí)行漏洞江南科友堡壘機遠程代碼執(zhí)行漏洞 /bugs/wooyun-2010-076864 cmstop 遠程代碼執(zhí)行漏遠程代碼執(zhí)行漏洞洞 /bugs/wooyun-2014-054693 .Xss當提交當提交http:/ G博士,博士,xssxss發(fā)揮的出神入化(遠程代碼執(zhí)行、埋雷式攻擊)發(fā)揮的出神入化(遠
7、程代碼執(zhí)行、埋雷式攻擊)SQL Injection1、注入之-無單引號$contentid= $_GETcontentid;$r = $this-dbget_one(“SELECT * FROM ”.DB_PRE.“content WHERE contentid=$contentid”); 攻擊條件:無過濾,直接產生SQL注入攻擊。2、注入之-有單引號(無反轉義函數(shù))$contentid= $_GETcontentid;$r = $this-dbget_one(“SELECT * FROM ”.DB_PRE.“content WHERE contentid=$contentid”); 攻擊條件
8、:PHP未開啟gpc魔術開關3、注入之-有單引號(stripslashes、urldecode、base64_decode、http_referer)$contentid= $_GETcontentid;/$contentid= stripslashes($contentid); #反轉義,去掉等字符/$contentid= urldecode(contentid); #url解碼方式,如%27則將解碼成進入SQL語句/$contentid= base64_decode(contentid); #base64解碼/$contentid=$_SERVERHTTP_REFERER; # http頭
9、默認不轉義$r = $this-dbget_one(“SELECT * FROM ”.DB_PRE.“content WHERE contentid=$contentid”);SQL Injection Stripslashes注入案例:注入案例: Z-Blog的的php版前臺正則版前臺正則SQL盲注漏盲注漏洞洞/bugs/wooyun-2010-037956通過自定義_stripslashes函數(shù),對從get、post、cookie 3種傳參方式進行反轉義,造成傳入的單引號等污染SQL語句字符得到執(zhí)行,最終造成SQL注入漏洞。SQL Injection
10、Urldecode注入案例:注入案例: 齊齊博博CMS urldecode注入注入SQL InjectionBase64_decode注入案例:注入案例: CuuMall最新版最新版sql注入注入SQL InjectionHTTP頭注入案例:頭注入案例: phpcms 2008 referer注入注入 跟蹤info變量,進入insert方法(產生注入)upload1、上傳之-頭文件欺騙 上傳程序當中只對MIME類型進行檢測,如:/文本類型:text/plain 圖片類型 Image/jpeg /客戶端可控,可偽造MIME類型繞過限制,達到任意文件上傳。 2、上傳之-黑名單(后綴可控)程序中限制
11、可執(zhí)行文件后綴,如 php、asp、cer、jsp、jspx、aspx、asa、ashx等1、apache:php3、php5繞過2、iis: iis6.0解析漏洞3、上傳之-截斷利用某些函數(shù)獲取文件名%00截斷原理,生產.php后綴(GPC off)4、上傳之-.htaccess應用利用上傳.htaccess文件控制執(zhí)行后綴,達到任意解析參考鏈接:http:/ 缺陷代碼如下:遠程代碼執(zhí)行遠程代碼執(zhí)行 借助代碼執(zhí)行函數(shù)如eval、preg_replace執(zhí)行可控的變量,達到任意代碼執(zhí)行的漏洞,等級高危。案例如下:/bugs/wooyun-2014-080
12、723 Discuz!某兩個版本前臺產品命令執(zhí)某兩個版本前臺產品命令執(zhí)行行/bugs/wooyun-2010-054693 cmstop 遠程代碼執(zhí)行漏洞遠程代碼執(zhí)行漏洞 /bug.php?action=view&id=417 phpwind遠程代碼執(zhí)行漏遠程代碼執(zhí)行漏洞洞 /bugs/wooyun-2010-04685 用用友友ICC網站客服系統(tǒng)遠程代碼執(zhí)行漏網站客服系統(tǒng)遠程代碼執(zhí)行漏洞洞/bugs/wooyun-2010-0
13、42626042626 網博士存在遠網博士存在遠程程PHP代碼執(zhí)行漏洞代碼執(zhí)行漏洞CMSTOP遠程代碼執(zhí)行遠程代碼執(zhí)行 CmsTop 是一款基于是一款基于PHP+MYSQL技術架構技術架構的內容管理系統(tǒng)的內容管理系統(tǒng),采用前后臺分離技術,前采用前后臺分離技術,前臺為發(fā)布頁面(全為臺為發(fā)布頁面(全為html靜態(tài)頁面),用戶包括各行業(yè)重點門戶系統(tǒng),涉足報頁、廣電、靜態(tài)頁面),用戶包括各行業(yè)重點門戶系統(tǒng),涉足報頁、廣電、網絡媒體、教育等。網絡媒體、教育等。 在在cmstop當中搜索功能模塊由于對搜索關鍵字未進行嚴格過濾,導致任意代碼執(zhí)行。當中搜索功能模塊由于對搜索關鍵字未進行嚴格過濾,導致任意代碼執(zhí)
14、行。 缺陷代碼如下:缺陷代碼如下: CMSTOP遠程代碼執(zhí)行遠程代碼執(zhí)行 跟蹤跟蹤getpagin方法,進入方法,進入pages方法。方法。CMSTOP遠程代碼執(zhí)行遠程代碼執(zhí)行 繼續(xù)跟蹤繼續(xù)跟蹤pages_url函數(shù)函數(shù) 當當url變量不存在時,賦值自定義好的常量變量不存在時,賦值自定義好的常量URL值。值。 當當url變量中存在變量中存在$page字符時字符時,將,將$url進行執(zhí)行進行執(zhí)行(變量得到執(zhí)行)變量得到執(zhí)行)通過構造特殊通過構造特殊url即可造成遠程代碼執(zhí)行,如下鏈接:即可造成遠程代碼執(zhí)行,如下鏈接:http:/ 二次注入:二次注入:利用Mysql數(shù)據(jù)庫出庫值反轉義功能,多次與數(shù)
15、據(jù)庫交互造成的注入問題。截斷注入:利用某些php函數(shù)對字符截斷,造成 或者 進入SQL語句當中,通過多個參數(shù)拼接構造畸形語句注入。條件競爭:根據(jù)程序執(zhí)行時間差異,利用多線程并發(fā)技術,優(yōu)先執(zhí)行某些缺陷功能。二次攻擊:多個bug或漏洞結合放大攻擊手段(2次注入、2次解析、2次cookie注入)。 白黑盒fuzz: 利用web服務器對某些特殊字符處理不當造成文件截斷等等漏洞。 攻擊者不是直接通過一個變量提交惡意 代碼而產生的漏洞,而是通過變量的轉化 或者是中轉(如:數(shù)據(jù)庫、cookie、自定義函數(shù)) 最終產生的安全漏洞。 “什么是PHP二次攻擊 ?” 惡意代碼惡意代碼寫入數(shù)據(jù)庫寫入數(shù)據(jù)庫UPDATE
16、 INSERT 攻擊原理: insert - select -insert -select insertselectinsertselect再次循環(huán)一次web服務器數(shù)據(jù)庫漏洞存在于/plus/feedback.php中的第246行在/include/common.inc.php中的第79行載入攻擊代碼二次轉義INSERT INTO #_feedback(aid,typeid,username,arctitle,ip,ischeck,dtime,mid,bad,good,ftype,face,msg) VALUES (1,0,游客游客,1,1,3,4,5,6,7,8,(select pwd fr
17、om dede_admin) 數(shù)據(jù)庫交互數(shù)據(jù)庫交互數(shù)據(jù)庫交互數(shù)據(jù)庫交互數(shù)據(jù)庫交互數(shù)據(jù)庫交互1,1,3,4,5,6,7,8,(select pwd from dede_admin)#1,1,3,4,5,6,7,8,(select pwd from dede_admin)#INSERT INTO #_feedback(aid,typeid,username,arctitle,ip,ischeck,dtime,mid,bad,good,ftype,face,msg) VALUES (1,0,游客,1,1,3,4,5,6,7,8,(select pwd from dede_admin)步 驟 1步 驟
18、 2步 驟 3 服務器互聯(lián)網互聯(lián)網自身模板解析自身模板解析變量覆蓋上傳變量覆蓋上傳木馬通道木馬通道$upload_allowext = !empty($Cupload_allowext) ? $Cupload_allowext : $infoupload_allowext; / 漏洞觸發(fā)點 通過變量覆蓋$upload_allowext此變量賦值為html$upload_maxsize = !empty($Cupload_maxsize) ? $Cupload_maxsize : $infoupload_maxsize*1024;$isthumb = isset($Cthumb_enable)
19、? $Cthumb_enable : ($PHPCMSthumb_enable & $infoisthumb ? 1 : 0);$iswatermark = isset($Cwatermark_enable) ? $Cwatermark_enable : ($PHPCMSwatermark_enable & $infoiswatermark ? 1 : 0);$thumb_width = isset($width) ? $width : (isset($Cthumb_width) ? $Cthumb_width : ($infothumb_width ? $infothumb_
20、width : $PHPCMSthumb_width);$thumb_height = isset($height) ? $height : (isset($Cthumb_height) ? $Cthumb_height : ($infothumb_height ? $infothumb_height : $PHPCMSthumb_height);$watermark_img = PHPCMS_ROOT.($infowatermark_img ? $infowatermark_img : $PHPCMSwatermark_img);$attachment = new attachment($m
21、od); /實例化attachment上傳類if($dosubmit)$attachment-upload($uploadtext, $upload_allowext, $upload_maxsize, 1); / 漏洞觸發(fā)點 引用attachment上傳類 在preview.php中60行處$headdescription = $rdescription;if(!$template) $template = $Ctemplate_show; / 通過變量覆蓋即可覆蓋$template變量include template(phpcms, $template); / 調用template 模板解
22、析函數(shù)/ 解析模板方法function template($module = phpcms, $template = index, $istag = 0)$compiledtplfile = TPL_CACHEPATH.$module._.$template.tpl.php;if(TPL_REFRESH & (!file_exists($compiledtplfile) | filemtime(TPL_ROOT.TPL_NAME./.$module./.$template.html) filemtime($compiledtplfile) | filemtime(TPL_ROOT.TP
23、L_NAME./tag.inc.php) filemtime($compiledtplfile)require_once PHPCMS_ROOT.include/template.func.php;template_compile($module, $template, $istag); / 模板解析return $compiledtplfile; / 繼續(xù)跟蹤template_compile函數(shù) 在template.func.php中2行處function template_compile($module, $template, $istag = 0)$tplfile = TPL_ROOT.
24、TPL_NAME./.$module./.$template.html; / 這里$template可控$content = file_get_contents($tplfile); / 觸發(fā)漏洞,解析構造好的惡意文件if($content = false) showmessage($tplfile is not exists!);$compiledtplfile = TPL_CACHEPATH.$module._.$template.tpl.php;$content = ($istag | substr($template, 0, 4) = tag_) ? .template_parse($
25、content, 1). : template_parse($content);$strlen = file_put_contents($compiledtplfile, $content);chmod($compiledtplfile, 0777);return $strlen; 自身模板解析自身模板解析惡惡意代碼意代碼 服務器通過變量覆蓋上通過變量覆蓋上傳傳惡意惡意htmlhtml文件文件惡意代碼控制惡意代碼控制 Web serverDb serverCookiesAttackAttack偽造惡意代碼在modulesmemberindex.php中398行處public function
26、account_manage_info() if(isset($_POSTdosubmit) /更新用戶昵稱 $nickname = isset($_POSTnickname) & trim($_POSTnickname) ? trim($_POSTnickname) : ; / 直接去掉那邊空格調用post傳進來的nickname值 if($nickname) $this-db-update(array(nickname=$nickname), array(userid=$this-memberinfouserid);if(!isset($cookietime) $get_cooki
27、etime = param:get_cookie(cookietime); $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0);$cookietime = $_cookietime ? TIME + $_cookietime : 0;param:set_cookie(_nickname, $nickname, $cookietime); / 直接寫入cookie中 . / 省略若干無關代碼 在modulescommentindex.php中60行處public fu
28、nction post() $comment = pc_base:load_app_class(comment);$id = isset($_GETid) & intval($_GETid) ? intval($_GETid) : ;$SITE = siteinfo($this-siteid);$username = param:get_cookie(_username,$SITEname.L(phpcms_friends);/這里獲取_username這個COOKIE值,通過前面載入變異攻擊代碼$userid = param:get_cookie(_userid);$comment_
29、setting_db = pc_base:load_model(comment_setting_model);$setting = $comment_setting_db-get_one(array(siteid=$this-siteid);if (!empty($setting) . / 省略若干無關代碼 $content = isset($_POSTcontent) & trim($_POSTcontent) ? trim($_POSTcontent) : $this-_show_msg(L(please_enter_content), HTTP_REFERER); $direct
30、ion = isset($_POSTdirection) & intval($_POSTdirection) ? intval($_POSTdirection) : ;$data = array(userid=$userid, username=$username, content=$content, direction=$direction);$comment-add($this-commentid, $this-siteid, $data, $id, $title, $url);$this-_show_msg($comment-get_error()., (in_array($comment-msg_code, array(0,7) ? HTTP_REFERER : ), (in_array($comment-msg_code, array(0,7) ? 1 : 0); 在modulescommentclasscomment.class.php中30行處public function add($commentid, $siteid, $data, $id = , $title = , $url = ) /開始查詢評論這條評論是否存在。$title = new_addslash
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文明監(jiān)督崗申請書
- 初級銀行業(yè)法律法規(guī)與綜合能力-2019年初級銀行從業(yè)資格考試《法律法規(guī)與綜合能力》真題匯編2
- 初級銀行管理-銀行專業(yè)初級《銀行管理》高分通關卷6
- 初級公司信貸-初級銀行從業(yè)資格考試《公司信貸》高頻考點1
- 初級個人理財-初級銀行從業(yè)資格《個人理財》押題密卷5
- 企業(yè)內部管理層次結構優(yōu)化方案
- DB2201-T 39-2023 東大梅花鹿標準規(guī)范
- 2024-2025學年四川省眉山市區(qū)縣高中學校高三上學期12月期中聯(lián)考物理試題
- Module2Unit2Amypaintedapicture2023-2024學年四年級英語
- 2025年中國林可霉素利多卡因凝膠行業(yè)市場深度分析及投資規(guī)劃建議報告
- 交管12123學法減分題庫(含答案)
- 北京市海淀區(qū)2024-2025學年八年級上學期期末考試數(shù)學試卷(含答案)
- 23G409先張法預應力混凝土管樁
- 三年級下冊口算天天100題(A4打印版)
- T∕CNFAGS 3-2021 三聚氰胺單位產品消耗限額
- 弟子規(guī)全文拼音版打印版
- 變電站設備驗收管理標準規(guī)范
- 鍋爐房危害告知卡
- NPI流程管理分解
- 物業(yè)公司財務部各崗位工作職責
- 航空器拆解適航管理解讀
評論
0/150
提交評論