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

談一談如何在Python開發(fā)中拒絕SSRF漏洞

安全 漏洞
特別是這兩年,大量利用SSRF攻擊內(nèi)網(wǎng)服務(wù)的案例被爆出來,導(dǎo)致SSRF漏洞慢慢受到重視。這就給Web應(yīng)用開發(fā)者提出了一個(gè)難題:如何在保證業(yè)務(wù)正常的情況下防御SSRF漏洞?

一 、SSRF漏洞常見防御手法及繞過方法

SSRF是一種常見的Web漏洞,通常存在于需要請(qǐng)求外部內(nèi)容的邏輯中,比如本地化網(wǎng)絡(luò)圖片、XML解析時(shí)的外部實(shí)體注入、軟件的離線下載等。當(dāng)攻擊者傳入一個(gè)未經(jīng)驗(yàn)證的URL,后端代碼直接請(qǐng)求這個(gè)URL,將會(huì)造成SSRF漏洞。

具體危害體現(xiàn)在以下幾點(diǎn)上:

URL為內(nèi)網(wǎng)IP或域名,攻擊者將可以通過SSRF漏洞掃描目標(biāo)內(nèi)網(wǎng),查找內(nèi)網(wǎng)內(nèi)的漏洞,并想辦法反彈權(quán)限

URL中包含端口,攻擊者將可以掃描并發(fā)現(xiàn)內(nèi)網(wǎng)中機(jī)器的其他服務(wù),再進(jìn)一步進(jìn)行利用

當(dāng)請(qǐng)求方法允許其他協(xié)議的時(shí)候,將可能利用gopher、file等協(xié)議進(jìn)行第三方服務(wù)利用,如利用內(nèi)網(wǎng)的redis獲取權(quán)限、利用fastcgi進(jìn)行g(shù)etshell等

特別是這兩年,大量利用SSRF攻擊內(nèi)網(wǎng)服務(wù)的案例被爆出來,導(dǎo)致SSRF漏洞慢慢受到重視。這就給Web應(yīng)用開發(fā)者提出了一個(gè)難題:如何在保證業(yè)務(wù)正常的情況下防御SSRF漏洞?

很多開發(fā)者認(rèn)為,只要檢查一下請(qǐng)求url的host不為內(nèi)網(wǎng)IP,即可防御SSRF。這個(gè)觀點(diǎn)其實(shí)提出了兩個(gè)技術(shù)要點(diǎn):

1.如何檢查IP是否為內(nèi)網(wǎng)IP

2.如何獲取真正請(qǐng)求的host

于是,攻擊者通過這兩個(gè)技術(shù)要點(diǎn),針對(duì)性地想出了很多繞過方法。

二、 如何檢查IP是否為內(nèi)網(wǎng)IP

這實(shí)際上是很多開發(fā)者面臨的第一個(gè)問題,很多新手甚至連內(nèi)網(wǎng)IP常用的段是多少也不清楚。

何謂內(nèi)網(wǎng)IP,實(shí)際上并沒有一個(gè)硬性的規(guī)定,多少到多少段必須設(shè)置為內(nèi)網(wǎng)。有的管理員可能會(huì)將內(nèi)網(wǎng)的IP設(shè)置為233.233.233.0/24段,當(dāng)然這是一個(gè)比較極端的例子。

通常我們會(huì)將以下三個(gè)段設(shè)置為內(nèi)網(wǎng)IP段,所有內(nèi)網(wǎng)內(nèi)的機(jī)器分配到的IP是在這些段中:

  1. 192.168.0.0/16 => 192.168.0.0 ~ 192.168.255.255 
  2. 10.0.0.0/8 => 10.0.0.0 ~ 10.255.255.255 
  3. 172.16.0.0/12 => 172.16.0.0 ~ 172.31.255.255 

所以通常,我們只需要判斷目標(biāo)IP不在這三個(gè)段,另外還包括一個(gè) 127.0.0.0/8 段即可。

很多人會(huì)忘記 127.0.0.0/8 ,認(rèn)為本地地址就是 127.0.0.1 ,實(shí)際上本地回環(huán)包括了整個(gè)127段。你可以訪問http://127.233.233.233/,會(huì)發(fā)現(xiàn)和請(qǐng)求127.0.0.1是一個(gè)結(jié)果:

所以我們需要防御的實(shí)際上是4個(gè)段,只要IP不落在這4個(gè)段中,就認(rèn)為是“安全”的。

網(wǎng)上一些開發(fā)者會(huì)選擇使用“正則”的方式判斷目標(biāo)IP是否在這四個(gè)段中,這種判斷方法通常是會(huì)遺漏或誤判的,比如如下代碼:

這是Sec-News最老版本判斷內(nèi)網(wǎng)IP的方法,里面使用正則判斷IP是否在內(nèi)網(wǎng)的幾個(gè)段中。這個(gè)正則也是我當(dāng)時(shí)臨時(shí)在網(wǎng)上搜的,很明顯這里存在多個(gè)繞過的問題:

1. 利用八進(jìn)制IP地址繞過

2. 利用十六進(jìn)制IP地址繞過

3. 利用十進(jìn)制的IP地址繞過

4. 利用IP地址的省略寫法繞過

這四種方式我們可以依次試試:

四種寫法(5個(gè)例子):012.0.0.1 、 0xa.0.0.1 、 167772161 、 10.1 、 0xA000001 實(shí)際上都請(qǐng)求的是10.0.0.1,但他們一個(gè)都匹配不上上述正則表達(dá)式。

更聰明一點(diǎn)的人是不會(huì)用正則表達(dá)式來檢測(cè)IP的(也許這類人并不知道內(nèi)網(wǎng)IP的正則該怎么寫)。Wordpress的做法是,先將IP地址規(guī)范化,然后用“.”將其分割成數(shù)組parts,然后根據(jù)parts[0]和parts[1]的取值來判斷:

其實(shí)也略顯麻煩,而且曾經(jīng)也出現(xiàn)過用進(jìn)制方法繞過的案例( WordPress <4.5 SSRF 分析 ),不推薦使用。

我后來選擇了一種更為簡單的方法。眾所周知,IP地址是可以轉(zhuǎn)換成一個(gè)整數(shù)的,在PHP中調(diào)用ip2long函數(shù)即可轉(zhuǎn)換,在Python使用inet_aton去轉(zhuǎn)換。

而且IP地址是和2^32內(nèi)的整數(shù)一一對(duì)應(yīng)的,也就是說0.0.0.0 == 0,255.255.255.255 == 2^32 - 1。所以,我們判斷一個(gè)IP是否在某個(gè)IP段內(nèi),只需將IP段的起始值、目標(biāo)IP值全部轉(zhuǎn)換為整數(shù),然后比較大小即可。

于是,我們可以將之前的正則匹配的方法修改為如下方法:

這就是一個(gè)最簡單的方法,也最容易理解。

假如你懂一點(diǎn)掩碼的知識(shí),你應(yīng)該知道IP地址的掩碼實(shí)際上就是(32 - IP地址所代表的數(shù)字的末尾bit數(shù))。所以,我們只需要保證目標(biāo)IP和內(nèi)網(wǎng)邊界IP的前“掩碼”位bit相等即可。借助位運(yùn)算,將以上判斷修改地更加簡單:

  1. from socket import inet_aton 
  2. from struct import unpack 
  3.   
  4. def ip2long(ip_addr): 
  5.     return unpack("!L", inet_aton(ip_addr))[0] 
  6.       
  7. def is_inner_ipaddress(ip): 
  8.     ip = ip2long(ip)     
  9.     return ip2long('127.0.0.0') >> 24 == ip >> 24 or \ 
  10.            ip2long('10.0.0.0') >> 24 == ip >> 24 or \         
  11.            ip2long('172.16.0.0') >> 20 == ip >> 20 or \        
  12.            ip2long('192.168.0.0') >> 16 == ip >> 16 

以上代碼也就是Python中判斷一個(gè)IP是否是內(nèi)網(wǎng)IP的最終方法,使用時(shí)調(diào)用is_inner_ipaddress(...)即可(注意自己編寫捕捉異常的代碼)。

三、 host獲取與繞過

如何獲取"真正請(qǐng)求"的Host,這里需要考慮三個(gè)問題:

1. 如何正確的獲取用戶輸入的URL的Host?

2. 只要Host只要不是內(nèi)網(wǎng)IP即可嗎?

3. 只要Host指向的IP不是內(nèi)網(wǎng)IP即可嗎?

如何正確的獲取用戶輸入的URL的Host?

第一個(gè)問題,看起來很簡單,但實(shí)際上有很多網(wǎng)站在獲取Host上犯過一些錯(cuò)誤。最常見的就是,使用http://233.233.233.233@10.0.0.1:8080/、http://10.0.0.1#233.233.233.233這樣的URL,讓后端認(rèn)為其Host是233.233.233.233,實(shí)際上請(qǐng)求的卻是10.0.0.1。這種方法利用的是程序員對(duì)URL解析的錯(cuò)誤,有很多程序員甚至?xí)谜齽t去解析URL。

在Python 3下,正確獲取一個(gè)URL的Host的方法:

  1. from urllib.parse import urlparse 
  2.   
  3. url = 'https://10.0.0.1/index.php' 
  4. urlparse(url).hostname 

這一步一定不能犯錯(cuò),否則后面的工作就白做了。

只要Host只要不是內(nèi)網(wǎng)IP即可嗎?

第二個(gè)問題,只要檢查一下我們獲取到的Host是否是內(nèi)網(wǎng)IP,即可防御SSRF漏洞么?

答案是否定的,原因是,Host可能是IP形式,也可能是域名形式。如果Host是域名形式,我們是沒法直接比對(duì)的。只要其解析到內(nèi)網(wǎng)IP上,就可以繞過我們的is_inner_ipaddress了。

網(wǎng)上有個(gè)服務(wù) http://xip.io ,這是一個(gè)“神奇”的域名,它會(huì)自動(dòng)將包含某個(gè)IP地址的子域名解析到該IP。比如 127.0.0.1.xip.io ,將會(huì)自動(dòng)解析到127.0.0.1,www.10.0.0.1.xip.io將會(huì)解析到10.0.0.1:

這個(gè)域名極大的方便了我們進(jìn)行SSRF漏洞的測(cè)試,當(dāng)我們請(qǐng)求http://127.0.0.1.xip.io/info.php的時(shí)候,表面上請(qǐng)求的Host是127.0.0.1.xip.io,此時(shí)執(zhí)行is_inner_ipaddress('127.0.0.1.xip.io')是不會(huì)返回True的。但實(shí)際上請(qǐng)求的卻是127.0.0.1,這是一個(gè)標(biāo)準(zhǔn)的內(nèi)網(wǎng)IP。

所以,在檢查Host的時(shí)候,我們需要將Host解析為具體IP,再進(jìn)行判斷,代碼如下:

  1. import socket 
  2.  import re 
  3.  from urllib.parse import urlparse 
  4.  from socket import inet_aton 
  5.  from struct import unpack 
  6.    
  7.  def check_ssrf(url): 
  8.      hostname = urlparse(url).hostname 
  9.        
  10.      def ip2long(ip_addr):     
  11.          return unpack("!L", inet_aton(ip_addr))[0]     
  12.            
  13.      def is_inner_ipaddress(ip): 
  14.          ip = ip2long(ip)     
  15.          return ip2long('127.0.0.0') >> 24 == ip >> 24 or \       
  16.                 ip2long('10.0.0.0') >> 24 == ip >> 24 or \         
  17.                 ip2long('172.16.0.0') >> 20 == ip >> 20 or \    
  18.                 ip2long('192.168.0.0') >> 16 == ip >> 16 
  19.                   
  20.       try: 
  21.           if not re.match(r"^https?://.*/.*$", url):      
  22.                  raise BaseException("url format error")  
  23.           ip_address = socket.getaddrinfo(hostname, 'http')[0][4][0] 
  24.           if is_inner_ipaddress(ip_address):        
  25.                raise BaseException("inner ip address attack")    
  26.           return True, "success" 
  27.        except BaseException as e:    
  28.           return False, str(e)     
  29.        except:     
  30.           return False, "unknow error" 

首先判斷url是否是一個(gè)HTTP協(xié)議的URL(如果不檢查,攻擊者可能會(huì)利用file、gopher等協(xié)議進(jìn)行攻擊),然后獲取url的host,并解析該host,最終將解析完成的IP放入is_inner_ipaddress函數(shù)中檢查是否是內(nèi)網(wǎng)IP。

只要Host指向的IP不是內(nèi)網(wǎng)IP即可嗎?

第三個(gè)問題,是不是做了以上工作,解析并判斷了Host指向的IP不是內(nèi)網(wǎng)IP,即防御了SSRF漏洞?

答案繼續(xù)是否定的,上述函數(shù)并不能正確防御SSRF漏洞。為什么?

當(dāng)我們請(qǐng)求的目標(biāo)返回30X狀態(tài)的時(shí)候,如果沒有禁止跳轉(zhuǎn)的設(shè)置,大部分HTTP庫會(huì)自動(dòng)跟進(jìn)跳轉(zhuǎn)。此時(shí)如果跳轉(zhuǎn)的地址是內(nèi)網(wǎng)地址,將會(huì)造成SSRF漏洞。

這個(gè)原因也很好理解,我以Python的requests庫為例。requests的API中有個(gè)設(shè)置,叫allow_redirects,當(dāng)將其設(shè)置為True的時(shí)候requests會(huì)自動(dòng)進(jìn)行30X跳轉(zhuǎn)。而默認(rèn)情況下(開發(fā)者未傳入這個(gè)參數(shù)的情況下),requests會(huì)默認(rèn)將其設(shè)置為True:

所以,我們可以試試請(qǐng)求一個(gè)302跳轉(zhuǎn)的網(wǎng)址:

默認(rèn)情況下,將會(huì)跟蹤location指向的地址,所以返回的status code是最終訪問的頁面的狀態(tài)碼。而設(shè)置了allow_redirects的情況下,將會(huì)直接返回302狀態(tài)碼。

所以,即使我們獲取了http://t.cn/R2iwH6d的Host,通過了is_inner_ipaddress檢查,也會(huì)因?yàn)?02跳轉(zhuǎn),跳到一個(gè)內(nèi)網(wǎng)IP,導(dǎo)致SSRF。

這種情況下,我們有兩種解決方法:

1. 設(shè)置allow_redirects=False,不允許目標(biāo)進(jìn)行跳轉(zhuǎn)

2. 每跳轉(zhuǎn)一次,就檢查一次新的Host是否是內(nèi)網(wǎng)IP,直到抵達(dá)最后的網(wǎng)址

第一種情況明顯是會(huì)影響業(yè)務(wù)的,只是規(guī)避問題而未解決問題。當(dāng)業(yè)務(wù)上需要目標(biāo)URL能夠跳轉(zhuǎn)的情況下,只能使用第二種方法了。

所以,歸納一下,完美解決SSRF漏洞的過程如下:

1. 解析目標(biāo)URL,獲取其Host

2. 解析Host,獲取Host指向的IP地址

3. 檢查IP地址是否為內(nèi)網(wǎng)IP

4. 請(qǐng)求URL

5. 如果有跳轉(zhuǎn),拿出跳轉(zhuǎn)URL,執(zhí)行1

0x04 使用requests庫的hooks屬性來檢查SSRF

那么,上一章說的5個(gè)過程,具體用Python怎么實(shí)現(xiàn)?

我們可以寫一個(gè)循環(huán),循環(huán)條件就是“該次請(qǐng)求的狀態(tài)碼是否是30X”,如果是就繼續(xù)執(zhí)行循環(huán),繼續(xù)跟進(jìn)location,如果不是,則退出循環(huán)。代碼如下:

  1. r = requests.get(url, allow_redirects=False
  2. while r.is_redirect: 
  3.     url = r.headers['location']  
  4.     succ, errstr = check_ssrf(url)  
  5.     if not succ: 
  6.         raise Exception('SSRF Attack.')  
  7.     r = requests.get(url, allow_redirects=False

這個(gè)代碼思路大概沒有問題,但非常簡陋,而且效率不高。

只要你翻翻requests的源代碼,你會(huì)發(fā)現(xiàn),它在處理30X跳轉(zhuǎn)的時(shí)候考慮了很多地方:

  • 所有請(qǐng)求放在一個(gè)requests.Session()中
  • 跳轉(zhuǎn)有個(gè)緩存,當(dāng)下次跳轉(zhuǎn)地址在緩存中的時(shí)候,就不用多次請(qǐng)求了
  • 跳轉(zhuǎn)數(shù)量有最大限制,不可能無窮無盡跳下去
  • 解決307跳轉(zhuǎn)出現(xiàn)的一些BUG等

如果說就按照之前簡陋的代碼編寫程序,固然可以防御SSRF漏洞,但上述提高效率的方法均沒用到。

那么,有更好的解決方法么?當(dāng)然有,我們翻一下requests的源代碼,可以看到一行特殊的代碼:

hook的意思就是“劫持”,意思就是在hook的位置我可以插入我自己的代碼。我們看看dispatch_hook函數(shù)做了什么:

  1. def dispatch_hook(key, hooks, hook_data, **kwargs): 
  2.      """Dispatches a hook dictionary on a given piece of data.""" 
  3.      hookshooks = hooks or dict() 
  4.      hookshooks = hooks.get(key)     
  5.      if hooks:     
  6.          if hasattr(hooks, '__call__'): 
  7.              hooks = [hooks]     
  8.          for hook in hooks:       
  9.              _hook_data = hook(hook_data, **kwargs)       
  10.              if _hook_data is not None:        
  11.                  hook_data = _hook_data 
  12.      return hook_data 

hooks是一個(gè)函數(shù),或者一系列函數(shù)。這里做的工作就是遍歷這些函數(shù),并調(diào)用:

  1. _hook_data = hook(hook_data,**kwargs) 

我們翻翻文檔,可以找到hooks event的說明 http://docs.python-requests.org/en/master/user/advanced/?highlight=hook#event-hooks :

文檔中定義了一個(gè)print_url函數(shù),將其作為一個(gè)hook函數(shù)。在請(qǐng)求的過程中,響應(yīng)對(duì)象被傳入了print_url函數(shù),請(qǐng)求的域名被打印了下來。

我們可以考慮一下,我們將檢查SSRF的過程也寫為一個(gè)hook函數(shù),然后傳給requests.get,在之后的請(qǐng)求中一旦獲取response就會(huì)調(diào)用我們的hook函數(shù)。這樣,即使我設(shè)置allow_redirects=True,requests在每次請(qǐng)求后都會(huì)調(diào)用一次hook函數(shù),在hook函數(shù)里我只需檢查一下response.headers['location']即可。

說干就干,先寫一個(gè)hook函數(shù):

當(dāng)r.is_redirect為True的時(shí)候,也就是說這次請(qǐng)求包含一個(gè)跳轉(zhuǎn)。獲取此時(shí)的r.headers['location'],并進(jìn)行一些處理,最后傳入check_ssrf。當(dāng)檢查不通過時(shí),拋出一個(gè)異常。

然后編寫一個(gè)請(qǐng)求函數(shù)safe_request_url,意思是“安全地請(qǐng)求一個(gè)URL”。使用這個(gè)函數(shù)請(qǐng)求的域名,將不會(huì)出現(xiàn)SSRF漏洞:

我們可以看到,在第一次請(qǐng)求url前,還是需要check_ssrf一次的。因?yàn)閔ook函數(shù)_request_check_location只是檢查30X跳轉(zhuǎn)時(shí)是否存在SSRF漏洞,而沒有檢查最初請(qǐng)求是否存在SSRF漏洞。

不過上面的代碼還不算完善,因?yàn)開request_check_location覆蓋了原有(用戶可能定義的其他hooks)的hooks屬性,所以需要簡單調(diào)整一下。

最終,給出完整代碼:

  1. import socket 
  2.  import re 
  3.  import requests 
  4.  from urllib.parse import urlparse 
  5.  from socket import inet_aton 
  6.  from struct import unpack 
  7.  from requests.utils import requote_uri 
  8.    
  9.  def check_ssrf(url): 
  10.      hostname = urlparse(url).hostname 
  11.        
  12.      def ip2long(ip_addr): 
  13.          return unpack("!L", inet_aton(ip_addr))[0] 
  14.        
  15.      def is_inner_ipaddress(ip):     
  16.          ip = ip2long(ip)     
  17.          return ip2long('127.0.0.0') >> 24 == ip >> 24 or \                 
  18.                 ip2long('10.0.0.0') >> 24 == ip >> 24 or \                 
  19.                 ip2long('172.16.0.0') >> 20 == ip >> 20 or \                 
  20.                 ip2long('192.168.0.0') >> 16 == ip >> 16     
  21.                   
  22.       try:         
  23.           if not re.match(r"^https?://.*/.*$", url):             
  24.               raise BaseException("url format error")         
  25.           ip_address = socket.getaddrinfo(hostname, 'http')[0][4][0] 
  26.           if is_inner_ipaddress(ip_address):             
  27.               raise BaseException("inner ip address attack")         
  28.           return True, "success"     
  29.             
  30.        except BaseException as e:         
  31.            return False, str(e)     
  32.        except:         
  33.            return False, "unknow error" 
  34.              
  35. def safe_request_url(url, **kwargs): 
  36.     def _request_check_location(r, *args, **kwargs):         
  37.         if not r.is_redirect:             
  38.             return         
  39.               
  40.         url = r.headers['location']         
  41.           
  42.         # The scheme should be lower case...         
  43.         parsed = urlparse(url)         
  44.         url = parsed.geturl()         
  45.           
  46.         # Facilitate relative 'location' headers, as allowed by RFC 7231.         
  47.         # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource')         
  48.         # Compliant with RFC3986, we percent encode the url.         
  49.         if not parsed.netloc:             
  50.             url = urljoin(r.url, requote_uri(url))         
  51.         else:             
  52.             url = requote_uri(url)         
  53.               
  54.         succ, errstr = check_ssrf(url)         
  55.         if not succ:             
  56.             raise requests.exceptions.InvalidURL("SSRF Attack: %s" % (errstr, ))     
  57.           
  58.     success, errstr = check_ssrf(url)     
  59.     if not success:         
  60.         raise requests.exceptions.InvalidURL("SSRF Attack: %s" % (errstr,))     
  61.           
  62.     all_hooks = kwargs.get('hooks', dict())     
  63.     if 'response' in all_hooks:         
  64.         if hasattr(all_hooks['response'], '__call__'):             
  65.             r_hooks = [all_hooks['response']]         
  66.         else:             
  67.             r_hooks = all_hooks['response']         
  68.               
  69.         r_hooks.append(_request_check_location)     
  70.           
  71.     else: 
  72.         r_hooks = [_request_check_location]     
  73.           
  74.     all_hooks['response'] = r_hooks    
  75.     kwargs['hooks'] = all_hooks     
  76.     return requests.get(url, **kwargs) 

外部程序只要調(diào)用safe_request_url(url)即可安全地請(qǐng)求某個(gè)URL,該函數(shù)的參數(shù)與requests.get函數(shù)參數(shù)相同。

完美在Python Web開發(fā)中解決SSRF漏洞。其他語言的解決方案類似,大家可以自己去探索。

參考內(nèi)容:

http://www.luteam.com/?p=211

http://docs.python-requests.org/

責(zé)任編輯:趙寧寧 來源: 安全客
相關(guān)推薦

2021-07-28 20:12:17

WindowsHeap內(nèi)存

2021-02-19 09:19:11

消息隊(duì)列場(chǎng)景

2022-07-04 10:51:27

數(shù)據(jù)中臺(tái)數(shù)據(jù)倉庫

2022-02-14 22:22:30

單元測(cè)試Junit5

2021-03-15 22:42:25

NameNodeDataNode分布式

2020-02-19 10:45:04

開發(fā)技能代碼

2018-08-21 14:42:29

閃存存在問題

2014-07-17 10:11:53

Android LAPI谷歌

2020-10-29 08:38:07

Volodya漏洞惡意軟件

2018-01-11 09:51:34

2009-12-29 14:25:14

phpXSS漏洞

2017-11-21 14:32:05

容器持久存儲(chǔ)

2015-03-27 15:07:55

云計(jì)算IaaS平臺(tái)Docker

2019-01-30 10:59:48

IPv6Happy EyebaIPv4

2016-07-08 13:33:12

云計(jì)算

2021-11-23 09:45:26

架構(gòu)系統(tǒng)技術(shù)

2011-07-28 09:22:56

Oracle WDPOracle數(shù)據(jù)庫

2021-05-11 08:48:23

React Hooks前端

2018-09-05 15:15:58

來電顯示來電顯示欺詐身份

2020-11-20 10:22:34

代碼規(guī)范設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲日本三级| 中文字幕在线直播| 粉嫩绯色av一区二区在线观看| 欧美精品999| 亚洲欧美在线不卡| 亚洲天堂一区二区| 亚洲欧美日韩电影| 国产精品一区二区三区四区五区| 久久中文字幕免费| 天天做天天爱综合| 亚洲黄色av女优在线观看 | 欧美丝袜第一区| 视频在线99| 日本xxxx人| 日本午夜精品一区二区三区电影| 欧美成人手机在线| 亚洲精品成人无码| 911精品国产| 欧美日韩在线直播| 欧美日韩精品在线一区二区| 在线国产91| 99在线热播精品免费| 国产一区红桃视频| 日本一区二区三区精品| 欧美精品入口| 一本色道久久88综合亚洲精品ⅰ| 国产国语老龄妇女a片| 成人黄色毛片| 欧美色视频日本高清在线观看| 2021狠狠干| 狠狠v欧美ⅴ日韩v亚洲v大胸| 高清不卡一区二区| 91久久久久久| 中文字幕+乱码+中文乱码www| 亚洲精品1区| 欧美福利视频网站| 伊人久久久久久久久久久久久久| 精品一区在线| 日韩精品在线观看一区| 人妻激情偷乱视频一区二区三区| 欧美一级做一级爱a做片性| 日本精品一区二区三区四区的功能| 欧美中文字幕在线观看视频 | 精品少妇一区| 91精品国产美女浴室洗澡无遮挡| 色综合天天色综合| av有声小说一区二区三区| 岛国av午夜精品| 免费看日本毛片| av电影院在线看| 亚洲图片欧美一区| youjizz.com在线观看| 午夜小视频在线观看| 亚洲欧美日韩久久精品| 日韩视频在线免费播放| 日本中文字幕在线2020| 国产精品久久久久久户外露出| 视频一区视频二区视频三区高| 国产二区在线播放| 欧美高清在线精品一区| 亚洲国产精品综合| 中文字幕在线视频区| 国产精品久久久久久久久晋中| 亚洲高清123| 男人的天堂在线视频免费观看| 国产精品乱码人人做人人爱| 在线播放豆国产99亚洲| 麻豆av在线免费看| 一区二区三区四区国产精品| 久久www视频| 操喷在线视频| 狠狠久久五月精品中文字幕| 成人黄色一区二区| 福利一区和二区| 欧美系列一区二区| 亚洲天堂av一区二区| 亚洲成av人片在线观看www| 亚洲第一av网站| 亚洲天堂网一区二区| 成人精品视频| 久久成人精品一区二区三区| 国产亚洲自拍av| 久久久精品性| 成人免费观看网址| 韩国av在线免费观看| 91亚洲精华国产精华精华液| 日韩欧美一区二区三区四区五区| 成人影院在线观看| 五月婷婷久久综合| 高清一区在线观看| 天堂av一区| 亚洲人成网在线播放| 天天色天天综合| 亚洲精品护士| 国产欧美日韩专区发布| 丁香花免费高清完整在线播放 | 欧美一级在线免费| 亚洲一区二区三区四区五区六区| 日本一区二区三区视频| 性欧美办公室18xxxxhd| 中文字幕在线一| 不卡影院免费观看| 亚洲一区精品视频| 国产在线精彩视频| 欧美老人xxxx18| 好吊日免费视频| 中文字幕一区二区av| 日本不卡高字幕在线2019| 国产又粗又猛又黄又爽无遮挡| 成人av手机在线观看| 一区二区免费电影| 美女露胸视频在线观看| 日韩一二三四区| 怡红院一区二区三区| 一区免费在线| 成人黄色av播放免费| 四虎在线免费看| 亚洲综合在线第一页| 羞羞的视频在线| 国产精品午夜一区二区三区| 国模极品一区二区三区| 91好色先生tv| 国产女主播在线一区二区| 无罩大乳的熟妇正在播放| 国产精品亚洲欧美日韩一区在线| 亚洲性生活视频| 国产农村妇女aaaaa视频| 国产成人高清视频| 久久av喷吹av高潮av| 亚洲精品国产嫩草在线观看| 日韩av在线一区二区| 久久精品视频免费在线观看| 麻豆传媒一区二区三区| 日本精品国语自产拍在线观看| 国产极品在线观看| 精品福利在线导航| 久操免费在线视频| 国产一区二区按摩在线观看| 亚洲在线欧美| 97人人做人人爽香蕉精品| 亚洲视频自拍偷拍| 中文字字幕在线中文| 91丨porny丨国产入口| a在线视频观看| 欧美尿孔扩张虐视频| 国内精品一区二区三区| 欧美一级淫片免费视频魅影视频| 一区二区免费看| 国产精品欧美性爱| 影音先锋中文字幕一区二区| 99久久精品免费看国产四区 | 亚洲精品国产一区二区三区四区在线| 91小视频在线播放| 91精品一区二区三区综合在线爱| 国产日韩欧美日韩大片| 欧美69xxx| 日韩无一区二区| 久久久久久久久久久久久久免费看 | 欧美精品久久久久久久久| www夜片内射视频日韩精品成人| 亚洲人吸女人奶水| 亚洲精品鲁一鲁一区二区三区| 韩日在线一区| 久久久免费看| 精品亚洲美女网站| 色视频www在线播放国产成人| 亚洲一区二区三区网站| 亚洲精品成人a在线观看| 少妇献身老头系列| 国产精品久久久久久模特| 欧美日韩精品一区| 另类一区二区三区| 欧美精品在线播放| 人人妻人人澡人人爽久久av| 色偷偷久久一区二区三区| 亚洲天堂岛国片| 狠狠色狠狠色合久久伊人| 成人在线免费观看网址| 精品欠久久久中文字幕加勒比| 日韩av电影手机在线观看| 日本在线看片免费人成视1000| 日韩亚洲欧美成人一区| 欧美一二三区视频| 国产精品美女一区二区三区| 美女又黄又免费的视频| 午夜综合激情| 伊人av成人| 欧美国产极品| 国产欧美亚洲视频| 91超碰在线| 在线观看91久久久久久| 亚洲精品国产av| 色噜噜狠狠一区二区三区果冻| 97在线观看视频免费| 99国产欧美久久久精品| 亚洲一区二区三区观看| 99在线热播精品免费99热| 亚洲一区二区免费视频软件合集| 波多野结衣欧美| 国产精品日韩精品| 老牛影视精品| 久久国产精品久久久| 理论视频在线| 精品久久久网站| 一级片在线免费播放| 亚洲午夜免费福利视频| 国产破处视频在线观看| 成人动漫在线一区| 一级淫片在线观看| 美女视频一区免费观看| 国产美女作爱全过程免费视频| 不卡在线一区| 久久av免费观看| 欧洲一区在线| 国产日韩精品在线| 激情开心成人网| 性日韩欧美在线视频| 国产午夜精品久久久久免费视| 亚洲摸下面视频| 色一情一乱一区二区三区| 欧美日韩成人在线| 久久永久免费视频| 欧美日韩国产一区中文午夜| 日日噜噜夜夜狠狠久久波多野| 久久这里只精品最新地址| 五月天丁香社区| 国产精品一区二区久久不卡| 国产欧美一区二| 日韩高清在线不卡| 激情网站五月天| 国产精品久久久免费| 日韩 欧美 视频| 欧美99在线视频观看| 中国成人在线视频| 欧美激情777| 亚洲国产欧美一区二区三区不卡| 久久最新网址| 欧美日本韩国一区二区三区| 鲁大师精品99久久久| 国产aⅴ精品一区二区三区黄| 国产色99精品9i| 国产一区在线播放| 四虎国产精品免费久久5151| 国产精品久久久久久久9999 | 91精品久久久久久久久青青| 少妇一区视频| 国产精品v片在线观看不卡| 超级碰碰久久| 国产97色在线|日韩| 欧美艳星kaydenkross| 日韩免费精品视频| 8av国产精品爽爽ⅴa在线观看| 国产精品v片在线观看不卡| 四虎影视4hu4虎成人| 国产精品成人va在线观看| 成人在线网站| 成人黄色生活片| 欧美经典影片视频网站| 99在线观看视频| 久久a爱视频| 久久精品欧美| 加勒比久久综合| 亚洲一区二区三区精品视频| 香蕉久久网站| 欧美一区二区视频在线播放| 好吊日精品视频| 国产91在线免费| 日韩精品免费专区| 亚洲欧美日本一区二区三区| 国产伦精品一区二区三区视频青涩 | 性欧美xxx69hd高清| 日本伊人精品一区二区三区介绍 | 色天使在线视频| 久久久www成人免费无遮挡大片| 天天摸日日摸狠狠添| 成人免费小视频| 日韩成人在线免费视频| 色综合久久久久| 一级黄色短视频| 欧美va在线播放| 色吊丝在线永久观看最新版本| 亚洲人成在线观看网站高清| 中文字幕在线视频区| 欧美激情一区二区久久久| 中文字幕在线高清| 亚洲精品日韩av| 亚洲精品**不卡在线播he| 亚洲人久久久| 亚洲高清在线| 污污网站免费看| 成人黄色小视频在线观看| 性高潮久久久久久久| 亚洲日本一区二区三区| 久久国产精品免费看| 欧美三级电影在线观看| 午夜久久久久久久久久| 亚洲人成在线电影| 三级网站视频在在线播放| 青青草原一区二区| 精品一区二区三区四区五区| 久久国产日韩欧美| 亚洲精品国产偷自在线观看| 成年人视频观看| 国产呦精品一区二区三区网站| 特级西西人体4444xxxx| 亚洲欧洲精品天堂一级| 精品欧美一区二区三区免费观看 | www.cao超碰| av不卡免费电影| 日本精品人妻无码77777| 日韩欧美成人网| 亚洲精品字幕在线观看| 日韩在线小视频| 国模套图日韩精品一区二区| 99久久综合狠狠综合久久止| 精品黄色一级片| 成熟了的熟妇毛茸茸| 成人晚上爱看视频| 国产精品白丝喷水在线观看| 日本久久一区二区三区| 亚洲人在线观看视频| 欧美激情免费观看| 日韩欧美激情| 五月天国产一区| 久久久久国产精品一区二区| 亚洲av成人片无码| 亚洲国产日韩一级| 国产三级视频在线播放| 少妇av一区二区三区| 日韩欧美另类一区二区| 精品乱码一区二区三区| 精品成人一区| 又色又爽又黄18网站| 亚洲欧美乱综合| 国产有码在线观看| 日韩在线观看免费高清| 免费日韩成人| 亚洲一区二区三区免费观看| 日韩成人av影视| 日本高清黄色片| 欧美丝袜丝nylons| 二区在线观看| 国产精品劲爆视频| 精品视频国产| 亚洲综合日韩欧美| 国产精品免费看片| 亚洲在线观看av| 色噜噜国产精品视频一区二区| 成人高清一区| 伊人精品久久久久7777| 精品一区二区三区在线观看| 亚洲a∨无码无在线观看| 欧美系列在线观看| 欧美成人性生活视频| 91在线免费观看网站| 中文字幕午夜精品一区二区三区| 天堂在线精品视频| 亚洲综合激情小说| 欧美一区二区三区激情| 国语自产精品视频在线看一大j8 | 久久久久久免费观看| 日韩你懂的在线播放| 国产啊啊啊视频在线观看| 国产伦精品一区二区三区高清| 国产精品嫩草99av在线| 精品欧美一区二区久久久| 欧美影院一区二区| 国产三区在线观看| 国产精品国产精品国产专区蜜臀ah| 亚洲国产综合在线看不卡| 亚洲成人网在线播放| 欧美手机在线视频| 日韩伦理av| 明星裸体视频一区二区| 美女任你摸久久| 精品99久久久久成人网站免费| 亚洲第一页在线| 免费成人动漫| 日韩视频在线观看视频| 粉嫩绯色av一区二区在线观看| www毛片com| 久久手机精品视频| 亚州av日韩av| 天天综合网久久| 亚洲国产一区二区三区青草影视| 深夜福利在线观看直播| 国产乱人伦真实精品视频| 一区二区视频欧美| 亚洲天堂av中文字幕| 精品免费视频.| 三级成人在线| 国产真人做爰毛片视频直播| 国产欧美日韩精品一区| 亚洲第一页在线观看| 日本精品久久电影| 欧美精品激情| 日韩福利在线视频| 亚洲成人久久网| 国产精品亚洲综合在线观看| 5月婷婷6月丁香|