亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP-5.3.9遠程執行任意代碼漏洞

2024-05-04 21:48:20
字體:
來源:轉載
供稿:網友

還記得我之前說的PHP Hash Collisions Ddos漏洞吧? 最初的時候,開發組給出的修復方案,采用的是如果超過max_input_vars,就報錯(E_ERROR),繼而導致PHP出錯結束,而后來,為了更加輕量級的解決這個問題,我們又改善了一下,變成了如果超過max_input_vars,就發出警告(E_WARNING),并且不再往目的數組添加,但是流程繼續,然后我們發布了5.3.9.

這個新的修復方法初衷是好的,但是卻帶來一個嚴重的問題(5.3.10中已經修復),這個問題最初是由Stefan Esser發現的,請看之前(5.3.9)最終的修復方案(php_register_variable_ex),代碼如下:

  1. while (1) { 
  2.  
  3.      if (zend_symtable_find(symtable1, escaped_index, index_len + 1, (void **) &gpc_element_p) == FAILURE 
  4.  
  5.           || Z_TYPE_PP(gpc_element_p) != IS_ARRAY) { //(3) 
  6.  
  7.           if (zend_hash_num_elements(symtable1) <= PG(max_input_vars)) { // (4) 
  8.  
  9.                if (zend_hash_num_elements(symtable1) == PG(max_input_vars)) { 
  10.  
  11.                     php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. ...", PG(max_input_vars)); // (1) 
  12.  
  13.                } 
  14.  
  15.                MAKE_STD_ZVAL(gpc_element); 
  16.  
  17.                array_init(gpc_element); 
  18.  
  19.                zend_symtable_update(symtable1, escaped_index, index_len + 1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p); 
  20.  
  21.           } 
  22.  
  23.           //...... 
  24.  
  25.      } 
  26.  
  27.      //..... 
  28.  
  29.      symtable1 = Z_ARRVAL_PP(gpc_element_p); // (2) 
  30.      //開源代碼Vevb.com 
  31.      goto plain; 
  32.  
  33. }< li> 

注意到,如果此時注冊一個數組變量(在GET中類似于:a[]=2),并且此時這個變量剛好是第max_input_vars個變量的時候,會觸發一個警告(1),此時一切正常.

但是,如果此時還是注冊一個數組變量,但是這個變量已經是第max_input_vars + 1個變量的時候,那么此時gpc_element_p將成為一個未初始化的指針,而因為現在邏輯會繼續走, 也就會走到(2)號位置, 導致解引用了一個未初始化的指針,于是,Boomb~

那么,到目前位置,我們就可以使用這樣的特性來對5.3.9做Ddos了,如果Server開啟了Core Dump的話,這個效果會非常明顯.

然而,這個問題還會導致一個更嚴重的問題:

還是上面的代碼,在最外層有一個循環,這個循環起作用的時刻在注冊類似于a[b]=2的pair對的時候,循環將會執行倆次,第一次插入a[],第二次往a[]中插入b.然后再讓我們注意下(3),如果在目的數組中找不到一個想要的元素,**或者這個元素不為數組**,則也會直接導致流程留到(2),于是問題就出現了.

對于這樣的POST串(默認max_input_vars是1000):

1=1&1=2&..........&999=1&x="我是惡意的string"&x[0]=

會發生什么事情呢?讓我來一步一步描述下:

1.從1到999沒什么問題, 都被正常插入

2.x是1000個元素, 所以觸發警告, 也沒有問題, x被插入

3.x[0]插入的時候,(3)號語句判斷發現不是Arrary于是進入if體,但是此時(4)號語句失敗, 于是流程最終流到了(2)

4.此時,gpc_element_p指向x,也就是那個我們偽造的字符串….現在讓我們看看關鍵的數據結構,zval,代碼如下:

  1. struct _zval_struct { 
  2.  
  3.     /* Variable information */ 
  4.  
  5.     zvalue_value value; /* value */ 
  6.  
  7.     zend_uint refcount__gc; 
  8.  
  9.     zend_uchar type; /* active type */ 
  10.  
  11.     zend_uchar is_ref__gc; 
  12.  
  13. };< li> 

然后看zvalue_value,代碼如下:

  1. typedef union _zvalue_value { 
  2.  
  3.     long lval; /* long value */ 
  4.  
  5.     double dval; /* double value */ 
  6.  
  7.     struct { 
  8.  
  9.         char *val; 
  10.  
  11.         int len; 
  12.  
  13.     } str; 
  14.  
  15.     HashTable *ht; /* hash table value */ 
  16.  
  17.     zend_object_value obj; 
  18.  
  19. } zvalue_value;< li> 

zvalue_value是一個聯合體,于是我們構造的字符串區域的內存,就會被當做一個Hashtable結構體,代碼如下:

  1. typedef struct _hashtable { 
  2.  
  3.     uint nTableSize; 
  4.  
  5.     uint nTableMask; 
  6.  
  7.     uint nNumOfElements; 
  8.  
  9.     ulong nNextFreeElement; 
  10.  
  11.     Bucket *pInternalPointer; /* Used for element traversal */ 
  12.  
  13.     Bucket *pListHead; 
  14.  
  15.     Bucket *pListTail; 
  16.  
  17.     Bucket **arBuckets; 
  18.  
  19.     dtor_func_t pDestructor; //注意這個 
  20.  
  21.     zend_bool persistent; 
  22.  
  23.     unsigned char nApplyCount; 
  24.  
  25.     zend_bool bApplyProtection; 
  26.  
  27. #if ZEND_DEBUG 
  28.  
  29.     int inconsistent; 
  30.  
  31. #endif 
  32.  
  33. } HashTable;< li> 

在Hashtable結構體中,有一個pDestructor,這個指針指向一個函數,當這個Hashtable中有元素要被清除的時候,就會調用它…

也就是說,你可以隨心所欲的設置一個地址(pDestructor),然后讓PHP去調用它(誘使一個元素被刪除).

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
人妖精品videosex性欧美| 成人黄色中文字幕| 日韩二区三区在线| 欧美日韩一区二区在线播放| 久久久久久久久久久成人| 久久福利网址导航| 亚洲精品福利在线| 最近2019年中文视频免费在线观看| 91精品视频网站| 日韩免费高清在线观看| 日韩中文字幕在线视频播放| 菠萝蜜影院一区二区免费| 亚洲九九九在线观看| 欧美成人一区二区三区电影| 亚洲精品第一国产综合精品| 亚洲石原莉奈一区二区在线观看| 91国产视频在线播放| 91在线免费观看网站| 性欧美视频videos6一9| 2018中文字幕一区二区三区| 久青草国产97香蕉在线视频| 九九热r在线视频精品| 久久99热精品这里久久精品| 少妇高潮 亚洲精品| 成人h片在线播放免费网站| 在线播放日韩av| 精品成人69xx.xyz| 国内外成人免费激情在线视频网站| 亚洲国产成人一区| 欧亚精品在线观看| 成人精品福利视频| 亚洲精品有码在线| 亚洲在线免费视频| 2019亚洲男人天堂| 精品视频9999| 国产精品美女999| 久热精品视频在线免费观看| 亚洲成人黄色网| 清纯唯美亚洲综合| 精品无人区乱码1区2区3区在线| 麻豆乱码国产一区二区三区| 永久555www成人免费| 国产精品影院在线观看| 欧美极度另类性三渗透| 亚洲图片制服诱惑| 91国内在线视频| 亚洲第一av网| 亚洲少妇激情视频| 亚洲白虎美女被爆操| 久久久国产精品一区| 国产成人av网址| 中文字幕一区二区精品| 国产剧情日韩欧美| 欧美另类老肥妇| 久久网福利资源网站| 国产不卡av在线免费观看| 亚洲第一中文字幕在线观看| 欧美成人全部免费| 亚洲欧美在线x视频| 国产suv精品一区二区三区88区| 免费97视频在线精品国自产拍| 日韩激情在线视频| 国产亚洲精品成人av久久ww| 另类少妇人与禽zozz0性伦| 国产精品福利久久久| 国产一区二区香蕉| 欧美性一区二区三区| 国产精品一二区| 久久国产精品久久精品| 欧美中在线观看| 一本色道久久综合狠狠躁篇的优点| 久久久国产在线视频| 大伊人狠狠躁夜夜躁av一区| 久热国产精品视频| 欧美日韩国产一中文字不卡| 国色天香2019中文字幕在线观看| 69av在线视频| 国产精品69精品一区二区三区| 精品久久久一区二区| 久久视频在线观看免费| 日韩欧美国产网站| 日韩精品视频三区| 国产精品视频播放| 亚洲视频axxx| 欧美黑人一级爽快片淫片高清| 亚洲欧美一区二区精品久久久| 欧美大人香蕉在线| 97视频免费看| 欧美成人午夜免费视在线看片| 久久天天躁夜夜躁狠狠躁2022| 亚洲视频第一页| 久久手机精品视频| 91精品国产自产91精品| 亚洲精品电影网在线观看| 在线看日韩av| 91精品在线影院| 4p变态网欧美系列| 韩剧1988在线观看免费完整版| 欧美成人午夜激情在线| 久久天天躁狠狠躁老女人| 麻豆乱码国产一区二区三区| 中文字幕久热精品在线视频| 91网站在线看| 国产成人啪精品视频免费网| 丝袜美腿精品国产二区| 久久久久久噜噜噜久久久精品| 成人中心免费视频| 亚洲视频第一页| 欧美天天综合色影久久精品| 97在线免费观看| 亚洲色图欧美制服丝袜另类第一页| 91精品综合久久久久久五月天| 中日韩美女免费视频网站在线观看| 成人国产精品一区二区| 在线电影av不卡网址| 精品女同一区二区三区在线播放| 日韩在线观看免费全| 亚洲欧美色婷婷| 欧美午夜精品久久久久久久| 国产中文字幕日韩| 日韩经典一区二区三区| 欧美亚洲视频在线观看| 欧美激情中文字幕在线| 日本精品一区二区三区在线| 国产精品日韩电影| 日韩av在线播放资源| 精品视频9999| 久久久国产精彩视频美女艺术照福利| 日韩欧美亚洲成人| 久久久噜噜噜久久| 欧美激情中文字幕乱码免费| 精品视频一区在线视频| 国产一区二区香蕉| 国产精品第三页| 亚洲成色777777在线观看影院| 2025国产精品视频| 久久久欧美一区二区| 91精品国产高清久久久久久91| 国产精品久久中文| 亚洲欧美日韩爽爽影院| 欧美xxxx做受欧美.88| 亚洲精品黄网在线观看| 亚洲美女精品成人在线视频| 日韩在线视频国产| 久久久久久尹人网香蕉| 亚洲色图五月天| 国产日韩欧美夫妻视频在线观看| 一区二区福利视频| 欧美大学生性色视频| 日韩a**站在线观看| 亚洲日本中文字幕免费在线不卡| 国产欧美久久久久久| 日韩精品在线看| 欧美二区在线播放| 亚洲第一级黄色片| 茄子视频成人在线| 欧美成人午夜视频| 成人黄色免费在线观看| 欧美电影院免费观看| 亚洲欧美成人网| 欧美日韩免费在线| 欧美国产亚洲视频| 亚洲欧洲偷拍精品| 国产91热爆ts人妖在线|