sandbox

[TOC]

sandbox

sandbox检测工具 seccomp-tools dump ./file 有时候直接用这个指令没有检测到沙盒,一般是因为程序还没有执行到沙盒,随便输入执行到沙盒就行

prctl函数

可以看看这篇博客 以及这篇博客

  • prctl函数原型:int prctl(int option,unsigned long argv2,unsigned long argv3,unsigned long argv4,unsigned long argv3)
  • include/linux/prctl.h里面存储着prctl的所有参数的宏定义,prctl的五个参数中,其中第一个参数是你要做的事情,后面的参数都是对第一个参数的限定。
  • 在第一个参数中,我们需要重点关注的参数有这两个: (1).PR_SET_SECCOMP(22):当第一个参数是PR_SET_SECCOMP,第二个参数argv2为1的时候,表示允许的系统调用有read,write,exit和sigreturn;当argv等于2的时候,表示允许的系统调用由argv3指向sock_fprog结构体定义,该结构体成员指向的sock_filter可以定义过滤任意系统调用和系统调用参数。(细节见下图) (2).PR_SET_NO_NEWPRIVS(38):prctl(38,1,0,0,0)表示禁用系统调用execve()函数,同时,这个选项可以通过fork()函数和clone()函数继承给子进程。

一个例子

  • 这里的args[0],args[2]看着很奇怪,实际上就是第几个参数,rdi=args[0],rdx=args[2],所以这里可以使用write函数,但是每次只让读入一个字节