socat流量操控


被稱為nc++,雙向數據流通道工具。

假設有這樣一個場景

相互通信

創建服務器端,偵聽2222端口

socat - tcp4-listen:2222

查看2222端口是否打開

netstat -pantu | grep :2222

客戶端連接到服務器端

socat tcp:192.168.1.110:2222

服務端和客戶端就能相互通信了

 

傳輸文件

服務器端

偵聽333端口

socat tcp4-listen:333 open:2.txt,creat,append

客戶端

cat 1.txt | socat- tcp:192.168.1.110:333

客戶端通過333端口發送一個1.txt文件給服務器端

在服務器端就接收到了文件並保存為2.txt

 

傳遞shell

服務器端

socat tcp-l :23 exec:sh,pty,stderr 

tcp-l 是tcp4-listen的簡寫

客戶端

socat - tcp:192.168.1.110:23

客戶端通過23端口就得到了一個服務器端的shell

 

端口轉發

服務器端

socat tcp4-listen:8080,fork tcp4:192.168.1.1:80

當有客戶端來訪問本機的8080端口時,就把這個請求做一個轉發,轉發到80端口,訪問8080端口相當於訪問192.168.1.1的80端口

在客戶端

訪問服務器的8080端口,就相當於訪問服務器的80端口

 

UDP協議傳輸數據

服務器端

socat - udp-l:2000

客戶端通過2000端口發送數據

echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | socat - udp-datagram:192.168.1.110:2000

服務器端就接收到了

 

還可以 socat - udp-datagram:192.168.1.110:2000

服務器端就收到了數據

 

UDP協議傳輸命令

服務器端

socat - udp-l:2000

客戶端

echo "`id`" | socat - udp-datagram:192.168.1.110:2000

服務器端相當於執行了id命令

 

UDP全端口任意內容發包

可以做掃描器

客戶端

for PORT in {1..65535}; do echo "aaaaa" | socat - UDP4-DATAGRAM:192.168.1.110:$PORT; sleep .1; done

抓包可以看到,客戶端在不停地向服務器端的端口發包

 

搭建簡單的web服務器

在服務器端

socat -T 1 -d -d TCP-L:10081,reuseaddr,fork,crlf SYSTEM:"echo -e \"\\\"HTTP/1.0 200 OK\\\nDocumentType: text/plain\\\n\\\ndate: \$\(date\)\\\nserver:\$SOCAT_SOCKADDR:\$SOCAT_SOCKPORT\\\nclient: \$SOCAT_PEERADDR:\$SOCAT_PEERPORT\\\n\\\"\"; cat; echo -e \"\\\"\\\n\\\"\""

打開客戶端瀏覽器輸入服務器端的地址以及端口,可以看到返回的信息

 


免責聲明!

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



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