Intro

metarget ,是一个自动构建易受攻击基础设施的框架。它使得安全研究人员能够快速且自动地部署简单或复杂的易受攻击的云原生目标环境。Metarget支持安装像软件一样的漏洞,例如,通过简单的命令安装包含特定CVE漏洞的Docker、Kubernetes等。此项目旨在为安全研究提供易受攻击的场景,并不推荐在互联网上部署Metarget构建的组件或场景​。以上内容来自ChatGPT。虽然已经近两年没有新release了并且由于网络资源的迭代更新很多上古漏洞的源已经失效了,但复现一些CVE必须要使用这个项目。另外在一些比较老的操作系统发行版上(Ubuntu16.04)过于老旧的python环境和内核版本都为运行metarget造成了困难。本文包括下面的内容:

  1. 解决apt初始化的问题
  2. python3.5->python3.9
  3. openssl1.0.2->openssl3.2.0
  4. 想到再加

apt初始化

进入系统换USTC源,执行apt update,报:

1
Error in appstreamcli: double free or corruption

这里是16.04缺少appstreamcli,按照下面的方式安装配置即可

1
2
sudo apt install appstream/xenial-backports
sudo appstreamcli refresh –force

然后再apt update

升级Python

由于metarget在内置的python3.5版本下完全无法运行(缺少对于f''的支持等等),所以需要升级到python3.9。而网上 常用的ppa源(ppa:deadsnakes/ppa)直接apt安装的方式由于ppa源已经停止对16.04的支持,已经无法使用。所以只能使用编译源码的方式。这里参考

1
2
3
4
5
6
7
sudo apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
sudo apt update
wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz
tar xf Python-3.9.13.tgz
cd Python-3.9.13/
./configure --prefix=/usr/local/python3 --enable-optimizations
sudo make && sudo make install

接下来将软连接转移到新编译的3.9中,注意原有的3.5不要删除否则会造成严重的系统问题

1
2
3
4
5
mv /usr/bin/python3 /usr/bin/python3.bak
#添加python3的软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
#测试是否安装成功了
python3 -V

升级openssl

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+,显然是16.04的内置openssl版本太低导致的,重新编译源码更新(参考 ):

1
2
3
4
5
6
wget --no-check-certificate   https://www.openssl.org/source/openssl-3.2.0t.tar.gz
tar -zxvf openssl-3.2.0t.tar.gz
cd openssl-3.2.0/
./config --prefix=/usr/local/my_openssl
make
make install

接下来转移libssl.so.3

1
ls  /usr/local/openssl/lib64

应该可以在这里找到

然后编辑/etc/ld.so.conf,把这个路径加进去

刷新配置:

1
sudo ldconfig

应该就可以了。

1
2
root@ubuntu:~# openssl version
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)

但python还没有链接上…

1
2
3
import ssl
print(ssl.OPENSSL_VERSION)
print(ssl._ssl.__file__)