精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Phpcms v9漏洞分析

安全 漏洞
本文是對Phpcms v9漏洞分析。

最近研究源碼審計相關知識,會抓起以前開源的CMS漏洞進行研究,昨天偶然看見了這個PHPCMS的漏洞,就準備分析研究一番,最開始本來想直接從源頭對代碼進行靜態分析,但是發現本身對PHPCMS架構不是很熟悉,導致很難定位代碼的位置,***就采用動態調試&靜態分析的方式對漏洞的觸發進行分析,下面進入正題。

1. 漏洞觸發代碼定位

通過漏洞的POC(/phpcms/index.php?m=member&c=index&a=register&siteid=1 )判斷,漏洞觸發點的入口位于/phpcms/modules/member/index.php文件中的register()方法中,在代碼中插入一些echo函數,觀察輸出(見下)的變化。從下面的結果變化可知,img標簽的src屬性是在執行完下面的get()函數:

  1. $user_model_info = $member_input->get($_POST['info']) 

后發生變化,因此基本可以確定,漏洞的觸發點就是位于這個函數中。

屏幕快照 2017-04-12 下午2.59.37.png

屏幕快照 2017-04-12 下午3.02.04.png

2. 定位member_input->get()跟進分析

跟進該函數,該函數位于/phpcms/modules/member/fields/member_input.class.php文件中,此處本來還想故技重施,在該方法中對代碼進行插樁,但是發現插樁后的居然無法打印到頁面上,沒轍(原因望各位大神指點一二),只能對代碼進行一行行推敲,先把代碼貼上,方便分析:

  1. function get($data) { 
  2.     $this->data = $data = trim_script($data); 
  3.     $model_cache = getcache('member_model', 'commons'); 
  4.     $this->db->table_name = $this->db_pre.$model_cache[$this->modelid]['tablename']; 
  5.     $info = array(); 
  6.     $debar_filed = array('catid','title','style','thumb','status','islink','description'); 
  7.     if(is_array($data)) { 
  8.         foreach($data as $field=>$value) { 
  9.             if($data['islink']==1 && !in_array($field,$debar_filed)) continue; 
  10.             $field = safe_replace($field); 
  11.             $name = $this->fields[$field]['name']; 
  12.             $minlength = $this->fields[$field]['minlength']; 
  13.             $maxlength = $this->fields[$field]['maxlength']; 
  14.             $pattern = $this->fields[$field]['pattern']; 
  15.             $errortips = $this->fields[$field]['errortips']; 
  16.             if(empty($errortips)) $errortips = "$name 不符合要求!"
  17.             $length = empty($value) ? 0 : strlen($value); 
  18.             if($minlength && $length < $minlength && !$isimport) showmessage("$name 不得少于 $minlength 個字符!"); 
  19.             if (!array_key_exists($field, $this->fields)) showmessage('模型中不存在'.$field.'字段'); 
  20.             if($maxlength && $length > $maxlength && !$isimport) { 
  21.                 showmessage("$name 不得超過 $maxlength 個字符!"); 
  22.             } else { 
  23.                 str_cut($value, $maxlength); 
  24.             } 
  25.             if($pattern && $length && !preg_match($pattern, $value) && !$isimport) showmessage($errortips); 
  26.                         if($this->fields[$field]['isunique'] && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage("$name 的值不得重復!"); 
  27.             $func = $this->fields[$field]['formtype']; 
  28.             if(method_exists($this, $func)) $value = $this->$func($field, $value); 
  29.  
  30.             $info[$field] = $value; 
  31.         } 
  32.     } 
  33.     return $info; 

代碼整體比較容易,可能比較難理解的就是$this->fields這個參數,這個參數是初始化類member_input是插入的,這個參數分析起來比較繁瑣,主要是對PHPCMS架構不熟,那就在此走點捷徑吧,在1中,直接將初始化完成后的member_input類dump出來,效果還不錯,所有的參數都dump到頁面上了,下面主要摘取比較重要的$this->fields[$field],即:【$this->fields["content"]】這個參數,如下所示⤵:

  1. ["content"]=> 
  2.     array(35) { 
  3.       ["fieldid"]=> 
  4.       string(2) "90" 
  5.       ["modelid"]=> 
  6.       string(2) "11" 
  7.       ["siteid"]=> 
  8.       string(1) "1" 
  9.       ["field"]=> 
  10.       string(7) "content" 
  11.       ["name"]=> 
  12.       string(6) "內容" 
  13.       ["tips"]=> 
  14.       string(407) "<div class="content_attr"><label><input name="add_introduce" type="checkbox"  value="1" checked>是否截取內容</label><input type="text" name="introcude_length" value="200" size="3">字符至內容摘要 
  15. <label><input type='checkbox' name='auto_thumb' value="1" checked>是否獲取內容第</label><input type="text" name="auto_thumb_no" value="1" size="2" class="">張圖片作為標題圖片 
  16. </div>
  17.       ["css"]=> 
  18.       string(0) "" 
  19.       ["minlength"]=> 
  20.       string(1) "0" 
  21.       ["maxlength"]=> 
  22.       string(6) "999999" 
  23.       ["pattern"]=> 
  24.       string(0) "" 
  25.       ["errortips"]=> 
  26.       string(18) "內容不能為空" 
  27.       ["formtype"]=> 
  28.       string(6) "editor" 
  29.       ["setting"]=> 
  30.       string(199) "array ( 
  31.   'toolbar' => 'full', 
  32.   'defaultvalue' => '', 
  33.   'enablekeylink' => '1', 
  34.   'replacenum' => '2', 
  35.   'link_mode' => '0', 
  36.   'enablesaveimage' => '1', 
  37.   'height' => '', 
  38.   'disabled_page' => '0', 
  39. )" 
  40.       ["formattribute"]=> 
  41.       string(0) "" 
  42.       ["unsetgroupids"]=> 
  43.       string(0) "" 
  44.       ["unsetroleids"]=> 
  45.       string(0) "" 
  46.       ["iscore"]=> 
  47.       string(1) "0" 
  48.       ["issystem"]=> 
  49.       string(1) "0" 
  50.       ["isunique"]=> 
  51.       string(1) "0" 
  52.       ["isbase"]=> 
  53.       string(1) "1" 
  54.       ["issearch"]=> 
  55.       string(1) "0" 
  56.       ["isadd"]=> 
  57.       string(1) "1" 
  58.       ["isfulltext"]=> 
  59.       string(1) "1" 
  60.       ["isposition"]=> 
  61.       string(1) "0" 
  62.       ["listorder"]=> 
  63.       string(2) "13" 
  64.       ["disabled"]=> 
  65.       string(1) "0" 
  66.       ["isomnipotent"]=> 
  67.       string(1) "0" 
  68.       ["toolbar"]=> 
  69.       string(4) "full" 
  70.       ["defaultvalue"]=> 
  71.       string(0) "" 
  72.       ["enablekeylink"]=> 
  73.       string(1) "1" 
  74.       ["replacenum"]=> 
  75.       string(1) "2" 
  76.       ["link_mode"]=> 
  77.       string(1) "0" 
  78.       ["enablesaveimage"]=> 
  79.       string(1) "1" 
  80.       ["height"]=> 
  81.       string(0) "" 
  82.       ["disabled_page"]=> 
  83.       string(1) "0" 
  84.     } 

有了上面的參數列表后,理解get()函數的代碼就要輕松許多了,分析過程略。結論就是,漏洞的觸發函數在倒數6、7兩行,單獨截個圖,如下⤵:

屏幕快照 2017-04-12 下午3.28.38.png

這里比較重要的是要找出$func這個函數,查查上面的表,找到["formtype"]=>string(6) “editor”,可知$func就是editor()函數,editor函數傳入的參數就是上面列出的一長串字符串,和img標簽的內容,下面將跟進editor函數,真相好像馬上就要大白于天下了。

3. 跟進editor函數及后續函數

editor()函數位于/phpcms/modules/member/fields/editor/imput.inc.php文件中,老規矩,先貼出代碼:

  1. function editor($field, $value) { 
  2.         $setting = string2array($this->fields[$field]['setting']); 
  3.         $enablesaveimage = $setting['enablesaveimage']; 
  4.         if(isset($_POST['spider_img'])) $enablesaveimage = 0
  5.         if($enablesaveimage) { 
  6.             $site_setting = string2array($this->site_config['setting']); 
  7.             $watermark_enable = intval($site_setting['watermark_enable']); 
  8.             $value = $this->attachment->download('content', $value, $watermark_enable); 
  9.         } 
  10.         return $value; 
  11.     } 

簡單閱讀代碼,發現實際的觸發流程發生在$this->attachment->download()函數中,直接跟進這個函數,這個函數位于/phpcms/libs/classes/attachment.class.php中download()函數,源代碼有點長,就貼一些關鍵代碼,⤵

  1. $string = new_stripslashes($value); 
  2.     if(!preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $string, $matches)) return $value; 
  3.     $remotefileurls = array(); 
  4.     foreach($matches[3] as $matche) 
  5.     { 
  6.         if(strpos($matche, '://') === false) continue; 
  7.         dir_create($uploaddir); 
  8.         $remotefileurls[$matche] = $this->fillurl($matche, $absurl, $basehref); 
  9.     } 
  10.     unset($matches, $string); 
  11.     $remotefileurls = array_unique($remotefileurls); 
  12.     $oldpath = $newpath = array(); 
  13.     foreach($remotefileurls as $k=>$file) { 
  14.                        if(strpos($file, '://') === false || strpos($file, $upload_url) !== false) continue; 
  15.         $filename = fileext($file); 
  16.         $file_name = basename($file); 
  17.         $filename = $this->getname($filename); 
  18.  
  19.         $newfile = $uploaddir.$filename; 
  20.         $upload_func = $this->upload_func; 
  21.         if($upload_func($file, $newfile)) { 

代碼主要是進行一些正則過濾等等操作,這里真正關鍵的是代碼的***一行的操作$upload_func($file, $newfile),其中$this->upload_func = ‘copy’;,寫的在明白點就是copy($file, $newfile),漏洞就是一個copy操作造成的。

責任編輯:趙寧寧 來源: FreeBuf
相關推薦

2010-12-07 11:05:03

Cisco SysteNetflow v9

2015-11-17 18:57:56

Veeam備份

2024-10-14 08:09:09

2009-12-21 13:50:19

日立JP1 V9

2011-09-07 01:05:11

ibmdwDB2

2009-12-01 19:08:26

2017-02-24 17:26:39

榮耀

2011-12-26 10:17:12

2018-08-15 15:14:42

中興

2010-05-10 10:59:06

日立JP1新版本V9

2017-07-14 10:34:48

云之家

2009-11-30 13:51:37

2017-03-10 10:29:10

互聯網

2015-10-19 13:44:48

2014-12-03 10:37:45

2021-03-08 10:49:11

漏洞攻擊網絡安全

2018-08-17 14:39:37

中興

2021-03-31 14:33:10

架構AI技術
點贊
收藏

51CTO技術棧公眾號

午夜激情av在线| 亚洲va久久久噜噜噜| 欧美一区二区三区成人精品| 都市激情综合| 国产精品99精品一区二区三区∴| 另类图片第一页| 欧美日韩精品在线| 亚洲午夜精品一区二区三区| 亚洲国产精品18久久久久久| 视频一区视频二区中文| 日韩一区二区三区国产| 美女网站视频在线观看| 国模套图日韩精品一区二区| 中文字幕一区av| 国产一区二区在线观看免费播放| 欧美一级黄视频| 亚洲视频综合| 俺也去精品视频在线观看| 国产麻豆剧传媒精品国产av| 国产人妖一区| 黑人巨大精品欧美一区二区一视频| 五月天丁香综合久久国产| 俄罗斯嫩小性bbwbbw| 麻豆精品新av中文字幕| 136fldh精品导航福利| 污软件在线观看| 久久不见久久见中文字幕免费| 91麻豆精品国产91久久久久久久久| 国产原创中文在线观看| 欧美日韩欧美| 91麻豆成人久久精品二区三区| 亚洲r级在线观看| 中文字幕+乱码+中文乱码www| 亚洲人成毛片在线播放女女| 美女久久久久久久| 国产精品理论在线| 国产欧美日韩一区二区三区四区| 亚洲丁香久久久| 欧美xxxxxbbbbb| 吉吉日韩欧美| 婷婷中文字幕一区三区| 777久久精品一区二区三区无码 | 亚洲一区二区三区午夜| 青青草免费观看免费视频在线| 粉嫩一区二区三区在线看| 成人免费观看网址| 91高潮大合集爽到抽搐| 日本美女一区二区三区视频| 日韩av色在线| 久久久久女人精品毛片九一| 夜夜嗨av一区二区三区网站四季av| 久久91亚洲精品中文字幕| 小泽玛利亚一区二区免费| 欧美3p在线观看| 日韩在线一区二区三区免费视频| 国产精品815.cc红桃| 青草久久视频| 亚洲欧美国产精品| 久久亚洲AV无码专区成人国产| 日韩精品福利一区二区三区| 国产视频精品免费播放| 37p粉嫩大胆色噜噜噜| 亚洲桃色综合影院| 伊人av综合网| 国产尤物在线播放| 欧美不卡高清| 久久理论片午夜琪琪电影网| 国产无遮挡裸体免费视频| 国产欧美一区二区色老头 | 成人网在线免费视频| 不卡视频一区二区三区| 人妻一区二区三区| 久久亚洲一级片| 亚洲不卡中文字幕| 精品视频在线一区二区| 一区二区三区在线免费| 男女猛烈激情xx00免费视频| 日韩精品av| 欧美色图在线观看| 日本成人在线免费观看| 国产精品nxnn| 一区二区三区高清国产| 九九精品视频免费| 亚洲国产一区二区精品专区| 性色av一区二区三区红粉影视| 成人午夜视频精品一区| 日韩激情av在线| 国产精品久久久久久久久久久不卡| 在线免费看91| 9l国产精品久久久久麻豆| 日本在线高清视频一区| 在线āv视频| 日韩欧美成人免费视频| 亚洲欧美天堂在线| 久本草在线中文字幕亚洲| 在线激情影院一区| 久久精品www| 三级成人在线视频| 91久久国产婷婷一区二区| 天天色棕合合合合合合合| 中文一区一区三区高中清不卡| 丰满人妻一区二区三区53号| 澳门成人av网| 日韩精品一区二区三区视频在线观看| v8888av| 一级毛片免费高清中文字幕久久网| 韩日精品中文字幕| 97人妻精品一区二区三区软件| 成人免费福利片| 制服诱惑一区| 日韩精品一区二区三区| 日韩亚洲欧美一区二区三区| 国产中年熟女高潮大集合| 欧美国产综合| 国产精品视频在线播放| 亚洲av毛片成人精品| 亚洲少妇中出一区| 十八禁视频网站在线观看| 最新精品在线| 蜜臀久久99精品久久久久久宅男| 伊人久久久久久久久久久久| 成人污污视频在线观看| ijzzijzzij亚洲大全| 日韩一区二区三区免费| 亚洲经典中文字幕| 劲爆欧美第一页| 久国产精品韩国三级视频| 欧美精品尤物在线| 波多野结衣在线观看| 日韩一级免费一区| 黄色录像免费观看| 免费高清在线视频一区·| 欧美日韩在线精品| 亚洲伊人av| 亚洲电影第1页| 精品一区免费观看| 国产一区 二区 三区一级| 一区二区精品在线观看| 精品视频一区二区三区四区五区| 日韩精品在线电影| 日韩三级免费看| 成人av网在线| 人妻少妇精品无码专区二区| 亚洲国产中文在线| 九九久久久久99精品| 国产美女裸体无遮挡免费视频| 中文字幕高清一区| 国产一伦一伦一伦| 日韩精品网站| 成人美女免费网站视频| 免费在线观看av| 777精品伊人久久久久大香线蕉| www.日本高清视频| 麻豆成人综合网| 相泽南亚洲一区二区在线播放| 四虎4545www国产精品| 亚洲香蕉成视频在线观看 | 奇米精品一区二区三区四区| 日韩欧美第二区在线观看| 日韩免费小视频| 中文字幕免费精品一区高清| 91麻豆成人精品国产免费网站| 国产精品视频线看| 911av视频| 极品日韩av| 久久久水蜜桃| 亚洲精品一区三区三区在线观看| 伊人久久精品视频| 国产精品人人爽| 亚洲国产日韩a在线播放性色| 男人网站在线观看| 老牛嫩草一区二区三区日本 | 欧美激情成人在线| 国模一区二区三区私拍视频| 中文在线аv在线| 色yeye香蕉凹凸一区二区av| 国产乱叫456在线| 亚洲一区二区欧美激情| 日本黄色网址大全| 久久97超碰色| 亚洲 高清 成人 动漫| 免费视频亚洲| 91视频九色网站| 僵尸再翻生在线观看| 国产一区二区三区日韩欧美| 国产精品九九九九| 精品久久香蕉国产线看观看gif| 无码人妻丰满熟妇啪啪欧美| 国产在线一区二区| 欧美日韩在线一| 91亚洲自偷观看高清| 国产亚洲精品久久飘花| 成人网ww555视频免费看| 欧美另类交人妖| 男女污污视频在线观看| 91.成人天堂一区| 国偷自拍第113页| 亚洲天堂成人网| 中文字幕一区二区久久人妻网站 | 国产噜噜噜噜久久久久久久久| 久色国产在线| 中文字幕欧美日韩va免费视频| 亚洲福利在线观看视频| 欧美三级在线播放| 日本网站在线播放| 亚洲丝袜美腿综合| 在线免费观看日韩av| 国产精品一区在线观看你懂的| 日韩手机在线观看视频| 亚洲视频一二| 青少年xxxxx性开放hg| 久久99国产成人小视频| 国产精品二区二区三区| www.成人| 国产精品久久久久久久9999| 天堂中文av在线资源库| 欧美大片免费看| 免费黄色在线网站| 亚洲一级片在线看| 日本亚洲一区| 亚洲第一精品电影| 不卡av中文字幕| 欧美日本国产一区| 中文字幕一区二区人妻痴汉电车| 婷婷开心久久网| 久久在线视频精品| 亚洲日本一区二区| 影音先锋男人看片资源| 国产亚洲综合色| 制服丝袜第二页| 99久久综合狠狠综合久久| xxxx国产视频| 国产在线看一区| 午夜精品免费看| 麻豆91精品91久久久的内涵| 久久久久免费精品| 视频一区中文字幕| 精品久久久久久久无码| 久久久久久夜| 美女网站免费观看视频| 美女精品一区| 日韩一级在线免费观看| 香蕉亚洲视频| 欧美a在线视频| 亚洲欧美日韩国产一区| 黑鬼大战白妞高潮喷白浆| 久久国产欧美| 99视频精品免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品少妇无遮挡毛片| 日本不卡高清视频| 不卡的av中文字幕| 精品伊人久久久久7777人| 日本激情综合网| 精品在线播放免费| 无码国产精品一区二区高潮| 国产一区二区免费看| 精产国品一区二区三区| 成人午夜私人影院| 国产偷人妻精品一区| 成人av网站大全| 爱爱的免费视频| 精品无码m3u8在线观看| a级精品国产片在线观看| 极品白嫩丰满美女无套| av中文字幕亚洲| 日韩一级av毛片| 国产精品视频yy9299一区| 久久一级免费视频| 亚洲精品成a人| 欧美三级韩国三级日本三斤在线观看| 精品国产鲁一鲁一区二区张丽| 国产一级免费视频| 欧美精品一级二级三级| 亚洲国产精品18久久久久久| 亚洲精美色品网站| 五月香视频在线观看| 久久国产精彩视频| 欧美男人天堂| 国产日韩在线看| jizz性欧美2| 日韩电影大全在线观看| 亚洲九九在线| 国产91在线免费| 久久er99精品| 荫蒂被男人添免费视频| 中文字幕二三区不卡| 草视频在线观看| 一本大道av一区二区在线播放| 亚洲图片视频小说| 精品欧美一区二区三区精品久久| 深夜福利视频在线免费观看| 亚洲精品第一国产综合精品| caoporn国产精品免费视频| 久久成人免费视频| 桃色一区二区| 成人av播放| 日本女优一区| 精品国产一区三区| 国产一区二区三区在线观看免费视频 | japanese在线视频| 99精品国产一区二区青青牛奶| 亚洲中文字幕久久精品无码喷水| 国产精品88888| 免费看91的网站| 精品国产1区2区| 精品久久无码中文字幕| 亚洲天堂免费观看| 精品精品导航| 91热福利电影| 欧美午夜精彩| 免费黄色福利视频| 国产精品亚洲专一区二区三区 | 丰满熟妇人妻中文字幕| 一区二区三区四区在线观看视频| aa国产成人| 91大片在线观看| 91麻豆精品国产91久久久平台| 日本wwww视频| 成人高清视频在线| 四虎永久免费在线| 欧美视频在线一区二区三区| 天天干天天舔天天射| 欧美极品在线视频| 91精品在线免费视频| 色就是色欧美| 日韩精品一区第一页| 中文字幕 亚洲一区| 亚洲成人av福利| 亚洲av无码一区二区三区dv | 成人性生交大片免费看网站| 成人免费网站在线| 欧美激情理论| 国产乱码一区二区三区四区| 国产精品家庭影院| 亚洲综合视频在线播放| 国产午夜精品免费一区二区三区| 在线天堂资源www在线污| 狠狠色综合一区二区| 亚洲黄网站黄| 在线免费看黄色片| 亚洲成人中文在线| 丰满肥臀噗嗤啊x99av| 久久久久久久成人| 2021年精品国产福利在线| 黄色一级大片免费| 国产精品一区二区三区乱码| 五月天av网站| 日韩精品一区二区三区蜜臀| 99在线视频影院| 国产午夜精品在线| 久久久亚洲人| 性高潮久久久久久久| 欧美在线观看一区二区| 成人动漫在线播放| 国产欧美最新羞羞视频在线观看| 欧美第一精品| 99999精品| 天天影视涩香欲综合网| 青青视频在线观| 国产精品久久久久久av下载红粉| av亚洲免费| 波多野结衣免费观看| 一个色妞综合视频在线观看| 亚洲精品911| 亚洲18私人小影院| 精品国产一区二区三区| 欧美大尺度做爰床戏| 日韩美女久久久| 高h放荡受浪受bl| 国产91精品最新在线播放| 日韩大片在线播放| 色欲无码人妻久久精品| 午夜激情久久久| www.黄在线观看| 亚洲最大福利网| 亚洲影院在线| 日本免费网站视频| 精品国产91乱码一区二区三区| 国产精品一二三产区| 日本亚洲导航| 国产成人在线视频网站| 日韩一区二区视频在线| 中文字幕亚洲情99在线| 999精品视频在这里| 久久精品一区二| 亚洲综合丝袜美腿| 国产一区精品| 国产精品国产精品国产专区蜜臀ah| 欧美亚洲一区| 印度午夜性春猛xxx交| 日韩高清欧美高清| 国产精品白丝久久av网站| 2022亚洲天堂| 亚洲人成小说网站色在线| 亚洲色图另类小说| 91精品视频网站| 久久久久久久欧美精品| 欧美精品乱码视频一二专区| 亚洲人在线视频|