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

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

安全 漏洞
之前在某廠的某次項目開發中,項目組同學設計和實現了一個“引以為傲”,額,有點擴張,不過自認為還說得過去的 feature,結果臨上線前被啪啪打臉,因為實現過程中因為一行代碼(沒有標題黨,真的是一行代碼)帶來的安全漏洞讓我們丟失了整個服務器控制權。

 之前在某廠的某次項目開發中,項目組同學設計和實現了一個“引以為傲”,額,有點擴張,不過自認為還說得過去的 feature,結果臨上線前被啪啪打臉,因為實現過程中因為一行代碼(沒有標題黨,真的是一行代碼)帶來的安全漏洞讓我們丟失了整個服務器控制權(測試環境)。多虧了上線之前有公司安全團隊的人會對代碼進行掃描,才讓這個漏洞被扼殺在搖籃里。

下面我們就一起來看看這個事故,啊,不對,是故事。

[[329963]]

背景說明

我們的項目是一個面向全球用戶的 Web 項目,用 SpringBoot 開發。在項目開發過程中,離不開各種異常信息的處理,比如表單提交參數不符合預期,業務邏輯的處理時離不開各種異常信息(例如網絡抖動等)的處理。于是利用 SpringBoot 各種現成的組件支持,設計了一個統一的異常信息處理組件,統一管理各種業務流程中可能出現的錯誤碼和錯誤信息,通過國際化的資源配置文件進行統一輸出給用戶。

統一錯誤信息配置管理

我們的用戶遍布全球,為了給各個國家用戶比較好的體驗會進行不同的翻譯。具體而言,實現的效果如下,為了方便理解,以“找回登錄密碼”這樣一個業務場景來進行闡述說明。

假設找回密碼時,需要用戶輸入手機或者郵箱驗證碼,假設這個時候用戶輸入的驗證碼通過后臺數據庫(可能是Redis)對比發現已經過期。在業務代碼中,只需要簡單的 throw new ErrorCodeException(
ErrorCodes.AUTHCODE_EXPIRED) 即可。具體而言,針對不同國家地區不同的語言看到的效果不一樣:

  • 中文用戶看到的提示就是“您輸入的驗證碼已過期,請重新獲取”;
  • 歐美用戶看到的效果是“The verification code you input is expired, ...”;
  • 德國用戶看到的是:“Der von Ihnen eingegebene Verifizierungscode ist abgelaufen, bitte wiederholen” 。(我瞎找的翻譯,不一定準)
  • ……

統一錯誤信息配置管理代碼實現

關鍵信息其實就在于一個 GlobalExceptionHandler,對所有Controller 入口進行 AOP 攔截,根據不同的錯誤信息,獲取相應資源文件配置的 key,并從語言資源文件中讀取不同國家的錯誤翻譯信息。

  1. @ControllerAdvice  
  2. public class GlobalExceptionHandler {  
  3.  
  4. @ExceptionHandler(BadRequestException.class)  
  5. @ResponseBody  
  6. public ResponseEntity handle(HttpServletRequest request, BadRequestException e){  
  7. String i18message = getI18nMessage(e.getKey(), request);  
  8. return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(Response.error(e.getCode(), i18message));  
  9. }  
  10.  
  11. @ExceptionHandler(ErrorCodeException.class)  
  12. @ResponseBody  
  13. public ResponseEntity handle(HttpServletRequest request, ErrorCodeException e){  
  14. String i18message = getI18nMessage(e.getKey(), request);  
  15. return ResponseEntity.status(HttpStatus.OK).body(Response.error(e.getCode(), i18message));  
  16. }  
  17. }  
一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

不同語言的資源文件示例

  1. private String getI18nMessage(String key, HttpServletRequest request) {  
  2. try {  
  3. return messageSource.getMessage(key, null, LanguaggeUtils.currentLocale(request));  
  4. catch (Exception e) {  
  5. // log  
  6. return key;  
  7. }  
  8. }  

基于注解的表單校驗(含自定義注解)

還有一種常見的業務場景就是后端接口需要對用戶提交的表單進行校驗。以“注冊用戶”這樣的場景舉例說明, 注冊用戶時,往往會提交昵稱,性別,郵箱等信息進行注冊,簡單起見,就以這 3 個屬性為例。

定義的表單如下:

  1. public class UserRegForm {  
  2. private String nickname;  
  3. private String gender;  
  4. private String email;  
  5. }  

對于表單的約束,我們有:

  • 昵稱字段:“nickname” 必填,長度必須是 6 到 20 位;
  • 性別字段:“gender” 可選,如果填了,就必須是“Male/Female/Other/”中的一種。說啥,除了男女還有其他?對,是的。畢竟全球用戶嘛,你去看看非死不可,還有更多。
  • 郵箱: “email”,必填,必須滿足郵箱格式。

對于以上約束,我們只需要在對應的字段上添加如下注解即可。

  1. public class UserRegForm {  
  2. @Length(min = 6, max = 20, message = "validate.userRegForm.nickname")  
  3. private String nickname;  
  4.  
  5. @Gender(message="validate.userRegForm.gender")  
  6. private String gender;  
  7.  
  8. @NotNull  
  9. @Email(message="validate.userRegForm.email")  
  10. private String email;  
  11. }  

然后在各個語言資源文件中配置好相應的錯誤信息提示即可。其中, @Gender 就是一個自定義的注解。

基于含自定義注解的表單校驗關鍵代碼

自定義注解的實現主要的其實就是一個自定義注解的定義以及一個校驗邏輯。 例如定義一個自定義注解 CustomParam:

  1. @Documented  
  2. @Constraint(validatedBy = CustomValidator.class)  
  3. @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})  
  4. @Retention(RetentionPolicy.RUNTIME)  
  5. public @interface CustomParam {  
  6. String message() default "name.tanglei.www.validator.CustomArray.defaultMessage";  
  7.  
  8. Class<?>[] groups() default {};  
  9. Class<? extends Payload>[] payload() default { };  
  10.  
  11. @Documented  
  12. @Retention(RetentionPolicy.RUNTIME)  
  13. @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})  
  14. @interface List {  
  15. CustomParam[] value();  
  16. }  
  17. }  

校驗邏輯的實現 CustomValidator:

  1. public class CustomValidator implements ConstraintValidator<CustomParam, String> {  
  2. @Override  
  3. public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {  
  4. if (null == s || s.isEmpty()) {  
  5. return true;  
  6. }  
  7. if (s.equals("tanglei")) {  
  8. return true;  
  9. else {  
  10. error(constraintValidatorContext, "Invalid params: " + s);  
  11. return false;  
  12. }  
  13. }  
  14.  
  15. @Override  
  16. public void initialize(CustomParam constraintAnnotation) {  
  17. }  
  18.  
  19. private static void error(ConstraintValidatorContext context, String message) {  
  20. context.disableDefaultConstraintViolation();  
  21. context.buildConstraintViolationWithTemplate(message).addConstraintViolation();  
  22. }  
  23. }  

上面例子只為了闡述說明問題,其中校驗邏輯沒有實際意義,這樣,如果輸入參數不滿足條件,就會明確提示用戶輸入的哪個參數不滿足條件。例如輸入參數 xx,則會直接提示:Invalid params: xx。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

這個跟第一部分的處理方式類似,因為現有的 validator 組件實現中,如果違反相應的約束也是一種拋異常的方式實現的,因此只需要在上述的 GlobalExceptionHandler中添加相應的異常信息即可,這里就不詳述了。 這不是本文的重點,這里就不詳細闡述了。

場景重現

一切都顯得很完美,直到上線前代碼提交至安全團隊掃描,就被“啪啪打臉”,掃描報告反饋了一個嚴重的安全漏洞。而這個安全漏洞,屬于很高危的遠程代碼執行漏洞。

[[329964]]

用前文提到的自定義 Validator,輸入的參數用: “1+1=${1+1}”,看看效果:

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

太 TM 神奇了,居然幫我運算出來了,返回 "message": "Invalid params: 1+1=2"。

問題就出現在實現自定義注解進行校驗的這行代碼(如下圖所示):

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

其實,最開始的時候,這里直接返回了“Invalid params”,當初為了更好的用戶體驗,要明確告訴用戶哪個參數沒有通過校驗,因此在輸出的提示上加上了用戶輸入的字段,也就是上面的"Invalid params: " + s,沒想到,這闖了大禍了(回過頭來想,感覺這里沒必要這么詳細啊,因為前端已經有相應的校驗了,正常情況下回攔住,針對不守規矩的用非常規手段來的接口請求,直接返回校驗不通過就行了,畢竟不是對外提供的 OpenAPI 服務)。

仔細看,這個方法實際上是 
ConstraintValidatorContext這個接口中聲明的,看方法名字其實能知道輸入參數是一個字符串模板,內部會進行解析替換的(這其實也符合“見名知意”的良好編程習慣)。(教訓:大家應該把握好自己寫的每一行代碼背后實際在做什么。)

  1. /* ......  
  2. * @param messageTemplate new un-interpolated constraint message  
  3. * @return returns a constraint violation builder  
  4. */  
  5. ConstraintViolationBuilder buildConstraintViolationWithTemplate(String messageTemplate);  

這個 case,源碼調試進去之后,就能跟蹤到執行翻譯階段,在如下方法中: 
org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator.interpolateMessage。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

再往后,就是表達式求值了。 [圖片上傳失敗...(image-9239c-1591863495667)]

以為就這樣就完了嗎?

[[329965]]

剛開始感覺,能幫忙算簡單的運算規則也就完了吧,你還能把我怎么樣?其實這個相當于暴露了一個入口,支持用戶輸入任意 EL 表達式進行執行。網上通過關鍵字 “SpEL表達式注入漏洞” 找找,就能發現事情并沒有想象中那么簡單。

我們構造恰當的 EL 表達式(注意各種轉義,下文的輸入參數相對比較明顯在做什么了,實際上還有更多黑科技,比如各種二進制轉義編碼啊等等),就能直接執行輸入代碼,例如:可以直接執行命令,“ls -al”, 返回了一個 UNIXProcess 實例,命令已經被執行過了。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

比如,我們執行個打開計算器的命令,搞個計算器玩玩~

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

我錄制了一個動圖,來個演示可能更生動一些。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

這還得了嗎?這相當于提供了一個 webshell 的功能呀,你看想運行啥命令就能運行啥命令,例如 ping 本人博客地址(ping www.tanglei.name),下面動圖演示一下整個過程(從運行 ping 到 kill ping)。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

豈不是直接創建一個用戶,然后遠程登錄就可以了。后果很嚴重啊,別人想干嘛就干嘛了。

[[329966]]

我們跟蹤下對應的代碼,看看內部實現,就會“恍然大悟”了。

一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權
一行代碼引來的安全漏洞,就讓我們丟失了整個服務器的控制權

經驗教訓

幸虧這個漏洞被扼殺在搖籃里,否則后果還真的挺嚴重的。通過這個案例,我們有啥經驗和教訓呢?那就是作為程序員,我們要對每一行代碼都保持“敬畏”之心。也許就是因為你的不經意的一行代碼就帶來了嚴重的安全漏洞,要是不小心被壞人利用,輕則……重則……(自己想象吧)

此外,我們也應該看到,程序員需要對常見的安全漏洞(例如XSS/CSRF/SQL注入等等)有所了解,并且要有足夠的安全意識(其實有時候研究一些安全問題還挺好玩的)。例如:

  • 用戶權限分離:運行程序的用戶不應該用 root,例如新建一個“web”或者“www”之類的用戶,并設置該用戶的權限,比如不能有可執行 xx 的權限之類的。本文 case,如果權限進行了分離(遵循最小權限原則),應該也不會這么嚴重。(本文就剛好是因為是測試環境,所以沒有強制實施)
  • 任何時候都不要相信用戶的輸入,必須對用戶輸入的進行校驗和過濾,又特別是針對公網上的應用。
  • 敏感信息加密保存。退一萬步講,假設攻擊者攻入了你的服務器,如果這個時候,你的數據庫賬戶信息等配置都直接明文保存在服務器中。那數據庫也被拖走了。

如果可能的話,需要對開發者的代碼進行漏洞掃描。一些常見的安全漏洞現在應該是有現成的工具支持的。另外,讓專業的人做專業的事情,例如要有安全團隊,可能你會說你們公司沒有不也活的好好的,哈哈,只不過可能還沒有被壞人盯上而已,壞人也會考慮到他們的成本和預期收益的,當然這就更加對我們開發者提高了要求。一些敏感權限盡量控制在少部分人手中,配合相應的流程來支撐(不得不說,大公司繁瑣的流程還是有一定道理的)。

畢竟我不是專業研究Web安全的,以上說的可能也不一定對,如果你有不同意見或者更好的建議歡迎留言參與討論。

 

責任編輯:張燕妮 來源: 博客園
相關推薦

2020-06-24 13:08:14

網絡安全網絡安全技術周刊

2019-08-26 10:19:39

2015-04-09 09:24:27

IT管理云計算管理

2009-01-08 19:06:00

服務器安全Web服務器

2013-04-24 09:43:30

2010-03-09 14:54:49

2021-06-02 07:43:42

服務器阿里云配置

2021-11-11 15:21:43

云計算安全技術

2010-03-17 15:54:42

Java線程控制權

2022-01-16 20:37:44

亞馬遜云科技AWS Glue

2015-02-06 09:20:33

2009-10-10 17:40:34

2010-01-20 10:38:54

2025-05-16 11:44:43

CSS模式樣式

2024-11-29 10:58:54

CSS代碼黑模式

2022-12-13 07:40:33

LinuxWeb服務器

2012-07-31 13:47:49

2013-01-30 09:16:39

云標準云服務

2016-11-10 07:43:24

安卓谷歌科技新聞早報

2017-04-05 11:10:23

Javascript代碼前端
點贊
收藏

51CTO技術棧公眾號

亚洲区在线播放| 亚洲欧美日韩久久精品| 国产精品xxxxx| 911国产在线| 91蝌蚪精品视频| 91久久精品国产91性色tv| 久久国产精品免费观看| 午夜视频免费看| 国产做a爰片久久毛片| 国内精品久久久久久影视8| 色综合99久久久无码国产精品| 亚洲天堂网站| 日韩欧美国产骚| 成人在线观看www| 可以直接在线观看的av| 国产乱码精品1区2区3区| 欧美中文字幕第一页| 欧美做爰爽爽爽爽爽爽| 精品一区毛片| 亚洲高清不卡av| 在线免费观看av网| 刘亦菲一区二区三区免费看| 一区二区理论电影在线观看| 日韩欧美在线电影| 日本精品久久久久| 精品一区二区日韩| 国产精品露脸自拍| 亚洲 欧美 视频| 欧美视频官网| 久久久国产精品免费| 国产美女免费无遮挡| 国产一级成人av| 精品视频全国免费看| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美日韩视频在线播放| 欧美国产丝袜视频| 国产欧美一区二区三区另类精品| 高清一区二区三区四区五区| 国产91在线视频观看| 污污视频在线| 亚洲日本一区二区| 亚洲午夜精品一区二区三区| 国产最新视频在线观看| 91污在线观看| 精品日本一区二区三区| 色婷婷av一区二区三| 国产91高潮流白浆在线麻豆 | 亚洲精品视频免费在线观看| 国产51自产区| 综合激情网...| 日韩久久久久久| 一区二区三区人妻| 国产电影一区二区| 91精品国产综合久久久久久| 在线观看岛国av| 免费成人在线电影| 精品美女国产在线| av天堂永久资源网| 高潮一区二区| 在线观看免费亚洲| 亚洲 欧美 另类人妖| 欧美成人毛片| 在线综合+亚洲+欧美中文字幕| 五月天激情播播| 一区二区三区| 日韩欧美国产不卡| 2018国产精品| 香蕉久久夜色精品国产更新时间| 亚洲另类欧美自拍| 日本少妇xxxxx| 日韩欧美综合| 欧美黄色片视频| 成年人免费看毛片| 裸体一区二区| 国产在线精品播放| 精品国产九九九| 丁香婷婷深情五月亚洲| 久久草视频在线看| 黄色小视频在线免费观看| av高清一区二区| 中文亚洲字幕| 国产精品自产拍高潮在线观看| 国产免费久久久| www.激情成人| 日韩国产精品一区二区三区| 美女隐私在线观看| 亚洲一区二区三区视频在线 | 国产一区二区毛片| 99精品在线直播| 日本一二三区在线视频| 国产精品色婷婷| 成人午夜免费在线视频| 裤袜国产欧美精品一区| 91精品国产高清一区二区三区 | 精品国产视频| 欧美日本在线视频中文字字幕| 圆产精品久久久久久久久久久| 玖玖在线精品| 国产v亚洲v天堂无码| 成人不用播放器| 亚洲国产日韩av| 手机视频在线观看| 国产aⅴ爽av久久久久成人| 日韩免费在线电影| 亚洲精品在线观| 国产一二三av| 国产一区二区三区久久| 成人免费自拍视频| 五月婷婷六月丁香| 亚洲久本草在线中文字幕| 国产美女无遮挡网站| 成人在线视频国产| 亚洲人a成www在线影院| 久久久久99精品成人片毛片| 琪琪一区二区三区| 九九九久久久| 羞羞的网站在线观看| 欧美性猛交xxxx乱大交退制版| 欧美丰满熟妇bbb久久久| 久久高清精品| 国产精品va在线播放| 国精产品乱码一区一区三区四区| 亚洲欧洲日本在线| 欧美色图12p| 国产原创剧情av| 久久久9色精品国产一区二区三区| 欧洲美女7788成人免费视频| 日韩一级中文字幕| 亚洲激情五月婷婷| 免费精品99久久国产综合精品应用| 亚洲欧洲美洲国产香蕉| 性欧美在线看片a免费观看 | 免费在线成人网| 国产一区二区三区色淫影院| 中文字幕中文字幕在线十八区 | 日日干日日操日日射| 精品国产视频| 青草成人免费视频| 天天av天天翘| 午夜影院久久久| 中文字幕人妻一区| 在线精品观看| 国产精品视频入口| 成人免费高清观看| 精品成人佐山爱一区二区| 欧美黑吊大战白妞| 国产精品自在欧美一区| 青青草免费在线视频观看| 91成人小视频| 精品国产一区二区三区久久久狼| 怡春院在线视频| 欧美韩国日本综合| 激情 小说 亚洲 图片: 伦| 欧美日中文字幕| 国产裸体写真av一区二区| 97最新国自产拍视频在线完整在线看| 欧洲一区在线电影| 中文字幕第二区| 狠狠色狠狠色综合系列| 红桃一区二区三区| 999国产精品一区| 91精品国产91久久久久久| 香蕉视频网站在线| 色噜噜夜夜夜综合网| 精品人妻中文无码av在线| 奇米精品一区二区三区在线观看 | 日本在线视频中文有码| 精品国产3级a| √资源天堂中文在线| 久久精品一区二区三区不卡| 黄色一级片免费的| 国产精品v亚洲精品v日韩精品| 国产精品一区二区三区免费| 午夜不卡影院| 在线亚洲午夜片av大片| 国产伦一区二区| 亚洲国产精品天堂| 免费黄色在线视频| 日本不卡高清视频| 91精品国产吴梦梦| 欧美激情网址| 国产精品美乳在线观看| 国产美女av在线| 日韩av一卡二卡| a片在线免费观看| 亚洲综合丁香婷婷六月香| 中文字幕av网址| 国产麻豆9l精品三级站| 日韩在线综合网| 欧美www视频在线观看| 国产嫩草一区二区三区在线观看| 蜜桃麻豆影像在线观看| 视频一区视频二区国产精品| 亚洲第一页在线观看| 欧美亚洲综合另类| 久久久精品91| 日本一二三四高清不卡| 污片免费在线观看| 美女国产一区二区| 激情伊人五月天| 国产精品精品| 日本不卡一二三区| 国产91精品入| 成人网在线观看| 在线最新版中文在线| 久热精品视频在线观看一区| 韩日视频在线| 亚洲国产天堂网精品网站| 国产精品国产三级国产普通话对白| 午夜电影网一区| 伊人久久久久久久久久久久久久| 91在线观看下载| 久久久久无码精品| 日本vs亚洲vs韩国一区三区| 男人插女人视频在线观看| 日韩精品永久网址| 精品亚洲欧美日韩| 亚洲精品国产九九九| 成人av番号网| 成人在线高清| 欧洲午夜精品久久久| 99thz桃花论族在线播放| 欧美插天视频在线播放| 亚洲图片88| 亚洲最新视频在线| 人妻精品一区一区三区蜜桃91| 91精品国产一区二区人妖| 日本黄色中文字幕| 激情懂色av一区av二区av| 免费在线观看h片| 国产精品久久久久永久免费观看| 国产精品无码一区二区三区| www.久久久久久久久| 美女黄色一级视频| 岛国精品在线观看| 伦伦影院午夜理论片| 国产在线精品免费| 不用播放器的免费av| 蜜臀av亚洲一区中文字幕| 成人亚洲视频在线观看| 久久久蜜桃一区二区人| 国产又大又硬又粗| 亚洲一区二区毛片| 久久网站免费视频| 香蕉精品999视频一区二区| www一区二区www免费| 性一交一乱一区二区洋洋av| 男人天堂网视频| 亚洲综合不卡| 国模杨依粉嫩蝴蝶150p| 免费在线观看成人| 亚洲精品第三页| 九一久久久久久| 久久综合在线观看| 国产不卡视频在线播放| 日本50路肥熟bbw| 91看片淫黄大片一级在线观看| 亚洲天堂资源在线| 久久九九影视网| 国产中年熟女高潮大集合| 欧美国产精品一区二区三区| 日本成人免费在线观看 | 日韩欧美激情| 96成人在线视频| 国产精品xxxav免费视频| 精品国产一区二区三| 国产免费av一区二区三区| 色姑娘综合av| 影视一区二区| 国产精品无码av在线播放| 新狼窝色av性久久久久久| 777视频在线| 国产成人免费视频网站高清观看视频 | 男男gaygays亚洲| 97国产精品免费视频| 日韩pacopacomama| 国产日韩亚洲欧美| 国产乱论精品| 亚洲精品国产一区| 欧美精品日韩| 日韩亚洲在线视频| 国产一区二区三区精品视频| 国产精品手机在线观看| 国产亚洲成av人在线观看导航| 黑人操日本美女| 亚洲成人1区2区| 一个人看的www日本高清视频| 日韩美女视频在线| 国产在线电影| 色综合久久久888| 黑人巨大精品| 丁香婷婷久久久综合精品国产| 国产成人1区| 国产制服91一区二区三区制服| 性色一区二区三区| 潘金莲一级淫片aaaaaaa| 久久久91精品国产一区二区三区| 成年人av电影| 色婷婷综合中文久久一本| 国产成人精品白浆久久69| 亚洲免费视频网站| 日本大胆在线观看| 国产精品免费在线免费| 久久黄色影视| 国产手机视频在线观看| 水蜜桃久久夜色精品一区的特点 | 久久精品人人做人人综合| 成人观看免费视频| 在线中文字幕一区| 神马一区二区三区| 米奇精品一区二区三区在线观看| 日韩电影大全网站| 国产乱码精品一区二区三区日韩精品 | 天天躁日日躁狠狠躁欧美| 男同互操gay射视频在线看| 久久精品女人| 精品无码国产一区二区三区51安| 亚洲男女毛片无遮挡| 最近中文字幕在线观看视频| 日韩av在线免播放器| 日韩精品卡一| 91黄色精品| 欧美国产一区二区三区激情无套| 国产aaa一级片| av一二三不卡影片| 国产一级av毛片| 日韩视频中午一区| 亚洲天天影视| 国产精品一区二区三区成人| 国产欧美日韩在线一区二区| 91视频最新入口| 9人人澡人人爽人人精品| 久久久久亚洲av成人片| 欧美一区二区成人| a级毛片免费观看在线| 91九色国产视频| 99视频精品全部免费在线视频| 538在线视频观看| 国产三级久久久| jizz国产在线观看| 亚洲另类xxxx| 日本精品另类| 视频一区二区精品| 欧美a级一区二区| 亚洲a∨无码无在线观看| 欧美日韩精品高清| 黄色网页在线看| 3d动漫精品啪啪一区二区三区免费| 人人狠狠综合久久亚洲婷| 网站一区二区三区| 中文字幕亚洲成人| 一本色道久久综合精品婷婷| 北条麻妃久久精品| 99视频这里有精品| 天天想你在线观看完整版电影免费| 国产九色精品成人porny| 九九热精彩视频| 亚洲成人av片| jizz内谢中国亚洲jizz| 日韩欧美精品在线不卡| 免费成人你懂的| 天天天天天天天天操| 精品人在线二区三区| 国产精选在线| 日产精品久久久一区二区| 捆绑调教一区二区三区| 伊人久久大香线蕉综合热线| 日本午夜精品电影| 日本亚洲一区二区| 美国黄色片视频| 日韩欧美成人一区| 91黄页在线观看| 日韩国产欧美一区| 韩国v欧美v日本v亚洲v| 精品视频久久久久| 国产视频亚洲精品| 精品美女一区| 国产制服91一区二区三区制服| 99久久久久久99| 伊人久久一区二区| 久久久久久久久中文字幕| 国产精品密蕾丝视频下载| 日韩av片免费观看| 亚洲v精品v日韩v欧美v专区| 国产对白叫床清晰在线播放| 91在线视频免费| 亚洲免费影院| www.5588.com毛片| 亚洲精品国精品久久99热| 国产精品4hu.www| 97在线国产视频| 国产精品三级电影| 乱精品一区字幕二区| 国产精品久久久久久久天堂| 激情91久久| 又色又爽的视频| 亚洲国产天堂网精品网站| 亚洲成a人片777777久久| 国产日韩一区二区在线| 亚洲欧美另类在线|