婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)

fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)

熱門標(biāo)簽:地圖標(biāo)注資源分享注冊(cè) 合肥阿里辦理400電話號(hào) 襄陽外呼增值業(yè)務(wù)線路解決方案 高德地圖標(biāo)注公司位置需要錢嗎 北京外呼系統(tǒng)咨詢電話 慶陽外呼系統(tǒng)定制開發(fā) 怎么去掉地圖標(biāo)注文字 廊坊地圖標(biāo)注申請(qǐng)入口 海南人工外呼系統(tǒng)哪家好

GitHub 15.8k Star 的Java工程師成神之路,不來了解一下嗎!

GitHub 15.8k Star 的Java工程師成神之路,真的不來了解一下嗎!

GitHub 15.8k Star 的Java工程師成神之路,真的真的不來了解一下嗎!

fastjson大家一定都不陌生,這是阿里巴巴的開源一個(gè)JSON解析庫,通常被用于將Java Bean和JSON 字符串之間進(jìn)行轉(zhuǎn)換。

前段時(shí)間,fastjson被爆出過多次存在漏洞,很多文章報(bào)道了這件事兒,并且給出了升級(jí)建議。

但是作為一個(gè)開發(fā)者,我更關(guān)注的是他為什么會(huì)頻繁被爆漏洞?于是我?guī)е苫螅タ戳讼耭astjson的releaseNote以及部分源代碼。

最終發(fā)現(xiàn),這其實(shí)和fastjson中的一個(gè)AutoType特性有關(guān)。

從2019年7月份發(fā)布的v1.2.59一直到2020年6月份發(fā)布的 v1.2.71 ,每個(gè)版本的升級(jí)中都有關(guān)于AutoType的升級(jí)。

下面是fastjson的官方releaseNotes 中,幾次關(guān)于AutoType的重要升級(jí):

1.2.59發(fā)布,增強(qiáng)AutoType打開時(shí)的安全性 fastjson

1.2.60發(fā)布,增加了AutoType黑名單,修復(fù)拒絕服務(wù)安全問題 fastjson

1.2.61發(fā)布,增加AutoType安全黑名單 fastjson

1.2.62發(fā)布,增加AutoType黑名單、增強(qiáng)日期反序列化和JSONPath fastjson

1.2.66發(fā)布,Bug修復(fù)安全加固,并且做安全加固,補(bǔ)充了AutoType黑名單 fastjson

1.2.67發(fā)布,Bug修復(fù)安全加固,補(bǔ)充了AutoType黑名單 fastjson

1.2.68發(fā)布,支持GEOJSON,補(bǔ)充了AutoType黑名單。(引入一個(gè)safeMode的配置,配置safeMode后,無論白名單和黑名單,都不支持autoType。) fastjson

1.2.69發(fā)布,修復(fù)新發(fā)現(xiàn)高危AutoType開關(guān)繞過安全漏洞,補(bǔ)充了AutoType黑名單 fastjson

1.2.70發(fā)布,提升兼容性,補(bǔ)充了AutoType黑名單

甚至在fastjson的開源庫中,有一個(gè)Issue是建議作者提供不帶autoType的版本:

那么,什么是AutoType?為什么fastjson要引入AutoType?為什么AutoType會(huì)導(dǎo)致安全漏洞呢?本文就來深入分析一下。

AutoType 何方神圣?

fastjson的主要功能就是將Java Bean序列化成JSON字符串,這樣得到字符串之后就可以通過數(shù)據(jù)庫等方式進(jìn)行持久化了。

但是,fastjson在序列化以及反序列化的過程中并沒有使用Java自帶的序列化機(jī)制,而是自定義了一套機(jī)制。

其實(shí),對(duì)于JSON框架來說,想要把一個(gè)Java對(duì)象轉(zhuǎn)換成字符串,可以有兩種選擇:

  • 1、基于屬性
  • 2、基于setter/getter

而我們所常用的JSON序列化框架中,F(xiàn)astJson和jackson在把對(duì)象序列化成json字符串的時(shí)候,是通過遍歷出該類中的所有g(shù)etter方法進(jìn)行的。Gson并不是這么做的,他是通過反射遍歷該類中的所有屬性,并把其值序列化成json。

假設(shè)我們有以下一個(gè)Java類:

class Store {
 private String name;
 private Fruit fruit;
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public Fruit getFruit() {
 return fruit;
 }
 public void setFruit(Fruit fruit) {
 this.fruit = fruit;
 }
}

interface Fruit {
}

class Apple implements Fruit {
 private BigDecimal price;
 //省略 setter/getter、toString等
}

當(dāng)我們要對(duì)他進(jìn)行序列化的時(shí)候,fastjson會(huì)掃描其中的getter方法,即找到getName和getFruit,這時(shí)候就會(huì)將name和fruit兩個(gè)字段的值序列化到JSON字符串中。

那么問題來了,我們上面的定義的Fruit只是一個(gè)接口,序列化的時(shí)候fastjson能夠把屬性值正確序列化出來嗎?如果可以的話,那么反序列化的時(shí)候,fastjson會(huì)把這個(gè)fruit反序列化成什么類型呢?

我們嘗試著驗(yàn)證一下,基于(fastjson v 1.2.68):

Store store = new Store();
store.setName("Hollis");
Apple apple = new Apple();
apple.setPrice(new BigDecimal(0.5));
store.setFruit(apple);
String jsonString = JSON.toJSONString(store);
System.out.println("toJSONString : " + jsonString);

以上代碼比較簡單,我們創(chuàng)建了一個(gè)store,為他指定了名稱,并且創(chuàng)建了一個(gè)Fruit的子類型Apple,然后將這個(gè)store使用JSON.toJSONString進(jìn)行序列化,可以得到以下JSON內(nèi)容:

toJSONString : {"fruit":{"price":0.5},"name":"Hollis"}

那么,這個(gè)fruit的類型到底是什么呢,能否反序列化成Apple呢?我們?cè)賮韴?zhí)行以下代碼:

Store newStore = JSON.parseObject(jsonString, Store.class);
System.out.println("parseObject : " + newStore);
Apple newApple = (Apple)newStore.getFruit();
System.out.println("getFruit : " + newApple);

執(zhí)行結(jié)果如下:

toJSONString : {"fruit":{"price":0.5},"name":"Hollis"}
parseObject : Store{name='Hollis', fruit={}}
Exception in thread "main" java.lang.ClassCastException: com.hollis.lab.fastjson.test.$Proxy0 cannot be cast to com.hollis.lab.fastjson.test.Apple
at com.hollis.lab.fastjson.test.FastJsonTest.main(FastJsonTest.java:26)

可以看到,在將store反序列化之后,我們嘗試將Fruit轉(zhuǎn)換成Apple,但是拋出了異常,嘗試直接轉(zhuǎn)換成Fruit則不會(huì)報(bào)錯(cuò),如:

Fruit newFruit = newStore.getFruit();
System.out.println("getFruit : " + newFruit);

以上現(xiàn)象,我們知道,當(dāng)一個(gè)類中包含了一個(gè)接口(或抽象類)的時(shí)候,在使用fastjson進(jìn)行序列化的時(shí)候,會(huì)將子類型抹去,只保留接口(抽象類)的類型,使得反序列化時(shí)無法拿到原始類型。

那么有什么辦法解決這個(gè)問題呢,fastjson引入了AutoType,即在序列化的時(shí)候,把原始類型記錄下來。

使用方法是通過SerializerFeature.WriteClassName進(jìn)行標(biāo)記,即將上述代碼中的

 String jsonString = JSON.toJSONString(store);

修改成:

 String jsonString = JSON.toJSONString(store,SerializerFeature.WriteClassName);

即可,以上代碼,輸出結(jié)果如下:

System.out.println("toJSONString : " + jsonString);

{
 "@type":"com.hollis.lab.fastjson.test.Store",
 "fruit":{
 "@type":"com.hollis.lab.fastjson.test.Apple",
 "price":0.5
 },
 "name":"Hollis"
}

可以看到,使用SerializerFeature.WriteClassName進(jìn)行標(biāo)記后,JSON字符串中多出了一個(gè)@type字段,標(biāo)注了類對(duì)應(yīng)的原始類型,方便在反序列化的時(shí)候定位到具體類型

如上,將序列化后的字符串在反序列化,既可以順利的拿到一個(gè)Apple類型,整體輸出內(nèi)容:

toJSONString : {"@type":"com.hollis.lab.fastjson.test.Store","fruit":{"@type":"com.hollis.lab.fastjson.test.Apple","price":0.5},"name":"Hollis"}
parseObject : Store{name='Hollis', fruit=Apple{price=0.5}}
getFruit : Apple{price=0.5}

這就是AutoType,以及fastjson中引入AutoType的原因。

但是,也正是這個(gè)特性,因?yàn)樵诠δ茉O(shè)計(jì)之初在安全方面考慮的不夠周全,也給后續(xù)fastjson使用者帶來了無盡的痛苦

AutoType 何錯(cuò)之有?

因?yàn)橛辛薬utoType功能,那么fastjson在對(duì)JSON字符串進(jìn)行反序列化的時(shí)候,就會(huì)讀取@type到內(nèi)容,試圖把JSON內(nèi)容反序列化成這個(gè)對(duì)象,并且會(huì)調(diào)用這個(gè)類的setter方法。

那么就可以利用這個(gè)特性,自己構(gòu)造一個(gè)JSON字符串,并且使用@type指定一個(gè)自己想要使用的攻擊類庫。

舉個(gè)例子,黑客比較常用的攻擊類庫是com.sun.rowset.JdbcRowSetImpl,這是sun官方提供的一個(gè)類庫,這個(gè)類的dataSourceName支持傳入一個(gè)rmi的源,當(dāng)解析這個(gè)uri的時(shí)候,就會(huì)支持rmi遠(yuǎn)程調(diào)用,去指定的rmi地址中去調(diào)用方法。

而fastjson在反序列化時(shí)會(huì)調(diào)用目標(biāo)類的setter方法,那么如果黑客在JdbcRowSetImpl的dataSourceName中設(shè)置了一個(gè)想要執(zhí)行的命令,那么就會(huì)導(dǎo)致很嚴(yán)重的后果。

如通過以下方式定一個(gè)JSON串,即可實(shí)現(xiàn)遠(yuǎn)程命令執(zhí)行(在早期版本中,新版本中JdbcRowSetImpl已經(jīng)被加了黑名單)

{
"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true
}

這就是所謂的遠(yuǎn)程命令執(zhí)行漏洞,即利用漏洞入侵到目標(biāo)服務(wù)器,通過服務(wù)器執(zhí)行命令。

在早期的fastjson版本中(v1.2.25 之前),因?yàn)锳utoType是默認(rèn)開啟的,并且也沒有什么限制,可以說是裸著的。

從v1.2.25開始,fastjson默認(rèn)關(guān)閉了autotype支持,并且加入了checkAutotype,加入了黑名單+白名單來防御autotype開啟的情況。

但是,也是從這個(gè)時(shí)候開始,黑客和fastjson作者之間的博弈就開始了。

因?yàn)閒astjson默認(rèn)關(guān)閉了autotype支持,并且做了黑白名單的校驗(yàn),所以攻擊方向就轉(zhuǎn)變成了"如何繞過checkAutotype"。

下面就來細(xì)數(shù)一下各個(gè)版本的fastjson中存在的漏洞以及攻擊原理,由于篇幅限制,這里并不會(huì)講解的特別細(xì)節(jié),如果大家感興趣我后面可以單獨(dú)寫一篇文章講講細(xì)節(jié)。下面的內(nèi)容主要是提供一些思路,目的是說明寫代碼的時(shí)候注意安全性的重要性。

繞過checkAutotype,黑客與fastjson的博弈

在fastjson v1.2.41 之前,在checkAutotype的代碼中,會(huì)先進(jìn)行黑白名單的過濾,如果要反序列化的類不在黑白名單中,那么才會(huì)對(duì)目標(biāo)類進(jìn)行反序列化。

但是在加載的過程中,fastjson有一段特殊的處理,那就是在具體加載類的時(shí)候會(huì)去掉className前后的L;,形如Lcom.lang.Thread;

而黑白名單又是通過startWith檢測的,那么黑客只要在自己想要使用的攻擊類庫前后加上L;就可以繞過黑白名單的檢查了,也不耽誤被fastjson正常加載。

Lcom.sun.rowset.JdbcRowSetImpl;,會(huì)先通過白名單校驗(yàn),然后fastjson在加載類的時(shí)候會(huì)去掉前后的L,變成了com.sun.rowset.JdbcRowSetImpl`。

為了避免被攻擊,在之后的 v1.2.42版本中,在進(jìn)行黑白名單檢測的時(shí)候,fastjson先判斷目標(biāo)類的類名的前后是不是L;,如果是的話,就截取掉前后的L;再進(jìn)行黑白名單的校驗(yàn)。

看似解決了問題,但是黑客發(fā)現(xiàn)了這個(gè)規(guī)則之后,就在攻擊時(shí)在目標(biāo)類前后雙寫LL;;,這樣再被截取之后還是可以繞過檢測。如LLcom.sun.rowset.JdbcRowSetImpl;;

魔高一尺,道高一丈。在 v1.2.43中,fastjson這次在黑白名單判斷之前,增加了一個(gè)是否以LL未開頭的判斷,如果目標(biāo)類以LL開頭,那么就直接拋異常,于是就又短暫的修復(fù)了這個(gè)漏洞。

黑客在L;這里走不通了,于是想辦法從其他地方下手,因?yàn)閒astjson在加載類的時(shí)候,不只對(duì)L;這樣的類進(jìn)行特殊處理,還對(duì)[也被特殊處理了。

同樣的攻擊手段,在目標(biāo)類前面添加[,v1.2.43以前的所有版本又淪陷了。

于是,在 v1.2.44版本中,fastjson的作者做了更加嚴(yán)格的要求,只要目標(biāo)類以[開頭或者以;結(jié)尾,都直接拋異常。也就解決了 v1.2.43及歷史版本中發(fā)現(xiàn)的bug。

在之后的幾個(gè)版本中,黑客的主要的攻擊方式就是繞過黑名單了,而fastjson也在不斷的完善自己的黑名單。

autoType不開啟也能被攻擊?

但是好景不長,在升級(jí)到 v1.2.47 版本時(shí),黑客再次找到了辦法來攻擊。而且這個(gè)攻擊只有在autoType關(guān)閉的時(shí)候才生效。

是不是很奇怪,autoType不開啟反而會(huì)被攻擊。

因?yàn)樵趂astjson中有一個(gè)全局緩存,在類加載的時(shí)候,如果autotype沒開啟,會(huì)先嘗試從緩存中獲取類,如果緩存中有,則直接返回。黑客正是利用這里機(jī)制進(jìn)行了攻擊。

黑客先想辦法把一個(gè)類加到緩存中,然后再次執(zhí)行的時(shí)候就可以繞過黑白名單檢測了,多么聰明的手段。

首先想要把一個(gè)黑名單中的類加到緩存中,需要使用一個(gè)不在黑名單中的類,這個(gè)類就是java.lang.Class

java.lang.Class類對(duì)應(yīng)的deserializer為MiscCodec,反序列化時(shí)會(huì)取json串中的val值并加載這個(gè)val對(duì)應(yīng)的類。

如果fastjson cache為true,就會(huì)緩存這個(gè)val對(duì)應(yīng)的class到全局緩存中

如果再次加載val名稱的類,并且autotype沒開啟,下一步就是會(huì)嘗試從全局緩存中獲取這個(gè)class,進(jìn)而進(jìn)行攻擊。

所以,黑客只需要把攻擊類偽裝以下就行了,如下格式:

{
"@type": "java.lang.Class","val": "com.sun.rowset.JdbcRowSetImpl"
}

于是在 v1.2.48中,fastjson修復(fù)了這個(gè)bug,在MiscCodec中,處理Class類的地方,設(shè)置了fastjson cache為false,這樣攻擊類就不會(huì)被緩存了,也就不會(huì)被獲取到了。

在之后的多個(gè)版本中,黑客與fastjson又繼續(xù)一直都在繞過黑名單、添加黑名單中進(jìn)行周旋。

直到后來,黑客在 v1.2.68之前的版本中又發(fā)現(xiàn)了一個(gè)新的漏洞利用方式。

利用異常進(jìn)行攻擊

在fastjson中, 如果,@type 指定的類為 Throwable 的子類,那對(duì)應(yīng)的反序列化處理類就會(huì)使用到 ThrowableDeserializer

而在ThrowableDeserializer#deserialze的方法中,當(dāng)有一個(gè)字段的key也是 @type時(shí),就會(huì)把這個(gè) value 當(dāng)做類名,然后進(jìn)行一次 checkAutoType 檢測。

并且指定了expectClass為Throwable.class,但是在checkAutoType中,有這樣一約定,那就是如果指定了expectClass ,那么也會(huì)通過校驗(yàn)。

因?yàn)閒astjson在反序列化的時(shí)候會(huì)嘗試執(zhí)行里面的getter方法,而Exception類中都有一個(gè)getMessage方法。

黑客只需要自定義一個(gè)異常,并且重寫其getMessage就達(dá)到了攻擊的目的。

這個(gè)漏洞就是6月份全網(wǎng)瘋傳的那個(gè)"嚴(yán)重漏洞",使得很多開發(fā)者不得不升級(jí)到新版本。

這個(gè)漏洞在 v1.2.69中被修復(fù),主要修復(fù)方式是對(duì)于需要過濾掉的expectClass進(jìn)行了修改,新增了4個(gè)新的類,并且將原來的Class類型的判斷修改為hash的判斷。

其實(shí),根據(jù)fastjson的官方文檔介紹,即使不升級(jí)到新版,在v1.2.68中也可以規(guī)避掉這個(gè)問題,那就是使用safeMode

AutoType 安全模式?

可以看到,這些漏洞的利用幾乎都是圍繞AutoType來的,于是,在 v1.2.68版本中,引入了safeMode,配置safeMode后,無論白名單和黑名單,都不支持autoType,可一定程度上緩解反序列化Gadgets類變種攻擊。

設(shè)置了safeMode后,@type 字段不再生效,即當(dāng)解析形如{"@type": "com.java.class"}的JSON串時(shí),將不再反序列化出對(duì)應(yīng)的類。

開啟safeMode方式如下:

ParserConfig.getGlobalInstance().setSafeMode(true);

如在本文的最開始的代碼示例中,使用以上代碼開啟safeMode模式,執(zhí)行代碼,會(huì)得到以下異常:

Exception in thread "main" com.alibaba.fastjson.JSONException: safeMode not support autoType : com.hollis.lab.fastjson.test.Apple
at com.alibaba.fastjson.parser.ParserConfig.checkAutoType(ParserConfig.java:1244)

但是值得注意的是,使用這個(gè)功能,fastjson會(huì)直接禁用autoType功能,即在checkAutoType方法中,直接拋出一個(gè)異常。

后話

目前fastjson已經(jīng)發(fā)布到了 v1.2.72版本,歷史版本中存在的已知問題在新版本中均已修復(fù)。

開發(fā)者可以將自己項(xiàng)目中使用的fastjson升級(jí)到最新版,并且如果代碼中不需要用到AutoType的話,可以考慮使用safeMode,但是要評(píng)估下對(duì)歷史代碼的影響。

因?yàn)閒astjson自己定義了序列化工具類,并且使用asm技術(shù)避免反射、使用緩存、并且做了很多算法優(yōu)化等方式,大大提升了序列化及反序列化的效率。

之前有網(wǎng)友對(duì)比過:

當(dāng)然,快的同時(shí)也帶來了一些安全性問題,這是不可否認(rèn)的。

最后,其實(shí)我還想說幾句,雖然fastjson是阿里巴巴開源出來的,但是據(jù)我所知,這個(gè)項(xiàng)目大部分時(shí)間都是其作者溫少一個(gè)人在靠業(yè)余時(shí)間維護(hù)的。

知乎上有網(wǎng)友說:"溫少幾乎憑一己之力撐起了一個(gè)被廣泛使用JSON庫,而其他庫幾乎都是靠一整個(gè)團(tuán)隊(duì),就憑這一點(diǎn),溫少作為“初心不改的阿里初代開源人”,當(dāng)之無愧。"

其實(shí),關(guān)于fastjson漏洞的問題,阿里內(nèi)部也有很多人詬病過,但是詬病之后大家更多的是給予理解和包容。

fastjson目前是國產(chǎn)類庫中比較出名的一個(gè),可以說是倍受關(guān)注,所以漸漸成了安全研究的重點(diǎn),所以會(huì)有一些深度的漏洞被發(fā)現(xiàn)。就像溫少自己說的那樣:

"和發(fā)現(xiàn)漏洞相比,更糟糕的是有漏洞不知道被人利用。及時(shí)發(fā)現(xiàn)漏洞并升級(jí)版本修復(fù)是安全能力的一個(gè)體現(xiàn)。"

就在我寫這篇文章的時(shí)候,在釘釘上問了溫少一個(gè)問題,他竟然秒回,這令我很驚訝。因?yàn)槟翘焓侵苣苣┽斸斂梢宰龅矫牖兀@說明了什么?

他大概率是在利用自己的業(yè)余維護(hù)fastjson吧...

最后,知道了fastjson歷史上很多漏洞產(chǎn)生的原因之后,其實(shí)對(duì)我自己來說,我是"更加敢用"fastjson了...

致敬fastjson!致敬安全研究者!致敬溫少!

參考資料:

https://github.com/alibaba/fastjson/releases

https://github.com/alibaba/fastjson/wiki/security_update_20200601

https://paper.seebug.org/1192/

https://mp.weixin.qq.com/s/EXnXCy5NoGIgpFjRGfL3wQ

http://www.lmxspace.com/2019/06/29/FastJson-反序列化學(xué)習(xí)

總結(jié)

到此這篇關(guān)于fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?的文章就介紹到這了,更多相關(guān)fastjson 漏洞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用fastjson中的JSONPath處理json數(shù)據(jù)的方法
  • java JSON解析庫Alibaba Fastjson用法詳解
  • springboot中用fastjson處理返回值為null的屬性值
  • 解決fastjson從1.1.41升級(jí)到1.2.28后報(bào)錯(cuò)問題詳解
  • 使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄
  • SpringBoot整合FastJson過程解析
  • SpringBoot Redis配置Fastjson進(jìn)行序列化和反序列化實(shí)現(xiàn)
  • Spring MVC+FastJson+Swagger集成的完整實(shí)例教程
  • Springmvc基于fastjson實(shí)現(xiàn)導(dǎo)包及配置文件

標(biāo)簽:鎮(zhèn)江 哈密 鶴崗 綿陽 株洲 臺(tái)州 平頂山 商丘

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)》,本文關(guān)鍵詞  fastjson,到底,做,錯(cuò)了,什么,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)》相關(guān)的同類信息!
  • 本頁收集關(guān)于fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    午夜日韩在线观看| 国产一区啦啦啦在线观看| 亚洲六月丁香色婷婷综合久久| 五月天激情综合| 91亚洲国产成人精品一区二区三| 欧美电影免费观看高清完整版在线 | 成熟亚洲日本毛茸茸凸凹| 91麻豆精品国产91久久久久久 | 99久久99久久免费精品蜜臀| 26uuu久久综合| 亚洲女女做受ⅹxx高潮| 国产专区综合网| 日韩毛片一二三区| 精品一区二区免费| 国产欧美日韩在线观看| 91丨国产丨九色丨pron| 五月综合激情日本mⅴ| 久久久蜜臀国产一区二区| 99精品国产91久久久久久| 亚洲激情第一区| 69堂成人精品免费视频| 日韩精品电影在线观看| 中文字幕av在线一区二区三区| 91麻豆精品视频| 精品亚洲国内自在自线福利| 成人免费小视频| 777午夜精品免费视频| 成人激情校园春色| 日韩精品电影在线| 国产色一区二区| 国产91在线看| 2014亚洲片线观看视频免费| 欧美性猛片xxxx免费看久爱| 久久一区二区视频| 欧美日韩中文国产| 99久免费精品视频在线观看 | 美女视频黄频大全不卡视频在线播放| 国产亚洲精久久久久久| 欧美久久久久免费| 成人的网站免费观看| 免费在线成人网| 一区二区三区中文字幕电影 | 亚洲乱码日产精品bd| 精品国产精品网麻豆系列| 色播五月激情综合网| 麻豆精品蜜桃视频网站| 2024国产精品| 一本大道久久a久久综合| 国产真实乱偷精品视频免| 亚洲成人av一区二区三区| 欧美国产一区视频在线观看| 在线观看一区二区精品视频| 一区二区三区在线观看网站| 国产精品伦一区| 26uuu色噜噜精品一区二区| 欧美夫妻性生活| 欧美亚洲国产一区二区三区va| 成人午夜av电影| 精品一二三四区| 美脚の诱脚舐め脚责91| 图片区小说区国产精品视频| 亚洲自拍偷拍网站| 亚洲久草在线视频| 亚洲女爱视频在线| 一片黄亚洲嫩模| 亚洲一区二区不卡免费| 一区二区三区精品视频| 中文在线免费一区三区高中清不卡| 精品av久久707| 久久久久久影视| 国产精品入口麻豆原神| 国产精品久久久爽爽爽麻豆色哟哟| 国产日产亚洲精品系列| 国产欧美日韩在线观看| av综合在线播放| 99视频在线精品| 欧美久久久一区| 日韩欧美综合一区| 久久久久久久网| 亚洲欧洲另类国产综合| 一个色综合网站| 成人免费在线播放视频| 视频一区二区三区入口| 日本vs亚洲vs韩国一区三区 | 日韩av一二三| 久久国产视频网| 7777精品伊人久久久大香线蕉完整版 | 欧美久久久影院| 久久精品国内一区二区三区| 丁香啪啪综合成人亚洲小说 | 欧美人体做爰大胆视频| 秋霞电影一区二区| 天堂久久久久va久久久久| 亚洲欧洲中文日韩久久av乱码| 色偷偷88欧美精品久久久| 久久99国产精品麻豆| 色呦呦国产精品| 午夜精品福利久久久| 一区二区三区四区乱视频| 五月天激情综合| 夜夜嗨av一区二区三区中文字幕 | 欧美在线一区二区三区| 91麻豆精品国产91久久久使用方法 | 精品视频1区2区3区| 精品日韩av一区二区| 一级特黄大欧美久久久| 国产成人综合自拍| 欧美男男青年gay1069videost| 久久综合九色综合欧美就去吻 | 中文一区在线播放| 亚洲制服欧美中文字幕中文字幕| 青娱乐精品在线视频| 91精品办公室少妇高潮对白| 久久久亚洲午夜电影| 亚洲综合免费观看高清完整版在线 | 日韩电影在线看| av在线不卡电影| 日韩欧美aaaaaa| 国产精品久久久久久亚洲伦| 亚洲精品视频在线看| 国产精品原创巨作av| 欧美日韩国产大片| 亚洲精品免费电影| 不卡一区二区在线| 日本丶国产丶欧美色综合| 26uuu久久天堂性欧美| 亚洲日本va在线观看| 国产**成人网毛片九色| 欧美一区二区三区色| 亚洲成av人片一区二区三区| 91视频在线观看免费| 日韩欧美一二区| 日韩成人午夜精品| 欧美另类一区二区三区| 欧美videossexotv100| www.欧美日韩国产在线| 日韩久久久精品| 国产欧美精品一区二区色综合 | 国产成人精品网址| 日韩一本二本av| 日本亚洲最大的色成网站www| 91精品91久久久中77777| 中文无字幕一区二区三区| 国内一区二区在线| 2021中文字幕一区亚洲| 国产成人免费在线观看| 国产午夜精品一区二区| 成人99免费视频| 亚洲裸体xxx| 欧美肥妇毛茸茸| 精品一区二区三区免费观看| 欧美精品一区二区久久婷婷| 精品一区二区精品| 亚洲国产精品ⅴa在线观看| 国产一区999| 欧美韩日一区二区三区四区| 99re这里只有精品首页| 日韩美女视频一区| 色哟哟一区二区| 亚洲欧美另类久久久精品2019 | 麻豆高清免费国产一区| 精品少妇一区二区三区免费观看| 九色综合国产一区二区三区| 5月丁香婷婷综合| 国产一区二区在线影院| 久久久亚洲国产美女国产盗摄| 午夜伊人狠狠久久| 国产99久久久久| 夜夜爽夜夜爽精品视频| 欧美日韩国产欧美日美国产精品| 久久精品国产精品亚洲精品| 日韩美女一区二区三区四区| 久久精品国产亚洲aⅴ| 欧美xxxxxxxxx| 91在线丨porny丨国产| 亚洲18色成人| 欧美日韩美少妇| 精品无人区卡一卡二卡三乱码免费卡| 国产精品区一区二区三区| 欧美主播一区二区三区美女| 国产一区二区在线电影| 欧美视频在线观看一区| 亚洲在线成人精品| 国产欧美久久久精品影院| 欧美影视一区二区三区| 亚洲成人一区在线| 亚洲精品在线一区二区| 99久久精品费精品国产一区二区| 日韩成人一区二区| 亚洲蜜臀av乱码久久精品| 欧美一卡二卡在线| 国产激情91久久精品导航| 石原莉奈在线亚洲三区| 中文字幕日韩精品一区| 日韩一区二区免费在线观看| 国产v日产∨综合v精品视频| 久久精品av麻豆的观看方式| 三级成人在线视频| 亚洲成人一区二区| 亚洲综合免费观看高清完整版在线 |