0x00 流量转发路线

vps 暴露端口 -》 nginx(docker) 反向代理转发流量到 漏洞docker -》 漏洞docker

0x01 实施细节

宿主机关waf,重启docker (新建docker 会自动创建防火墙策略,所以关掉防火墙重启docker,刷新配置):

service firewalld stop
service docker restart 

下载漏洞docker

docker pull medicean/vulapps:s_struts2_s2-057
docker run -d medicean/vulapps:s_struts2_s2-057
apt-get update
apt-get install netcat

172.17.0.3

下载nginx

docker pull nginx:stable

启动,配置挂载目录

docker run --name=nginx_honey -p 8032:80 -v /opt/logs/honey_logs/host.access.log/:/var/log/nginx/ -v /opt/logs/honey_logs/default.log/conf.d/:/etc/nginx/conf.d/ -itd docker.io/nginx:stable

执行完后,宿主机/opt/logs/honey_logs/下会有host.access.log的目录,而我们想要挂载的是一个host.access.log配置文件。docker应该是不推荐这么做的。 这个时候把宿主机host.access.log 这个目录删掉,重新建一个文档 host.access.log 再次执行启动命令就可以挂载文件了。

但是上面有一个问题,会把配置文件清空,所以尽量挂载目录

我这里遇到一个问题,-v 第一个目录挂载成功,第二个目录挂载失败。这里没有搞清楚机制,一个目录成功拷贝是将容器内文件拷贝到宿主机,第二个目录拷贝失败,且还将docker容器内目录下的文件隐藏。

而且docker里面 /etc/nginx/conf.d/目录下的 default.conf文件没有了。

容器里的文件只是不可见了

docker inspect -f {{.GraphDriver.Data.MergedDir}} ContainerID

使用下面的命令还可以发现文件在磁盘里。

所以我使用的解决方案是先将容器内目录复制到要挂载的宿主机目录,保证宿主机目录下面有完整的文件,再重新启动docker并挂载。这样子将宿主机文件挂载来拷贝到容器内是肯定不会出问题的。

cp -rf /var/lib/docker/overlay2/ee8976207d09b238ad17b0734b3f2101ac5d1a743882dfe7f822b19e94abf32b/merged/etc/nginx/conf.d/ /opt/logs/honey_logs/default.log/

将之前的docker rm,重新执行启动命令:

docker run --name=nginx_honey -p 8032:80 -v /opt/logs/honey_logs/host.access.log/:/var/log/nginx/ -v /opt/logs/honey_logs/default.log/conf.d/:/etc/nginx/conf.d/ -itd docker.io/nginx:stable

挂载成功! 检查文件是否相同:

Linux中,证明文件是否相同的根本途径是,判断其 inode,如果两个文件的inode相同,两个文件必定为同一文件,从而两个文件的内容也必然相同。

接下来进入nginx 容器内部:

apt-get update
apt-get install vim
apt-get install inetutils-ping
apt-get install net-toolsvim /etc/nginx/conf.d/default.conf

修改 nginx 配置文件 default.conf:

access_log /var/log/nginx/host.access.log main;  取消注释,开启nginx日志location / {proxy_pass http://172.17.0.3:80/;
}

在容器内部重启 nginx:

service nginx restart

重启完会自动关闭docker,重新启动即可。在浏览器访问暴露的端口就会转发到漏洞docker里。

0x02 效果展示

reference

解密 Docker 挂载文件,宿主机修改后容器里文件没有修改

基于iptables的Docker网络隔离与通信详解

docker 容器保存为镜像_Docker容器和镜像操作

后记

对nginx日志格式的自定义:

nginx 输出 http log

ubuntu 18.04 nginx日志中记录请求体和响应体_kangear的博客-CSDN博客_nginx 日志记录请求体

vim /etc/nginx/nginx.conf

可以自定义日志格式,我这里添加 "$request_body":

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$request_body"';

Docker文件挂载时需留意:用vim进行文件的编辑并保存时,系统采用的是备份、替换的策略,文件用vim等工具编辑的过程实质是,备份原来的文件,当新文件编辑完成后,再将新文件替换文原件,这会导致文件的inode变化,所以docker内外的文件并不会同步。而用echo等重定向操作修改文件时,文件的inode保持不变,所以不会发生类似现象。

通过 DOCKER 链来控制 Docker 容器的网络访问权限:

安装完docker网络出现隔离:

iptables -D DOCKER-ISOLATION-STAGE-2 -o br-0fd686c7709c -j DROP  (未知是否起作用)
iptables -D DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP (起作用)

重启docker之后iptables会重新建立这些策略。

本文为好久前弄的库存。有关延伸的方面比如如何从日志中过滤有用信息,如何设置有价值的蜜罐,后面有时间再陆续补充,欢迎留言交流讨论。

搭建云蜜罐捕捉在野0day...相关推荐

  1. 深入探究知道创宇主动防御体系:云蜜罐因何诞生?

    "云端情报赋能,强网战力升级"知道创宇2021新品发布季首场云蜜罐线上直播发布成功,云蜜罐产品引起大家强烈反响与关注.「云蜜罐」作为一款针对性解决现有蜜罐产品仅能还原部分攻击链.数 ...

  2. 利用蜜罐捕捉攻击实验(31)

    预备知识 1.蜜罐的含义和作用 蜜罐(Honeypot)是一种在互联网上运行的计算机系统.它是专门为吸引并诱骗那些试图非法闯入他人计算机系统的人(如电脑黑客)而设计的,蜜罐系统是一个包含漏洞的诱骗系统 ...

  3. 搭建云mysql,基于ECS搭建云上博客

    安装 Apache HTTP 服务 Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. 1 ...

  4. 求生之路怎么显示服务器,求生之路怎么搭建云服务器

    求生之路怎么搭建云服务器 内容精选 换一换 ECS的网卡绑定虚拟IP地址后,该虚拟IP地址无法ping通.以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到 ...

  5. 【报名开启】阿里云线下Workshop让你玩转ECS 快速搭建云上博客

    简介:想了解云计算的前世今生?零基础小白也想上手实践?想体验用ECS搭建云上博客?想结识更多对ECS感兴趣的开发小伙伴?想获得阿里云限量周边?5月30号阿里云ACE同城会北京会长张维带你玩转ECS,快 ...

  6. 【Workshshop No.3 | Kyligence X 青云QingCloud Workshop】零基础搭建云上大数据平台

    7月13日Kyligence 与青云QingCloud 联合举办的"零基础搭建云上大数据平台" Workshop诚邀您参加. Kyligence Cloud 是 Kyligence ...

  7. 如何快速搭建云原生企业级数据湖架构及实践分享

    简介: 众所周知,数据湖技术在大数据领域炙手可热,随着在云上的广泛部署和应用,其业务价值逐渐获得业界共识.如何快搭建数据湖架构被越来越多的企业探讨.本文主要分享快速搭建云原生企业级数据湖架构及实践分享 ...

  8. 安卓搭建虚拟服务器,安卓手机搭建云服务器

    安卓手机搭建云服务器 内容精选 换一换 本文介绍使用云手机服务时需要了解的基本概念.云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机=云服务器+Android OS.您可 ...

  9. arm云服务器虚拟安卓,ARM搭建云手机

    ARM搭建云手机 内容精选 换一换 ����BoostKit ARMԭ��ʹ���׼������嵥��Ϊ�û��ṩ���������Խ��ܺ�Լ����Ϣ�� 云手机(Cloud Phone,简称CP ...

最新文章

  1. python 抛出异常与自定义异常raise
  2. sql时间格式转换yyyymm_XML和实体类之间的转换
  3. Linux LED驱动开发实验(直接操作寄存器 -- 实际开发很少这样做)
  4. 搭建主从数据库出现的错误 error connecting to master ‘slave@172.17.0.2:3306‘ - retry-time: 30 retries: 1
  5. linux自动重新启动,linux 系统自动重新启动,请帮忙看看
  6. 《SpringCloud超级入门》Spring Cloud Eureka是什么?《八》
  7. ajax 清洗剂,Choice浴室清洁剂大测评!最好用的只要$3.5!这些产品最好别买...
  8. 制作CentOS 5.9自动安装光盘iso镜像
  9. 持续集成部署Jenkins工作笔记0019---19.在Jenkins中指定Git客户端位置
  10. 关于2018、2019后的 MacBook 苹果电脑增加T2安全芯片造成无法U盘启动解决办法
  11. 微信多开软件(Java版)
  12. 判断手机号所属运营商--课后程序(Python程序开发案例教程-黑马程序员编著-第11章-课后作业)
  13. photoshop名人堂
  14. foxmail怎么设置服务器才能登陆网易企业邮箱
  15. 做好项目信息管理,是优秀项目经理的必备技能
  16. 正则 以小写英文字母开头,且只能包含英文字母、数字、下划线
  17. Android测试接口时超时
  18. 谢希仁计算机网络第7版考研真题章节题库下载
  19. 游戏显卡选购入门资料
  20. 英语之痛:好久也让老外在启蒙期就开始学习汉语

热门文章

  1. BITCS2016程序设计 | 20. 猜-丁-壳!
  2. JAVA8~17新特性
  3. 从新浪微博的改版谈网页重构
  4. 专题训练(9) 1001 求全排列(1)
  5. (官网)虚幻3--Scaleform 技术指南
  6. Win10的界面字体突然变大的解决办法
  7. 源码分享 | 一个聚合的今日热榜站
  8. java currenttimemillis 效率_「currenttimemillis」高并发下System.currentTimeMillis()并发问题以及优化对比 - seo实验室...
  9. Java - 简述一下你了解的设计模式。
  10. dos命令进入服务器文件夹,用DOS命令远程管理FTP服务器