prescript.py 746 B

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