prescript.py 777 B

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