diff --git a/Scanner.src b/Scanner.src new file mode 100644 index 0000000..0fd53f8 --- /dev/null +++ b/Scanner.src @@ -0,0 +1,83 @@ +import_code("/root/myprogram") + +if params.len == 0 then exit("Usage: scanner [IP]") + +metaxploit = include_lib("/lib/metaxploit.so") +if not metaxploit then + metaxploit = include_lib(current_path + "/metaxploit.so") +end if +if not metaxploit then exit("Error: Can't find metaxploit library in the /lib path or the current folder") + +target_ip = params[0] + +if not is_valid_ip(target_ip) then exit(target_ip + " is not a valid ip") + +if nslookup(target_ip) == "Not found" then + exit("That domain is not valid.") +end if + +target_router = get_router(target_ip) +target_ports = target_router.used_ports + +column = "Number Type Version IP" + column = column + "\n" + "0" + " " + "kernel_router" + " " + target_router.kernel_version + " " + target_router.local_ip +for port in target_ports + column = column + "\n" + port.port_number + " " + target_router.port_info(port) + " " + port.get_lan_ip +end for + +print("\nIP Address : " + target_ip) +print(format_columns(column)) + + + +checkPrivilege = function(result) + if(typeof(result) == "shell") then result = result.host_computer + if(typeof(result) == "computer") then + //checking root + file = result.File("/lib/init.so") + if( file.has_permission("w") != 0) then return "Root" + //check user + file = result.File("/etc/passwd") + if( file.has_permission("w")) then return "User" + + return "Guest" + end if + return "null" +end function + +scanPort = function(ip, port, optional) + net_session = metaxploit.net_use(ip,port) + + lib = net_session.dump_lib + memList = metaxploit.scan(lib) + for address in memList + keys = metaxploit.scan_address(lib,address) + vulns = keys.split("Unsafe check: ") + keyList =[] + for string in vulns + keyList.push(string[string.indexOf("")+3:string.indexOf("")]) + end for + + for key in keyList + result = lib.overflow(address,key,optional) + if (typeof(result) != "null") then + print(typeof(result)) + insertVuln(lib.lib_name,lib.version,address,key,"",typeof(result),checkPrivilege(result)) + end if + print("\n") + end for + end for +end function + + + + +scanPort(target_ip, 0, target_router.local_ip) +for port in target_ports + + if(port.is_closed != 1) then + scanPort(target_ip, port.port_number, "dave") + else + print(port.port_number + " is Closed.") + end if +end for \ No newline at end of file diff --git a/database.src b/database.src new file mode 100644 index 0000000..2fa8480 --- /dev/null +++ b/database.src @@ -0,0 +1,15 @@ +import_code("/home/Dave/libbindb.src") + +myDB = BinDB.connect("vuln", "Fizeta7-Nyzi0=Sinuvi5-Golepa4", ["kernel_router.so", "libssh.so", "libftp.so","libsql.so","libsmtp.so","libhttp.so","libcam.so","librepository.so"], "/database") + +insertVuln = function(libName,libVersion,memAdress,keyValue,requirments,object,priv) + data = myDB.fetchBy(libName, "version", libVersion) + if data.len != 0 then + for entry in data + if entry.indexOf(memAdress) != -1 then print("Vuln Already known") + end for + else + myDB.insert(libName, {"version": libVersion, "memory_adress": memAdress, "key_value": keyValue, "requirments": requirments, "object": object, "Privilege": priv}) + end if + +end function diff --git a/greyhack/Basic info.txt b/greyhack/Basic info.txt deleted file mode 100644 index f78cca4..0000000 --- a/greyhack/Basic info.txt +++ /dev/null @@ -1,57 +0,0 @@ -Password Greyhack -Tipenycizudefo4 - -E-mail -Vamufebotubery8 - -Bank -iHb1mhJQ-etrandcorpai.net -Bikasakopynehu3 - - -t2pOGi5u-ardianaml.org - -Wallet -user -NlqOHvrfgcpmjyJ -pass -XWMNImwLcGkXESD - -Btc subwallet -MfGQVDCp#600 -LBjLXCbGsTeAgJnVmokUdFhAwlEtvm - - -rshell server -ssh root@Camycahyzapera7 46.103.11.239 -46.103.11.239 -1222 - -router -Cekibadyvufibi5 - - -attack server -ssh root@Tonorafyvazovo9 86.90.141.112 - -router -Vikisihypuzacu0 - - -webhosts -Main -ssh root@Lanohulogyhyko1 62.142.200.139 - -router -Tecenufugicusy2 - - -Home -router -Nygisosesunigu9 - - - - - -cvbnm \ No newline at end of file diff --git a/greyhack/Checkpoint.src b/greyhack/Checkpoint.src deleted file mode 100644 index 1b6f2cb..0000000 --- a/greyhack/Checkpoint.src +++ /dev/null @@ -1,7 +0,0 @@ -metaxploit = include_lib("/lib/metaxploit.so") -if not metaxploit then - metaxploit = include_lib(current_path + "/metaxploit.so") -end if -if not metaxploit then exit("Error: Can't find metaxploit library in the /lib path or the current folder") -server = user_input("Enter IP of Rshell_server: ") -metaxploit.rshell_client(server,1222,"Terminal") \ No newline at end of file diff --git a/greyhack/crack.src b/greyhack/crack.src deleted file mode 100644 index 5a6e18a..0000000 --- a/greyhack/crack.src +++ /dev/null @@ -1,33 +0,0 @@ -cryptools = include_lib("/lib/crypto.so") -if not cryptools then - cryptools = include_lib(current_path + "/crypto.so") -end if -if not cryptools then exit("Error: Can't find crypto.so library in the /lib path or the current folder") - -GetPassword = function(hash) - return cryptools.decipher(hash) -end function - -if not params.len >= 1 then exit("No file Specified") -fileName = params[0] - -if fileName.len == 32 then exit(GetPassword(fileName)) - - - -file = get_shell.host_computer.File(current_path + fileName) -if not file then - file = get_shell.host_computer.File(fileName) -end if -if not file then exit("Error: File not found in current folder or at specified location") - -content = file.get_content.split("\n") -output = [] -for line in content - if line.len != 32 then output.push(line) - if line.len == 32 then output.push(GetPassword(line)) -end for - -for line in output - print(line) -end for \ No newline at end of file diff --git a/kernel3.7.7.src b/kernel3.7.7.src new file mode 100644 index 0000000..ce0171d --- /dev/null +++ b/kernel3.7.7.src @@ -0,0 +1,17 @@ +if params.len != 1 or params[0] == "-h" or params[0] == "--help" then exit("Usage: "+program_path.split("/")[-1]+" [ip_address]") +metaxploit = include_lib("/lib/metaxploit.so") + +if not metaxploit then + metaxploit = include_lib(current_path + "/metaxploit.so") +end if + +if not metaxploit then exit("Error: Can't find metaxploit library in the /lib path or the current folder") +address = params[0] +net_session = metaxploit.net_use( address ) + +if not net_session then exit("Error: can't connect to net session") +metaLib = net_session.dump_lib +result = metaLib.overflow("0x9F13BA6", "letefferrorif") + + +if not result then exit("Program ended") diff --git a/greyhack/kernel 3.3.1.src b/kernel_fetch_data.src similarity index 73% rename from greyhack/kernel 3.3.1.src rename to kernel_fetch_data.src index dbf0973..d929d14 100644 --- a/greyhack/kernel 3.3.1.src +++ b/kernel_fetch_data.src @@ -1,28 +1,41 @@ -if params.len != 1 or params[0] == "-h" or params[0] == "--help" then exit("Usage: "+program_path.split("/")[-1]+" [ip_address]") +if params.len < 4 or params[0] == "-h" or params[0] == "--help" then exit("Usage: "+program_path.split("/")[-1]+" [IP_Address] [Lan_IP] [Memory_Address] [Overflow_String]") + +routerip = params[0] +lanIp = params[1] +memory_Address = params[2] +overflow_String = params[3] + metaxploit = include_lib("/lib/metaxploit.so") if not metaxploit then metaxploit = include_lib(current_path + "/metaxploit.so") end if if not metaxploit then exit("Error: Can't find metaxploit library in the /lib path or the current folder") -address = params[0] -net_session = metaxploit.net_use( address ) + +net_session = metaxploit.net_use( routerip ) if not net_session then exit("Error: can't connect to net session") + libKernel = net_session.dump_lib libName = "kernel_router.so" print("Searching " + libName +" ...") if not libKernel then exit("Error: " + libName + " not found.") -lanIp = user_input("Enter a LAN address: ") -result = libKernel.overflow("0x6E65E4F8", "bledquotesizedela", lanIp) + +result = libKernel.overflow(memory_Address, overflow_String, lanIp) + typeObject = typeof(result) + +if(typeObject == "file") then + print(result.get_content) + exit("Error: expected computer, obtained " + typeObject) +end if + if(typeObject != "computer") then exit("Error: expected computer, obtained " + typeObject) passwd = result.File("/etc/passwd") - -if not passwd then - print("Passwd not found.") +print("\n------PASSWD------") +if not passwd or passwd.get_content == null then + print("Passwd not found. \n") else - print("------PASSWD------") users = passwd.get_content.split("\n") for line in users if not line then continue diff --git a/libbindb.src b/libbindb.src new file mode 100644 index 0000000..b8b6cef --- /dev/null +++ b/libbindb.src @@ -0,0 +1,275 @@ +// BinDB +// author: Damdrara +// original author: tuonux (https://github.com/tuonux/gh-bindb) +// version: 1.0.0 +// +// repository: https://github.com/Damdrara/gh-bindb +// documentation: https://github.com/Damdrara/gh-bindb/README.md +// + +// +// Core BinDB instance +// in your source code you need to import it with import_code method +// +// Example Usage: +// +// import_code("/path/to/libbindb.src") +// +BinDB = {} +// +// Instantiate the connection with your binary database +// +// dbName: the name of your database. Default is: BinDB +// dbPassword: the password of you binary database. Default is: admin +// dbTables: array with the keys of the tables. Example: ["users", "mails", "banks"]. Default is: ["table"] +// dbPath: the path of your database. Example: /home/. +// * if empty the database will be generated in your project directory +// Example Usage: +// +// mrRobotDb = BinDB.connect("employeers", "mypassword", ["users", "mails", "banks"], "/home/") +// +BinDB.connect = function(dbName="BinDB", dbPassword="admin", dbTables=["table"], dbPath = "") + self.name = dbName + self.password = dbPassword + self.dbTables = dbTables + if dbPath == "" then dbPath = current_path + self.path = dbPath + "/" + self.name + ".db" + self.path = self.path.replace("//", "/") + self.folder = self.path.split("/")[0:-1].join("/") + self.tables = {} + self.read() + return self +end function +// +// Push the new data in your table +// +// table: a string with the name of the table that to want to fetch +// data: a map with the new data. Example {"name": "Elliot", "surname": "Alderson"} +// +// Example Usage: +// +// mrRobotDb.insert("users", {"name": "Elliot", "surname": "Alderson"}) +// mrRobotDb.insert("users", {"name": "Tyrell", "surname": "Wellick"}) +// mrRobotDb.insert("users", {"name": "Angela", "surname": "Moss"}) +// mrRobotDb.insert("users", {"name": "Joanna", "surname": "Olofsson"}) +// mrRobotDb.insert("users", {"name": "Gideon", "surname": "Goddard"}) +// +BinDB.insert = function(table, data) + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + self.tables[table].push(data) + return self +end function +// +// Fetch all the rows of your table +// +// table: a string with the name of the table that to want to fetch +// +// Example Usage: +// +// for user in mrRobotDb.fetch("users") +// print(user.name) +// end for +// +// then print: +// +// Elliot +// Tyrell +// Angela +// Joanna +// Gideon +// +BinDB.fetch = function(table="") + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + return self.tables[table] + return self +end function +// +// Fetch a row by the index +// +// table: a string with the name of the table that to want to fetch +// id: an integer with the id that you want to get. Ids starts from 1 +// +// Example Usage: +// +// userElliot = mrRobotDb.fetchOne("users", 1) +// +// then returns: +// +// {"name": "Elliot", "surname": "Alderson"} +// +BinDB.fetchOne = function(table = "", id = 0) + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + if not self.tables[table].hasIndex(id-1) then return print("ID not found in table " + table) + return self.tables[table][id-1] + return self +end function +// +// Fetch a row by a combination of key -> value +// +// table: a string with the name of the table that to want to fetch +// key: a string with key that you want to filter +// value: a string with the value that you want to filter +// +// Example Usage: +// +// userElliot = mrRobotDb.fetchBy("users", "name", "Elliot") +// +// then returns: +// +// {"name": "Elliot", "surname": "Alderson"} +// +BinDB.fetchBy = function(table = "", key = "", value = "") + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + newArray = [] + for v in self.tables[table] + if v.hasIndex(key) and v[key] == value then newArray.push(v) + end for + return newArray + return self +end function +// +// Update a row by the index +// +// table: a string with the name of the table that to want to fetch +// id: an integer with the id that you want to get. Ids starts from 1 +// +// Example Usage: +// +// mrRobotDb.update("users", 1, {"name": "Mr.", "surname": "Robot"}) +// +BinDB.update = function(table="", id=0, data=null) + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + if not self.tables[table].hasIndex(id) then return print("ID not found in table " + table) + if not data or typeof(data) != "map" then print("data must be a map") + self.tables[table][id-1] = data + return self +end function +// +// Delete a row by the index +// +// table: a string with the name of the table that to want to fetch +// id: an integer with the id that you want to get. Ids starts from 1 +// +// Example Usage: +// +// mrRobotDb.delete("users", 5) +// +BinDB.delete = function(table="", id=0) + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + if not self.tables[table].hasIndex(id-1) then return print("ID not found in table " + table) + newArray = [] + for k in self.tables[table].indexes + if k == id-1 then continue + newArray.push(self.tables[table][k]) + end for + self.tables[table] = newArray + return self +end function +// +// Read binary buffer ( used in rare case ) +// +// mrRobotDb.read() +// +BinDB.read = function() + for s in self.dbTables + self.tables[s] = [] + end for + self.binaryDbFile = get_shell.host_computer.File(self.path) + if not self.binaryDbFile then return + get_shell.launch(self.path, self.password) + if get_custom_object.hasIndex("BinDB") and get_custom_object.BinDB.hasIndex(self.name) then self.tables = get_custom_object.BinDB[self.name] + return self +end function +// +// Update binary database buffer +// +// Example Usage: +// +// mrRobotDb.write() +// +BinDB.write = function() + randomName = md5(rnd() + current_date)[0:6] + randomSrc = randomName + ".tmp" + randomFullPath = self.folder + "/" + randomSrc + get_shell.host_computer.touch(self.folder, randomSrc) + randomFile = get_shell.host_computer.File(randomFullPath) + randomFile.chmod("o-rwx") + randomFile.chmod("g-rwx") + randomFile.chmod("g+r") + dbBinaryContent = [] + dbBinaryContent.push("if params.len == 0 then exit(""\nThis is a binary database generated by BinDB Library\nInfo: https://github.com/tuonux/gh-bindb\n"")") + hashPass = md5(self.password) + dbBinaryContent.push("if md5(params[0]) != (""" + hashPass + """) then exit(""Permission denied"")") + dbBinaryContent.push("if not get_custom_object.hasIndex(""BinDB"") then") + dbBinaryContent.push(" get_custom_object[""BinDB""] = {}") + dbBinaryContent.push("end if") + dbBinaryContent.push("get_custom_object[""BinDB""]["""+self.name+"""] = {}") + for table in self.tables + dbBinaryContent.push("get_custom_object[""BinDB""]["""+self.name+"""]["""+table.key+"""] = []") + for row in table.value + dbBinaryContent.push("get_custom_object[""BinDB""]["""+self.name+"""]["""+table.key+"""].push("+@row+")") + end for + end for + randomFile.set_content(dbBinaryContent.join(char(10))) + x = get_shell.build(randomFullPath, self.folder, false) + self.binaryDbFile = get_shell.host_computer.File(self.path) + if self.binaryDbFile then self.binaryDbFile.delete + get_shell.host_computer.File(self.folder + "/" + randomName).rename(self.name + ".db") + randomFile.delete + self.read() + return self +end function +// +// Clear and delete the database +// +// Example Usage: +// +// mrRobotDb.wipe() +// +// +BinDB.wipe = function() + self.binaryDbFile = get_shell.host_computer.File(self.path) + if self.binaryDbFile then self.binaryDbFile.delete + self.read() +end function +// +// Utility function that print your table with formatted columns +// +// table: a string with the name of the table that to want to fetch +// labels: an map object that contain the labels of your row keyes +// +// Example Usage: +// +// mrRobotDb.printTable("users", {"name": "Name", "surname": "Surname"}) +// +// then print: +// +// # Name Surname +// 1 Mr. Robot +// 2 Tyrell Wellick +// 3 Angela Moss +// 4 Joanna Olofsson +// +BinDB.printTable = function(table="", labels = {}) + if self.tables.indexes.indexOf(table) == null then return print("Table " + table + " not found") + if self.tables[table].len == 0 then return null + out = [] + columns = ["#"] + for k in self.tables[table][0].indexes + label = str(k) + if labels.hasIndex(k) then label = labels[k] + columns.push(label.replace(" ", char(160))) + end for + out.push(columns.join(" ")) + i = 0 + for s in self.tables[table] + i = i + 1 + row = [str(i)] + for k in s.values + row.push(str(k).replace(" ", char(160))) + end for + out.push(row.join(" ")) + end for + print(format_columns(out.join("\n"))) + return self +end function \ No newline at end of file diff --git a/nmap.src b/nmap.src new file mode 100644 index 0000000..47f47bd --- /dev/null +++ b/nmap.src @@ -0,0 +1,23 @@ +import_code("/root/myprogram") + +if params.len == 0 then exit("Usage: nmap [IP]") + +target_ip = params[0] +if not is_valid_ip(target_ip) then exit(target_ip + " is not a valid ip") + +if nslookup(target_ip) == "Not found" then + exit("That domain is not valid.") +end if + +target_router = get_router(target_ip) +target_ports = target_router.used_ports + +column = "Number Type Version IP" + column = column + "\n" + "0" + " " + "kernel_router" + " " + target_router.kernel_version + " " + target_router.local_ip +for port in target_ports + column = column + "\n" + port.port_number + " " + target_router.port_info(port) + " " + port.get_lan_ip +end for + +print("\nIP Address : " + target_ip) +print(format_columns(column)) +