it* Use chroot () in a secure way - chdir+chroot * Added CHRDIR to chdir after chrooting * Fix support to 'run any command' - sup - small tool for privilege escalation Err parazyd.org 70 hgit clone https://git.parazyd.org/sup URL:https://git.parazyd.org/sup parazyd.org 70 1Log /git/sup/log.gph parazyd.org 70 1Files /git/sup/files.gph parazyd.org 70 1Refs /git/sup/refs.gph parazyd.org 70 1README /git/sup/file/README.gph parazyd.org 70 1LICENSE /git/sup/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit a9bc8aa095aabbb77bc77d990cc410c65cae19ba /git/sup/commit/a9bc8aa095aabbb77bc77d990cc410c65cae19ba.gph parazyd.org 70 1parent 989bc1c744d8fe03a58692410a6d68ad00a872c8 /git/sup/commit/989bc1c744d8fe03a58692410a6d68ad00a872c8.gph parazyd.org 70 hAuthor: pancake@dazo URL:mailto:unknown parazyd.org 70 iDate: Mon, 14 Dec 2009 01:30:40 +0100 Err parazyd.org 70 i Err parazyd.org 70 i* Use chroot () in a secure way Err parazyd.org 70 i - chdir+chroot Err parazyd.org 70 i* Added CHRDIR to chdir after chrooting Err parazyd.org 70 i* Fix support to 'run any command' Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M config.def.h | 3 ++- Err parazyd.org 70 i M sup.c | 8 ++++++-- Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 8 insertions(+), 3 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/config.def.h b/config.def.h /git/sup/file/config.def.h.gph parazyd.org 70 it@@ -4,7 +4,8 @@ Err parazyd.org 70 i #define SETUID 0 Err parazyd.org 70 i #define SETGID 0 Err parazyd.org 70 i Err parazyd.org 70 i-#define CHROOT "/" Err parazyd.org 70 i+#define CHROOT "" Err parazyd.org 70 i+#define CHRDIR "" Err parazyd.org 70 i Err parazyd.org 70 i #define ENFORCE 1 Err parazyd.org 70 i Err parazyd.org 70 1diff --git a/sup.c b/sup.c /git/sup/file/sup.c.gph parazyd.org 70 it@@ -60,10 +60,14 @@ int main(int argc, char **argv) { Err parazyd.org 70 i seteuid (SETUID) == -1 || setegid (SETGID) == -1) Err parazyd.org 70 i return die (1, strerror (errno)); Err parazyd.org 70 i #ifdef CHROOT Err parazyd.org 70 i- if (chroot (CHROOT) == -1) Err parazyd.org 70 i+ if (*CHROOT) Err parazyd.org 70 i+ if (chdir (CHROOT) == -1 || chroot (".") == -1) Err parazyd.org 70 i return die (1, strerror (errno)); Err parazyd.org 70 i+ if (*CHRDIR) Err parazyd.org 70 i+ if (chdir (CHRDIR) == -1) Err parazyd.org 70 i+ return die (1, strerror (errno)); Err parazyd.org 70 i #endif Err parazyd.org 70 i- ret = execv (rules[i].path? rules[i].path:argv[1], argv+1); Err parazyd.org 70 i+ ret = execv (*rules[i].path? rules[i].path:argv[1], argv+1); Err parazyd.org 70 i return die (ret, strerror (errno)); Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 .