pwn环境docker化

新年第一篇水文,因为有些时候做一些相对简单的题目时打开虚拟机这么庞大的东西显得不是很明智,还有就是在一场比赛中遇到不同版本的pwn题时如果切换虚拟机也十分的麻烦,因此将Pwn环境搭建在docker下就十分的方便,本文简单记录下在centos7上利用ubuntu18.04镜像搭建pwn环境的方法

0x00 参考文章

别的不说了,参考文章先贴上

1
2
3
4
5
https://www.jianshu.com/p/ea4a00c6c21c
https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.53322f70tlgkLD
https://help.aliyun.com/document_detail/51810.html
https://e3pem.github.io/2019/04/19/%E6%9D%82%E9%A1%B9/%E5%9C%A8docker%E4%B8%AD%E6%90%AD%E5%BB%BApwn%E7%8E%AF%E5%A2%83/
https://xiaoxiaorenwu.top/2019/08/08/docker%E5%88%9D%E8%AF%86/#more

0x01 拉取镜像,运行docker

这里就不详细说明docker的安装了,我们直接拉取镜像吧

1
2
3
4
5
6
7
8
9
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
2746a4a261c9: Pull complete
4c1d20cdee96: Pull complete
0d3160e1d0de: Pull complete
c8e37668deea: Pull complete
Digest: sha256:250cc6f3f3ffc5cdaa9d8f4946ac79821aafb4d3afc93928f0de9336eba21aa4
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

好啦,到这里就拉取完毕,我们可以查看下当前的镜像

1
2
$ docker images
ubuntu 18.04 549b9b86cb8d 2 weeks ago 64.2MB

然后我们启动刚刚下载的镜像,这里我们采用-i参数(打开STDIN,用于控制台交互 )和-t参数(分配tty设备,该可以支持终端登录,默认为false),然后用–name参数起一个花名

这里要注意的就是我们正常使用的时候启动时需要添加–privileged参数来获取调试程序的权限,不然是没有办法使用gdb的

1
2
$ docker run -i -t --name pwn_2.27 ubuntu:18.04 bash
root@f760e5435e30:/#

0x02 环境搭建

  • 拿到一个新系统第一件事自然是换镜像!!

    首先我们update一下,然后下载我们最爱的vim,之后修改下载源即可

    当然也就是修改/etc/apt/sources.list的内容,我们将其中的http://archive.ubuntu.com 改为mirrors.aliyun.com即可,下如18.04

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    deb http://mirrors.aliyun.com/ubuntu/ xenial main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

    然后就是正常安装流程,这里我安装完Git后直接拉来我的脚本
    pwn environment

    1
    2
    3
    4
    git clone https://github.com/nightRainy/Pwn_environment_automatically_build_script.git
    cd Pwn_environment_automatically_build_script
    chmod +x setup.sh
    ./setup.sh

    下面要做的就是一些简单的交互和等待…
    之后我们需要设置一些tmux的鼠标切换:)

    1
    2
    root@98c01766c4db:~# touch .tmux.conf
    root@98c01766c4db:~# echo 'set -g mouse on' > .tmux.conf

    这里说明一下,我的自动化脚本只安装了
    gcc,gdb,libc6_dev_i386,pwntools,pwndbg,oh_My_zsh,one_gadget,roputils,tmux几个工具,还有其他需要的工具需要自行下载

    之后我们退出一下我们的docker,进行下一步

  • 打包为镜像并上传

    首先docker ps 看看我们docker的实例号:

    1
    2
    3
    $ docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    98c01766c4db ubuntu:18.04 "bash" 50 minutes ago Up 50 minutes pwn_2.27

    之后要做的就是将其打包为镜像

    1
    docker commit -m "pwn 18.04 2.27" 98c01766c4db zhihsi/dockerpwn:2.27

    请将zhihsi换为自己的dockerhub账号名,其中-m后面的是镜像的描述,最后的2.27为标签
    之后查看一下我们的docker

    1
    2
    3
    $ docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    zhihsi/dockerpwn 2.27 0357f4157a83 13 seconds ago 1.44GB

    上传到我们的dockerhub上

    1
    docker push zhihsi/dockerpwn:2.27

    如果出现denied: requested access to the resource is denied 请检查是否登陆了
    如果没有登陆,可以使用docker login登陆一下,然后就可以上传了
    然后就出现了一个神奇的问题,上传速度巨慢,下载速度估计23333,后来发现一个师傅的文章,是传到阿里云的docker镜像中

    基本方法

之后我们就可以使用我们的镜像了,运行的时候记得加特权模式:-)

1
docker run -i -t --privileged zhihsi/dockerpwn:2.27 bash

over~


2021/4/23日注

这地方一直是我想改的地方,但是因为懒狗一直没改,想了想还是应该说明白不然会引起误导总是不好的

上面说到运行镜像的时候需要加特权模式其实也不一定,可以直接赋予调试权限(ptrace),这是由于linux的capbilities安全机制,我们在启动docker的时候docker出于安全考虑是没有给我们调试权限的,因此需要我们自己加上sys_ptrace权限才可以进行调试,而特权模式相当于给予了docker所有的能力

个人一般喜欢使用特权模式,一个是因为我并不将他映射到主机端口上对外开放使用,权限高自然是最好,另一个就是传文件很方便,随意传到哪个文件夹都可以,至此

对capbilities机制感兴趣的童鞋们可以自己研究一下,我这里就不多说了,单纯的埋一下坑hh


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!