c沙箱与容器_orw技术分享

c沙箱与容器_orw技术分享

一、 沙箱保护

  1. 文件系统隔离

(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. 进程监控

(1)ptrace是一种系统调用,父进程通过ptrace监控和修改子进程运行状态(内存,寄存器等)。由于ptrace可以使子进程处于受控状态,所以可以用于沙箱保护,限制子进程可以使用的系统调用。

(2)seccomp限制程序可以使用或不可使用的系统调用。

  1. 函数保护机制

(1)prctl

prctl()是最原始的沙箱规则实现,决定哪些系统函数可以被调用,那些不可以被调用。

函数原型

int prctl(int option, unsigned long argv2, unsigned long argv3, unsigned long argv4,unsigned long argv3)

二、 容器技术

容器的目的是资源隔离和控制隔离。容器我用的最多就是docker,主要用来部署环境。Docker实现原理自己目前还说不明白,停留在刚好会用阶段,在这里先空着,后面有时间再补上。

三、 ORW技术

  1. Seccomp-tools工具

使用方法:seccomp-tools dump ./文件名

通过该工具可以查看沙箱允许使用的系统调用函数(白名单)

在这里插入图片描述

  1. 常用系统调用号

x86和x64下系统调用号不一样,x86下

read:3 exit:1 write:4 open:5

x64下

read:0 exit: 60 write:1 open:2

  1. 常用利用思路与题型

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;

  1. 参考博客

linux中的容器与沙箱初探 — Atum

seccomp escape - 简书 (jianshu.com)

从prctl函数开始学习沙箱规则 - Riv4ille - 博客园 (cnblogs.com)

从prctl函数开始学习沙箱规则 - Riv4ille - 博客园 (cnblogs.com)

CTF wiki

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值