[Bonus] Sistem Terdistribusi untuk InjekSSH [JAVA JARINGAN]

Hai gaesssss bertemu kembali bersama saya Angga Dwi Hariadi yang sempat vakum setelah JAVA JARINGAN 3.
Postingan ini merupakan bonus sebelum menuju pembelajaran JAVA JARINGAN SESI 4 biar lebih semangat terus berkunjung dan mengapresiasi UKM LaOS.

Pada pembahasan kali ini kita akan membuat sebuah injekSSH (terkenalnya begitu).
Bagaimana sih sebenaranya ?
Sebenarnya injeksi yang dilakukan dengan melakukan manipulasi pada HEADER sebuah website milik operator yang dapat diakses dalam keadaan nol pulsa dan nol kuota. Cara pembuktiannya anda siapkan modem masukkan kartu Operator (ingat posisi tidak ada kuota) lalu akses sebuah web milik operator misalnya anda menggunakan operator indosat maka anda akses semua website milik indosat. Apabila bisa maka coba manipulasi HEADER.

Pembahasan header pada postingan lain. Mari kita fokus bersama dipostingan ini. project ini saya contohkan untuk operator Indosat. jika anda ingin operator lain ganti HEADER pada class belokTCP

1. buatlah sebuah project baru. misal di NetbeansIDE beri nama InjekSSH. Silahkan copas kode berikut (Jika ada error biarkan terlebih dahulu, nanti hilang sendiri.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package injekssh;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
*
* @author ANGGA
*/
public class InjekSSH {

public static int LISTEN_PORT = 6909; //Listen untuk port localhost
public static String ROUTE_HOST = "10.19.19.19"; //Route PROXY Operator. ini contoh indosat
public static int ROUTE_PORT = 8080; //port route PROXY operator. contoh indosat

public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(LISTEN_PORT);
System.out.println("Nama\t:Angga Dwi Hariadi\nJurusan\t:Sistem Informasi\nAsal\t:Universitas Jember\nUKM\t:Linux and Open Source(LaOS)\n");
System.out.println("**Matkul SISTER Bypass Kuota Internet Operator**\n\nMenunggu Koneksi Login SSH datang.......");
while (true) {
Socket clientSocket = serverSocket.accept();
ClientThread clientThread = new ClientThread(clientSocket);
clientThread.start();
}
}

}

2. buat sebuah Class baru pada project InjekSSH dengan nama class ClientThread. Silahkan copas koding berikut (jika ada yang error biarkan dahulu, lanjutkan ke step selanjutnya)

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package injekssh;</code>

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
*
* @author ANGGA
*/
public class ClientThread extends Thread {

private Socket mClientSocket;
private Socket mServerSocket;
private boolean mForwardingActive = false;

public ClientThread(Socket aClientSocket) {
mClientSocket = aClientSocket;
}

public void run() {
InputStream clientIn;
OutputStream clientOut;
InputStream serverIn;
OutputStream serverOut;
try {
// Melakukan Koneksi ke ROUTE
mServerSocket = new Socket(InjekSSH.ROUTE_HOST, InjekSSH.ROUTE_PORT);

// Lakukan Keep-Alive menghindari terputusanya socket saat komunikasi
mServerSocket.setKeepAlive(true);
mClientSocket.setKeepAlive(true);

// Membaca data Stream (Ouput dan Input)
clientIn = mClientSocket.getInputStream();
clientOut = mClientSocket.getOutputStream();
serverIn = mServerSocket.getInputStream();
serverOut = mServerSocket.getOutputStream();
} catch (IOException ioe) {
System.err.println("Can not connect to " + InjekSSH.ROUTE_HOST + ":" + InjekSSH.ROUTE_PORT);
connectionBroken();
return;
}
// Starting untuk pembelokkan data
mForwardingActive = true;
belokTCP clientForward = new belokTCP(this, clientIn, serverOut);
clientForward.start();
belokTCP serverForward = new belokTCP(this, serverIn, clientOut);
serverForward.start();

System.out.println("Belokkan TCP " + mClientSocket.getInetAddress().getHostAddress()
+ ":" + mClientSocket.getPort() + " interkoneksi " + mServerSocket.getInetAddress().getHostAddress()
+ ":" + mServerSocket.getPort() + " STARTED.");
}

public synchronized void connectionBroken() {
try {
mServerSocket.close();
} catch (Exception e) {
}
try {
mClientSocket.close();
} catch (Exception e) {
}

if (mForwardingActive) {
System.out.println("Belokkan TCP "
+ mClientSocket.getInetAddress().getHostAddress()
+ ":" + mClientSocket.getPort() + " interkoneksi "
+ mServerSocket.getInetAddress().getHostAddress()
+ ":" + mServerSocket.getPort() + " TERPUTUS.");
mForwardingActive = false;
}
}
}

3. buat sebuah Class baru pada project InjekSSH dengan nama class belokTCP. Silahkan copas koding berikut (jika ada yang error silahkan cek di coding kelas sebelumnya. Pastikan semua tidak error)

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package injekssh;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;

/**
*
* @author ANGGA
*/
public class belokTCP extends Thread {

InputStream mInputStream;
OutputStream mOutputStream;
ClientThread mParent;

public belokTCP(ClientThread aParent, InputStream aInputStream, OutputStream aOutputStream) {
mInputStream = aInputStream;
mOutputStream = aOutputStream;
mParent = aParent;
}

public void run() {
byte[] buffer = new byte[8192];
int pos;
String ResponseOK = "HTTP/1.0 200 Connection established\r\n\r\n";
try {
while (true) {
int bytesRead = mInputStream.read(buffer);
if (bytesRead == -1) {
break;
}

String data = new String(buffer, 0, bytesRead);
if (data.indexOf("CONNECT") &gt;= 0) {
String[] split = data.split("\r\n");
String method = split[0];
String[] CmdArray = method.split(" ");

String RawUrl = CmdArray[1];
String[] Args = RawUrl.split(":");
String host = Args[0];
int port = Integer.parseInt(Args[1]);

InetAddress address = InetAddress.getByName(host);
String ip = address.getHostAddress();
String urlHost = ip + ":" + port;
String Protocol = CmdArray[2];

String HEADER = "HEAD http://mmsc.indosat.com.server4.operamini.com/ HTTP/1.1\r\n"
+ "Host: mmsc.indosat.com.server4.operamini.com\r\n\r\n\r\n"
+ "CONNECT " + urlHost + " " + Protocol + "\r\n\r\n";
mOutputStream.write(HEADER.getBytes());
mOutputStream.flush();

} else {
String[] split = data.split("\r\n");
if (split[0].startsWith("HTTP")) {
data = split[0].substring(8).trim();
pos = data.indexOf("200");
if (pos &lt; 0) {
mOutputStream.write(ResponseOK.getBytes());
mOutputStream.flush();
} else {
mOutputStream.write(buffer, 0, bytesRead);
mOutputStream.flush();
}
} else {
mOutputStream.write(buffer, 0, bytesRead);
mOutputStream.flush();
}
}
}
} catch (IOException e) {

}
mParent.connectionBroken();
}

}

Oke guys silahkan dicoba
Terima Kasih…….
sister-siap

Leave a Reply

Your email address will not be published. Required fields are marked *

Follow me