prescript.py 696 B

12345678910111213141516171819202122232425262728293031323334
  1. if __name__ == "__main__":
  2. import ctypes
  3. import os
  4. import sys
  5. if len(sys.argv) != 4:
  6. sys.exit(-1)
  7. lib = ctypes.CDLL("./tmp/sandbox-python/python.so")
  8. module = sys.argv[1]
  9. code = open(module).read()
  10. def create_sandbox():
  11. os.chroot(".")
  12. os.chdir("/")
  13. def prtcl():
  14. lib.DifySeccomp.argtypes = []
  15. lib.DifySeccomp.restype = None
  16. lib.DifySeccomp()
  17. def drop_privileges(uid, gid):
  18. os.setgid(gid)
  19. os.setuid(uid)
  20. uid = int(sys.argv[2])
  21. gid = int(sys.argv[3])
  22. if not uid or not gid:
  23. sys.exit(-1)
  24. create_sandbox()
  25. prtcl()
  26. drop_privileges(uid, gid)
  27. exec(code)