c沙箱与容器-创新互联
一、 沙箱保护
创新互联是专业的麻江网站建设公司,麻江接单;提供成都网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行麻江网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!- 文件系统隔离
(1)chroot
chroot的主要功能是指定根目录,如“chroot ‘/home/star’”,会启动一个新的shell,并将‘/home/star’作为该shell的根目录。chroot沙箱可以将文件访问限定在某一特定目录下,但可能会被逃逸。
推荐一个chroot绕过工具:
GitHub - earthquake/chw00t: chw00t - Unices chroot breaking tool
(2)restricted bash
rbash主要限制了部分bash命令,使得bash只执行当前目录下可执行文件,并且不允许改变当前目录,通常与chroot共同使用。
- 进程监控
(1)ptrace是一种系统调用,父进程通过ptrace监控和修改子进程运行状态(内存,寄存器等)。由于ptrace可以使子进程处于受控状态,所以可以用于沙箱保护,限制子进程可以使用的系统调用。
(2)seccomp限制程序可以使用或不可使用的系统调用。
- 函数保护机制
(1)prctl
prctl()是最原始的沙箱规则实现,决定哪些系统函数可以被调用,那些不可以被调用。
函数原型
int prctl(int option, unsigned long argv2, unsigned long argv3, unsigned long argv4,unsigned long argv3)
二、 容器技术
容器的目的是资源隔离和控制隔离。容器我用的最多就是docker,主要用来部署环境。Docker实现原理自己目前还说不明白,停留在刚好会用阶段,在这里先空着,后面有时间再补上。
三、 ORW技术
- Seccomp-tools工具
使用方法:seccomp-tools dump ./文件名
通过该工具可以查看沙箱允许使用的系统调用函数(白名单)
- 常用系统调用号
x86和x64下系统调用号不一样,x86下
read:3 exit:1 write:4 open:5
x64下
read:0 exit: 60 write:1 open:2
- 常用利用思路与题型
orw技术常应用于沙箱保护机制(常见标志是prctl()和seccomp()等函数),是一种安全交互方式,通过系统调用(open,write等)与服务器交互(常用于输出flag),与漏洞利用本身无关。(以下orw利用思路以64位为例)
对系统函数的调用通常通过汇编代码的形式,可以手动修改rdi,rsi等寄存器值或内存内容,也可以通过pwntools中的shellcraft模块直接生成(汇编代码,以下演示代码以64位为例)。但注意,最后交互需要使用asm转换。
open
shellcraft.open(‘./flag’)
实际汇编:
xor rsi,rsi;
xor rdx,rdx;
push rdx; #添加\x00,但不会引入\x00
mov rax,{convert_str_asmencode(“././flag”)}; #这里填写对应的文件名,对应hex编码,文件名最好凑到8的整数倍,不然会出现\x00
push rax;
mov rdi,rsp;
xor rax,rax;
mov al,2;
syscall;
read
shellcraft.read(x, y, z)
实际汇编:
mov rdi,rax;#rdi为文件描述符
mov dl,0x40;#长度
mov rsi,{stack_addr}#保存位置
mov al,0;
syscall;
write
shellcraft.write(x, y, z)
实际汇编:
xor rdi,rdi;#使用标准输入
mov al,1;
syscall;
- 参考博客
linux中的容器与沙箱初探 — Atum
seccomp escape - 简书 (jianshu.com)
从prctl函数开始学习沙箱规则 - Riv4ille - 博客园 (cnblogs.com)
从prctl函数开始学习沙箱规则 - Riv4ille - 博客园 (cnblogs.com)
CTF wiki
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章题目:c沙箱与容器-创新互联
标题路径:http://azwzsj.com/article/hpedg.html