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

c沙箱与容器_orw技术分享相关推荐

  1. DockOne技术分享(一二五):深信服容器云的负载均衡实现

    本文讲的是DockOne技术分享(一二五):深信服容器云的负载均衡实现[编者的话]此次重点讲的是在深信服容器云项目中的负载均衡方案的原理与实现.同时,因为我们投入的人力有限,人员的水平也有不足,但是借 ...

  2. 容器云技术docker

    1.容器云技术docker是什么? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 容器是完全使用沙箱机制 ...

  3. [由零开始] 容器虚拟化技术和自动化部署-Docker

    伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中. 部署.交付.运行 传统来看,虚拟化(vm)既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则 更为优雅,它充分利 ...

  4. docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍

    docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...

  5. 容器化技术如何在数据中心实践

    容器化技术是大势所趋,容器云将凭借快速部署.便捷运维等特性在物联网.边缘计算等行业中大放异彩. 主讲人|又拍云首席布道师 运维总监 邵海杨 自从虚拟化技术和云计算服务出现以来,IT公司都将虚拟机作为降 ...

  6. 技术分享 | 一条神奇的曲线——贝塞尔曲线在前端的应用

    源宝导读:在前端的开发中我们经常会遇到利用贝塞尔曲线帮助我们完成前端的动画和图形绘制,但是对其中的一些参数配置是一头雾水.本文将从贝塞尔曲线的原理讲起,由浅入深剖析一阶到多阶贝塞尔的实现原理,最后从三 ...

  7. 2018 大湾区(深圳) .NET技术分享交流会 第一期

    .NET Core 2.1 已于2018年5月30日正式发布,邀请粤港澳大湾区.NET技术专家和从业人员,一起分享与交流.NET技术的发展方向,提高粤港澳大湾区.NET技术交流氛围,挖掘.NET高级人 ...

  8. 2017(深圳) .NET技术分享交流会(第二期)网络直播活动

    .NET Core 2.0 已于2017年8月14日正式发布,2017(深圳) .NET技术分享交流会在公众号中发出2个小时后就被抢光了,受限于场地无法增加人数,这次如鹏网杨中科老师提供VIP级的网络 ...

  9. 2017(深圳) .NET技术分享交流会 第二期,将有网络直播

    2017 .NET技术分享交流会第一期已在5月13日成功举办,但是有同学反馈哪个地方有点偏,又过去了3个月,这期间一直没找到合适的地方举办活动,一直在南山科技园寻找经济适合的场地,终于找到一个安静,风 ...

最新文章

  1. 这里有最全的k8s初学者指南!!!
  2. arduino char*转string_【201期】面试官:String长度有限制吗?是多少?还好我看过...
  3. 函数语法:Js之on和addEventListener的使用与不同
  4. 用于数据科学的Python库,命令行工具,Jenkins X,DevOps,Perl 6等
  5. idea抽取重复方法快捷键_使用 IDEA 几分钟就重构了同事800 行quot;又臭又长quot; 的类!真香!...
  6. 微软API工作笔记001---API大全查询
  7. 2018 Python 开发者调查报告发布,数据出乎你意料吗?
  8. qwidget show 是否有信号_c++笔记(信号集处理函数)
  9. java静态成员静态代码块初始化顺序
  10. python列表冒泡排序方法_python列表去重 冒泡排序 插序排序
  11. 40个前端新手入门练习项目,学完即可做项目
  12. idc机房建设费用_机房建设方案及报价清单.doc
  13. TCP/IP、IPX/SPX、NETBEUI常识
  14. 【AI视野·今日CV 计算机视觉论文速览 第200期】Tue, 18 May 2021
  15. 支付宝android 10.0.8,分享10.0.8版支付宝开启和关闭小额免密支付功能方法
  16. 海康威视监控摄像头连接电脑教程
  17. 视觉检测设计与实践答题卡检测实验报告
  18. D L N A介 绍
  19. haproxy stats enable功能详解
  20. python 召回率_使用sklearn获取精确性和召回率

热门文章

  1. 如何计算两个坐标点的方位角
  2. linux hostname的配置方法
  3. python保留字-Python保留字
  4. 互联网其它岗位薪资排行榜
  5. Visual Studio Code(VSCODE)修改字体、字号
  6. 考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)
  7. android手机查看设备ID,deviceID
  8. 愉快的舞会c++_项目经理和开发人员如何才能(愉快地!)给出实际的发货日期...
  9. xv6 - lab0 - 课程介绍
  10. 【慕课笔记】第五章 JAVA中的集合框架(中) 第1节 MapHashMap简介