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

一個有關 V8 漏洞的細節分析 (一)

安全 漏洞
當開發人員決定使用新的Torque語言重新實現兩個CodeStubAssembler(CSA)函數時,V8中就會出現漏洞。

當開發人員決定使用新的Torque語言重新實現兩個CodeStubAssembler(CSA)函數時,V8中就會出現漏洞。這兩個函數用于在JavaScript中創建新的FixedArray和FixedDoubleArray對象,盡管新的實現乍看之下是有效的,但它們缺少一個關鍵組成部分:最大長度檢查,以確保新創建的數組的長度不會超過預定義的上限。

在一般人看來,這個缺失的長度檢查看起來很正常,但對于攻擊者來說,就可以利用了TurboFan的typer來獲取訪問權限中的一個非常強大的利用原語:數組,其長度字段遠大于其容量。該原語為攻擊者提供了V8堆上的越界訪問原語,這很容易導致代碼執行。

[[386006]]

漏洞實現過程

如果要繼續,則需要構建V8版本8.5.51(提交64cadfcf4a56c0b3b9d3b5cc00905483850d6559),建議使用完整符號進行構建(修改args.gn并添加symbol_level = 2行)。

在x64.release目錄中,你可以使用以下命令以零編譯器優化來編譯發行版本:

  1. find . -type f -exec grep '\-O3' -l {} ";" -exec sed -i 's/\-O3/\-O0/' {} ";" -ls 

如果你想繼續閱讀本博文中的一些代碼示例,我仍然建議你構建普通發行版(啟用編譯器優化)。如果不進行優化,某些示例將花費非常長的時間才能運行。

從上面鏈接的bugtracker中獲取概念證明。

2017年之前的V8

在2017年之前,許多JavaScript內置函數(Array.prototype.concat,Array.prototype.map等)都是用JavaScript本身編寫的,盡管這些函數使用了TurboFan(V8的推測性優化編譯器,稍后將進行詳細說明)。為了最大限度地發揮性能,它們的運行速度根本沒有使用本機代碼編寫的速度快。

對于最常見的內置函數,開發人員將以手寫匯編形式編寫非常優化的版本。之所以可行,因為ECMAScript規范(點擊查看示例)中對這些內置函數的描述非常詳細。但是,它有一個很大的缺點:V8針對大量平臺和體系結構,這意味著V8開發人員必須為每個體系結構編寫和重寫所有這些優化的內置函數。隨著ECMAScript標準的不斷發展和新語言函數的不斷標準化,維護所有這些手寫程序集變得非常繁瑣且容易出錯。

遇到此問題后,開發人員開始尋找更好的解決方案。直到TurboFan引入V8才找到解決方案。

CODESTUBASSEMBLER

TurboFan為低層指令帶來了跨平臺的中間表示(IR),V8團隊決定在TurboFan之上構建一個新的前端,他們將其稱為CodeStubAssembler。 CodeStubAssembler定義了一種可移植的匯編語言,開發人員可以使用該語言來實現優化的內置函數。最重要的是,可移植匯編語言的跨平臺性質意味著開發人員只需編寫一次內置函數即可。所有支持的平臺和體系結構的實際本機代碼都由TurboFan進行編譯,你可以在此處閱讀有關CSA的更多信息。

盡管這是一個很大的改進,但仍然存在一些問題。使用CodeStubAssembler的語言編寫最佳代碼需要開發人員積累很多專業知識。即使掌握了所有這些知識,仍然存在很多容易導致安全漏洞的非常規漏洞,這導致V8團隊最終編寫了一個稱為Torque的新組件。

Torque

Torque是基于CodeStubAssembler構建的語言前端,它具有類似TypeScript的語法,強大的類型系統和強大的漏洞檢查函數,所有這些使得它成為V8開發人員編寫內置函數的理想選擇。Torque編譯器使用CodeStubAssembler將Torque代碼轉換為有效的匯編代碼,它極大地減少了安全漏洞的數量,你可以在此處閱讀更多有關Torque的信息。

漏洞發生的原因

由于Torque仍相對較新,因此仍然需要重新實現大量的CSA代碼。其中包括用于處理創建新的FixedArray和FixedDoubleArray對象的CSA代碼,它們是V8中的“快”數組(“快”數組具有連續的數組后備存儲,而“慢”數組具有基于字典的后備存儲)。

漏洞利用

開發人員將CodeStubAssembler :: AllocateFixedArray函數重新實現為兩個Torque宏,一個用于FixedArray對象,另一個用于FixedDoubleArray對象:

如果將上述函數與CodeStubAssembler :: AllocateFixedArray變體進行比較,則會發現缺少最大長度檢查。

NewFixedArray應確保返回的新FixedArray的長度小于FixedArray :: kMaxLength,即0x7fffffd或134217725。

同樣,NewFixedDoubleArray應該根據FixedDoubleArray :: kMaxLength(為0x3fffffe或67108862)檢查數組的長度。

在我們研究如何使用缺少的長度檢查之前,讓我們先了解一下Sergey是如何Trigger此漏洞的,因為它不像創建一個大于kMaxLength的新數組那樣簡單。

V8中的數組

現在,我們需要更多地了解V8中數組的表示方式。

內存中的數組

讓我們以數組[1、2、3、4]為例,并在內存中查看它。你可以通過運行帶有--allow-natives-syntax標志的V8,創建數組并執行%DebugPrint(array)來獲取其地址來實現此目的,使用GDB查看內存中的地址。

在V8中分配數組時,它實際上分配了兩個對象。請注意,每個字段的長度為4字節/ 32位:

JSArray對象是實際的數組,它包含四個重要字段以及其他一些不重要的字段。

  • 映射指針:這決定了數組的“形狀”,具體來說,它確定數組存儲哪種元素,以及其后備存儲對象是什么類型。在這種情況下,我們的數組存儲整數,后備存儲區為FixedArray。
  • 屬性指針:指向存儲數組可能具有的任何屬性的對象。在本例中,數組除了長度以外沒有任何屬性,長度被內聯存儲在JSArray對象本身中。
  • 元素指針:指向存儲數組元素的對象。這也稱為后備存儲,在本例中,后備存儲指向FixedArray對象,稍后會詳細介紹。
  • 數組長度:這是數組的長度。在研究人員那發布的概念證明中,這是他將長度字段覆蓋為0x24242424,然后允許他進行越界讀取和寫入。

JSArray對象的元素指針指向后備存儲,這是一個FixedArray對象,有兩個關鍵的事情要記住:

  • 不需要考慮FixedArray中的后備存儲長度,你可以將其覆蓋為任何值,但仍然無法讀取或寫入邊界。
  • 每個索引存儲在數組的元素上,內存中值的表示形式取決于數組的“元素種類”,而數組的“元素種類”則取決于原始JSArray對象的映射。在本例中,這些值是一個小的整數,它們是31位整數,其最低位設置為零。 1表示為1 << 1 = 2,2表示為2 << 1 = 4,依此類推。

元素種類

V8中的數組也具有“元素種類”的概念,你可以在此處找到所有元素種類的列表,但所有表的基本思想都是一樣的:在V8中每次創建數組時,都會用元素種類標記它,該種類定義了數組包含的元素類型。最常見的三種元素如下:

PACKED_SMI_ELEMENTS:數組被壓縮并且僅包含Smis(31位小整數,第32位設置為0)。

PACKED_DOUBLE_ELEMENTS:與上面相同,但為雙精度(64位浮點值)。

PACKED_ELEMENTS:與上面相同,但數組僅包含引用。這意味著它可以包含任何類型的元素(整數,雙精度數,對象等)。

數組也可以在元素類型之間進行轉換,但是轉換只能針對更通用的元素類型,而不能針對更具體的元素類型。例如,具有PACKED_SMI_ELEMENTS類型的數組可以轉換為HOLEY_SMI_ELEMENTS類型,但不能轉換為HOLEY_SMI_ELEMENTS類型,即填充已經有孔的數組中的所有孔都不會導致轉換為壓縮元素類型的變體。

下面的圖表展示了最常見的元素類型的轉換格:

我們實際上只關心與元素類型有關的兩件事:

  • SMI_ELEMENTS和DOUBLE_ELEMENTS類型的數組將其元素存儲在連續的數組后備存儲中,作為它們在內存中的實際表示形式。例如,數組[1.1、1.1、1.1]會將0x3ff199999999999a存儲在內存中三個元素的連續數組中(0x3ff199999999999a是1.1的IEEE-754表示形式)。另一方面,PACKED_ELEMENTS類型的數組將存儲對HeapNumber對象的三個連續引用,這些引用又包含1.1的IEEE-754表示形式。還有基于字典的備份存儲的元素種類,但這不是本文的重點。
  • 因為SMI_ELEMENTS和DOUBLE_ELEMENTS類數組的元素大小不同(Smis是31位整數,而雙精度是64位浮點型值),所以它們也具有不同的kMaxLength值。

概念驗證

Sergey提供了兩個概念證明:第一個為我們提供了一個數組,類型為HOLEY_SMI_ELEMENTS類型,長度為FixedArray :: kMaxLength + 3,而第二個為我們提供了一個數組,類型為HOLEY_DOUBLE_ELEMENTS類型,長度為FixedDoubleArray :: kMaxLength + 1。他僅利用第二個概念證明來構造最終的越界訪問原語。

兩種概念證明都使用Array.prototype.concat來首先獲得一個數組,該數組的大小恰好小于相應元素類型的kMaxLength值。完成此操作后,將使用Array.prototype.splice向數組中添加更多元素,這會導致其長度增加到kMaxLength以上。之所以可行,是因為Array.prototype.splice的快路徑間接使用了新的Torque函數,如果原始數組不夠大,則會分配一個新數組。出于好奇,實現此目的的函數調用鏈可能如下:

你可能想知道為什么不能創建一個大小剛好低于FixedArray::kMaxLength的大數組并使用它。讓我們嘗試一下(使用優化的發行版等待的時間會短一些):

這不僅需要花費一些時間,而且還會收到OOM(內存不足)漏洞!發生這種漏洞的原因是,數組分配不會是一次性完成的。對AllocateRawFixedArray的調用很多,每個調用都分配一個稍大的數組。你可以通過在AllocateRawFixedArray上設置斷點,然后如上所述分配數組,來在GDB中看到這一點。我不完全確定為什么V8會這樣做,但是很多分配都會導致V8很快耗盡內存。

我的另一個想法是改用FixedDoubleArray :: kMaxLength,因為它要小得多(使用優化的發行版):

這確實有效,因為它會返回一個新的HOLEY_DOUBLE_ELEMENTS類型的數組,其長度設置為FixedDoubleArray :: kMaxLength + 1,因此可以使用它代替array .prototype.concat。我相信這樣做的原因是因為分配大小為0x3fffffd的數組所需的分配數量足夠小,以至于不會不會導致引擎進入OOM。

但是,此方法有兩個缺點:分配和填充龐大的數組需要花費大量時間,因此在漏洞利用中并不理想。另一個問題是,嘗試在內存受限的環境(例如舊手機)中以這種方式Trigger漏洞,可能會導致引擎運行OOM。

另一方面,Sergey的第一個概念證明在我的計算機上花費了大約2秒鐘,并且內存效率很高。以下是具體分析過程。

第一個概念證明

第一個概念證明如下,請確保你使用優化的發行版版本來運行它,否則將需要很長時間才能完成:

讓我們一步一步來分析,在[1]的位置,創建了一個大小為0x80000的數組,并使用1填充。這種大小的數組需要分配大量內存,但幾乎沒有使引擎成為OOM的條件。由于數組最初是空的,因此它得到的是HOLEY_SMI_ELEMENTS類型,即使將其填充為1也會保留該元素的類型。

我們稍后會回到[2],但是在[3]中,使用0xff元素創建了一個新的args數組,每個元素都被設置為在[1]處創建的數組。這使args數組總共為0xff * 0x80000 = 0x7f80000個元素。在[4]處,將另一個大小為0x7fffc的數組壓入args數組,這使其總數為0x7f80000 + 0x7fffc = 0x7fffffc個元素,0x7fffffc僅比FixedDoubleArray :: kMaxLength = 0x7fffffd小1。

在[5],Array.prototype.concat.apply將args數組中的每個元素連接到空數組[],你可以在此處閱讀有關Function.prototype.apply()如何工作的更多信息,但它實際上將args視為參數數組,并將每個元素連接為最終的數組。我們知道元素總數為0x7fffffc,因此最終數組將具有那么多元素。這種連接發生得比較快(在我的設備上大約需要2秒鐘),盡管它比我前面演示的簡單地創建數組要快得多。

最后,在[6]處,Array.prototype.splice向該數組追加了4個額外的元素,這意味著其長度現在為0x8000000,即FixedArray :: kMaxLength + 3。

唯一需要說明的是[2],其中將屬性添加到原始數組。要了解這一點,你必須首先了解幾乎所有V8內置函數的約定是有一個快路徑和一個慢路徑。在Array.prototype.concat的情況下,采用慢路徑的一種簡單方法是向要連接的數組添加屬,快路徑具有以下代碼:

可以看到,快路徑檢查確保最終數組的長度不超過kMaxLength值。由于FixedDoubleArray::kMaxLength是FixedArray::kMaxLength的一半,所以上述概念證明將永遠不會通過此檢查。隨意嘗試在不使用array.prop = 1的情況下運行代碼;看看會發生什么!

另一方面,慢路徑(Slow_ArrayConcat)沒有任何長度檢查(但是,如果長度超過FixedArray :: kMaxLength,它仍然會崩潰并產生致命的OOM漏洞,因為它調用的其中一個函數仍然會檢查長度。這就是為什么研究者會使用慢路徑的原因,因為可以繞過快路徑中存在的檢查。

第二個概念證明(第一部分)

盡管第一個概念證明演示了漏洞,并且可以用于利用(在第二個概念證明中,你只需稍微修改一下trigger函數),但它需要幾秒鐘才能完成,這可能也不太理想。Sergey選擇使用HOLEY_DOUBLE_ELEMENTS類數組。這可能是因為FixedDoubleArray::kMaxLength值明顯小于它的FixedArray變體,從而導致更快的Trigger。如果你理解了第一個概念證明,,那么第二個概念證明的第一部分的以下注釋版本就很好理解了:

此時,giant_array的長度為0x3ffffff,即FixedDoubleArray :: kMaxLength +1。現在的問題是,我們如何在漏洞利用程序中使用此數組?我們沒有任何有用的原語,因此我們需要找到引擎的其他部分,這些部分的代碼取決于數組長度不能超過kMaxLength值。

對于大多數研究人員來說,該漏洞本身確實很容易被發現,因為你只需要將函數的新的Torque實現與舊的實現進行比較即可。盡管知道如何利用它,但需要對V8本身有更深入的了解。 Sergey采取的利用途徑利用了V8的推測性優化編譯器TurboFan,它需要自己引入。

本文翻譯自:https://www.elttam.com/blog/simple-bugs-with-complex-exploits/#content

 

責任編輯:趙寧寧 來源: 嘶吼網
相關推薦

2021-08-29 18:34:44

編譯V8C++

2022-08-19 06:40:02

V8GC

2022-05-06 23:03:48

V8CPUProfiler

2015-02-10 14:32:37

XSS漏洞XSS

2022-05-24 06:04:19

ExtensionV8Node.js

2025-09-08 01:55:00

2021-05-28 05:30:55

HandleV8代碼

2023-10-10 10:23:50

JavaScriptV8

2009-07-20 09:36:04

谷歌瀏覽器安全漏洞

2020-08-31 08:11:01

V8 8.5Promise前端

2010-07-20 16:35:52

V8JavaScript瀏覽器

2016-03-03 14:29:15

2022-09-16 08:32:25

JavaC++語言

2023-06-05 16:38:51

JavaScript編程語言V8

2023-06-07 16:00:40

JavaScriptV8語言

2011-07-18 13:34:44

SQL Server數拼接字符串

2012-11-07 13:05:29

2014-10-21 11:11:08

Siri人工智能

2014-11-26 09:51:24

GithubGoogleV8

2022-07-22 15:40:26

Atlassian服務器漏洞
點贊
收藏

51CTO技術棧公眾號

欧美激情在线播放| 337p亚洲精品色噜噜噜| 欧美日本亚洲| 夜夜狠狠擅视频| 欧美99在线视频观看| 日韩h在线观看| 欧美一级特黄a| 日本一本在线免费福利| 久久伊人中文字幕| 91网站在线看| www.国产com| 欧美~级网站不卡| 亚洲一区二区久久| 一级黄色免费视频| 国产精品久久久久久久久久齐齐| 一区二区三区成人| 亚洲国产日韩美| 少妇av一区二区| 久草精品在线观看| 日韩av成人在线| 精品人妻在线播放| 国产国产精品| 亚洲欧洲第一视频| 亚洲熟妇一区二区| 国产999精品在线观看| 色婷婷亚洲精品| 美女扒开大腿让男人桶 | 精品电影一区二区三区| 国产精品免费成人| av影院在线| 亚洲三级理论片| 日韩精品国内| 日本在线视频1区| 丁香一区二区三区| 亚洲自拍av在线| 亚洲性在线观看| 日韩精品91亚洲二区在线观看| 欧美激情一区二区三区在线视频观看 | 日韩av超清在线观看| 亚洲超碰精品一区二区| 91视频成人免费| 免费av网站在线看| 中文字幕av资源一区| 欧美在线一二三区| 欧美巨乳在线| 久久久久久一二三区| 裸模一区二区三区免费| 五月激情婷婷综合| 成人黄色在线视频| 国产91aaa| 亚洲国产成人精品一区二区三区| 激情综合一区二区三区| 国产美女精品视频免费观看| 99成人精品视频| 日本免费在线视频不卡一不卡二 | 精品美女久久久久| 亚洲另类自拍| 2019中文字幕免费视频| 伊人久久综合视频| 免费在线亚洲| 国产福利成人在线| 中文区中文字幕免费看| 久久国产尿小便嘘嘘| 成人美女av在线直播| 99久久亚洲精品日本无码| 国产一区二区中文字幕| 99久久伊人精品影院| 好吊色一区二区三区| 成人av网址在线| 蜜桃91精品入口| 国产专区在线| 中文字幕中文字幕中文字幕亚洲无线| 一区二区三区四区视频在线观看| 精品176二区| 亚洲一二三区在线观看| 免费毛片小视频| 成人四虎影院| 国产精品15p| 中文av字幕一区| 国产福利片一区二区| 91网址在线观看| 亚洲国产成人porn| 中文字幕乱码人妻综合二区三区| 色香欲www7777综合网| 在线成人高清不卡| 天天躁日日躁狠狠躁免费麻豆| 天堂网av成人| www.国产精品一二区| 久草视频免费在线| 久久视频一区| 亚洲最大福利视频网站| 欧美套图亚洲一区| 综合在线观看色| 国产精品国产亚洲精品看不卡| 在线国产成人影院| 欧美一区二区视频在线观看2020 | av在线免费观看国产| 瑟瑟视频在线看| 欧美日韩国产一二三| 亚洲男女在线观看| 91亚洲国产| 国产91|九色| av天堂一区二区三区| 久久久久国产精品免费免费搜索| 亚洲成人动漫在线| 黑人精品一区| 精品国产成人系列| 国产在线观看免费视频软件| 国产精品五区| 99理论电影网| 拍真实国产伦偷精品| 精品国产福利在线| 性生活在线视频| 国产一区二区三区天码| 欧美精品www| 一本一道人人妻人人妻αv| 91视频免费播放| 黄色三级中文字幕| 亚洲欧美一级| 在线精品视频视频中文字幕| 中文字幕在线观看免费视频| 国产一区二区美女| 亚洲制服欧美久久| 日本综合久久| 亚洲人成在线免费观看| 亚洲精品77777| 国产成人午夜片在线观看高清观看| 香蕉久久夜色| 久久91导航| 日韩精品中文字幕在线| 91高跟黑色丝袜呻吟在线观看| 波多野结衣国产| 国产福利一区二区三区视频| 一个色的综合| av免费在线一区| 亚洲性线免费观看视频成熟| 影音先锋在线国产| 99久精品国产| 少妇高潮喷水在线观看| 国产成人福利av| 欧美大学生性色视频| 99久久久国产精品无码网爆| 亚洲天堂2014| 超碰在线资源站| 久久精品国内一区二区三区水蜜桃 | 99爱在线视频| 精品粉嫩aⅴ一区二区三区四区| 国产黄色片在线免费观看| 国内精品自线一区二区三区视频| 亚洲精品一区二区毛豆| 免费成人高清在线视频| www.xxxx精品| 性欧美18一19性猛交| 亚洲制服丝袜av| 韩国三级在线看| 亚洲欧洲午夜| 久久综合久久久| 日本欧美日韩| 亚洲激情77| 欧美日韩成人免费| 蜜臀久久99精品久久久| 五月综合激情网| 国产吞精囗交久久久| 久久激情久久| 亚洲国产精品一区二区第一页 | 7777精品伊人久久久大香线蕉的| 成人性视频免费看| 激情成人午夜视频| 欧美 日韩 国产精品| 成人av影音| 91福利视频网| 亚洲1卡2卡3卡4卡乱码精品| 在线观看91av| 免费看一级一片| 91在线精品一区二区三区| www.超碰com| 女人天堂亚洲aⅴ在线观看| 国产亚洲精品美女久久久m| a日韩av网址| 色伦专区97中文字幕| 精品人妻无码一区二区三区蜜桃一| 午夜在线激情影院| 日韩精品专区在线影院观看| 青青国产在线观看| 欧美国产综合色视频| 久久99精品视频一区97| 三级在线免费看| 欧美一区电影| 亚洲xxx大片| 免费看av不卡| 久精品免费视频| 欧美成人综合在线| 在线播放中文字幕一区| 国产污视频在线看| 亚洲国产精品成人综合色在线婷婷| 日韩av福利在线观看| 香蕉视频成人在线观看| 手机福利在线视频| 视频福利一区| 91热精品视频| 亚洲成人激情社区| 欧美国产日韩视频| av电影在线观看网址| 亚洲白拍色综合图区| 91精品国产综合久| 色综合中文综合网| 久久老司机精品视频| 国产精品少妇自拍| 中文字幕人妻一区二区| 国产成人久久精品77777最新版本| 日av中文字幕| 最新亚洲激情| 国产精品啪啪啪视频| 狠狠色丁香婷婷综合影院| 国产精品加勒比| 国产亚洲字幕| 国产欧美日韩视频| 成人午夜视屏| 午夜精品久久久久久久久久久久| 久草资源在线| 中文字幕国产精品久久| 亚洲 小说区 图片区 都市| 欧美一区二区三区影视| 亚洲一级视频在线观看| 欧美午夜片在线免费观看| 亚洲欧美日韩国产yyy| 四虎成人免费在线| 精品99久久久久久| www.av在线.com| 欧美一区二区在线播放| 一级成人免费视频| 欧美性一区二区| 日本视频网站在线观看| 疯狂做受xxxx欧美肥白少妇| 国产一级特黄aaa大片| 亚洲综合在线免费观看| 欧美黑人猛猛猛| 一区二区三区四区乱视频| 91香蕉一区二区三区在线观看| 亚洲国产激情av| 变态另类ts人妖一区二区| 国产视频一区二区在线| 日韩av在线看免费观看| 91丝袜高跟美女视频| 一级国产黄色片| 2023国产精品| 亚洲第一香蕉网| 久久精品在线观看| 免费人成又黄又爽又色| 国产欧美日韩三级| 正在播放国产对白害羞| 国产精品高潮久久久久无| 99热6这里只有精品| 国产精品久久777777| 中日韩一级黄色片| 亚洲男人都懂的| 美女毛片在线观看| 偷窥少妇高潮呻吟av久久免费| 国产精久久久久久| 狠狠综合久久av一区二区小说| 天天综合天天干| 日本久久一区二区三区| 波多野结衣视频观看| 欧美色中文字幕| 136福利视频导航| 91精品国产综合久久久蜜臀粉嫩 | 国产超碰精品| 国产精品久久久久久久久久东京 | 欧美人与禽zozo性伦| 97国产成人无码精品久久久| 欧美一区二区视频在线观看2022| 国产 欧美 精品| 国产亚洲成av人片在线观看桃| 在线观看免费高清完整| 久久6免费高清热精品| av小说在线播放| 国产极品精品在线观看| 国产aⅴ精品一区二区四区| 国产高清精品一区二区三区| 神马日本精品| 天天色天天操综合| av片在线免费看| 一区二区国产盗摄色噜噜| 久久视频免费在线观看| 一本一道综合狠狠老| 亚洲专区在线播放| 亚洲成人网av| 成人高清网站| 欧美激情极品视频| 91精品影视| 高清视频在线观看一区| 色棕色天天综合网| 欧美在线观看视频免费| 久久在线精品| 人妻激情偷乱视频一区二区三区| 91亚洲永久精品| 黄色香蕉视频在线观看| 欧美性猛交xxxx黑人| 国产免费黄色大片| 亚洲人成在线观| www成人免费观看| 成人免费xxxxx在线观看| 免费欧美一区| 男人添女荫道口女人有什么感觉| 日本在线不卡一区| 色综合久久五月| 亚洲欧美另类图片小说| 波多野结衣黄色网址| 亚洲国产精品成人精品| 国产日产一区二区三区| 国产高清在线不卡| 日韩精品社区| 丁香婷婷综合激情| 国产一区二区不卡老阿姨| 欧美 日韩 国产 成人 在线观看| 亚洲国产一区视频| 99国产在线播放| 久久精品人人做人人爽| 日韩精选视频| 久久综合福利| 亚洲欧洲一区| 久久精品无码专区| 亚洲色图在线视频| 中文字幕在线观看视频一区| 亚洲全黄一级网站| 色资源二区在线视频| 国产精品免费看一区二区三区| 一区二区三区四区电影| 国产日韩欧美久久| 亚洲国产精品成人综合色在线婷婷| 国产精品久免费的黄网站| 亚洲精品97久久| 91老司机福利在线| 国产精品三区四区| 国语对白精品一区二区| 台湾佬美性中文| 一区二区三区中文字幕| 国产精品嫩草影院桃色| 久久久成人的性感天堂| 亚洲影视资源| 在线视频91| 国产在线不卡一区| 激情小说中文字幕| 日韩丝袜美女视频| 女人天堂av在线播放| 国产91精品一区二区绿帽| 欧美三级不卡| 久久精品aⅴ无码中文字字幕重口| 一区二区欧美视频| 国产77777| 午夜天堂精品久久久久| 91高清国产视频| 亚洲欧美一区二区视频| 国产精品一二三四五区| 九九热这里只有精品6| 中文字幕日韩高清在线| 免费av手机在线观看| 94色蜜桃网一区二区三区| 69国产精品视频免费观看| 国产小视频国产精品| 国产精品亚洲成在人线| 欧美一级黄色录像片| 国产凹凸在线观看一区二区| 黄色小视频在线免费看| 亚洲精品一区二区在线| 日韩中文视频| 青青草影院在线观看| 粉嫩aⅴ一区二区三区四区| 国产午夜免费视频| 亚洲剧情一区二区| 成人深夜福利| 岛国大片在线播放 | 日本精品在线观看视频| 欧美日韩亚洲另类| 欧美24videosex性欧美| 欧美久久久久久| 精品一区二区三区香蕉蜜桃| 一区二区三区免费高清视频| 亚洲日本中文字幕| www.久久久.com| 国产一区二区在线视频播放| 国产精品伦一区二区三级视频| 国产aⅴ爽av久久久久成人| 8x拔播拔播x8国产精品| 91日韩在线| 日韩免费高清一区二区| 欧美色国产精品| 后进极品白嫩翘臀在线播放| 日韩精品大片| 成人午夜在线视频| 中文字幕在线网站| 91精品国产91| 91成人精品视频| japanese中文字幕| 欧美va亚洲va国产综合| 97欧美成人| 欧美日韩成人免费视频| 亚洲色图清纯唯美| 韩国福利在线| 国产区一区二区三区|