From 13299b04bb1be6543115da5e6c13f8a1eb434263 Mon Sep 17 00:00:00 2001 From: ricok Date: Fri, 21 Feb 2025 19:02:58 +0100 Subject: [PATCH] Mergded database function. Scanner now function. nmap added to util. Commands.src created. --- scanner/commands.src | 0 scanner/database.src | 110 ++++++++++++++++++++++- scanner/{ => old}/database_export.src | 0 scanner/{ => old}/database_fetch.src | 0 scanner/{ => old}/database_fetch_all.src | 0 scanner/{ => old}/database_fetch_ip.src | 1 + scanner/scanner.src | 16 ++-- scanner/util_import.src | 24 +++++ tool/nmap.src | 12 +-- 9 files changed, 146 insertions(+), 17 deletions(-) create mode 100644 scanner/commands.src rename scanner/{ => old}/database_export.src (100%) rename scanner/{ => old}/database_fetch.src (100%) rename scanner/{ => old}/database_fetch_all.src (100%) rename scanner/{ => old}/database_fetch_ip.src (97%) diff --git a/scanner/commands.src b/scanner/commands.src new file mode 100644 index 0000000..e69de29 diff --git a/scanner/database.src b/scanner/database.src index 9a77f62..90485f8 100644 --- a/scanner/database.src +++ b/scanner/database.src @@ -1,11 +1,14 @@ +// import_code("/dev/scanner/util_import.src") +// import_code("/dev/scanner/libbindb.src") + // connect to database database = function() - myDB = BinDB.connect("vuln", "ukBfZkFwR2mutQItMD7Q9KQbUaoIIFo4vZqa3HtUtf1JcSOQbV", ["kernel_router.so", "libssh.so", "libftp.so","libsql.so","libsmtp.so","libhttp.so","libcam.so","librepository.so"], "/database") + return BinDB.connect("vuln", "ukBfZkFwR2mutQItMD7Q9KQbUaoIIFo4vZqa3HtUtf1JcSOQbV", ["kernel_router.so", "libssh.so", "libftp.so","libsql.so","libsmtp.so","libhttp.so","libcam.so","librepository.so"], "/database") end function // insert exploit with check if it already exists. // TODO: Add option to update missing data (requirments) -insertVuln = function(libName,libVersion,memAdress,keyValue,requirments,object,priv) +insertVuln = function(libName,libVersion,memAdress,keyValue,object,priv) data = myDB.fetchBy(libName, "version", libVersion) if data.len != 0 then for entry in data @@ -18,3 +21,106 @@ insertVuln = function(libName,libVersion,memAdress,keyValue,requirments,object,p myDB.insert(libName, {"version": libVersion, "memory_adress": memAdress, "key_value": keyValue, "object": object, "privilege": priv}) myDB.write() end function + +dbExport = function() + export = "/database/export" + + computer = get_shell.host_computer + + file = computer.File(export + "/export.txt") + if(file) then file.delete + + kernel = myDB.fetch("kernel_router.so") + ssh = myDB.fetch("libssh.so") + ftp = myDB.fetch("libftp.so") + sql = myDB.fetch("libsql.so") + smtp = myDB.fetch("libsmtp.so") + http = myDB.fetch("libhttp.so") + cam = myDB.fetch("libcam.so") + repo = myDB.fetch("librepository.so") + + touch(computer,export,"export.txt") + file = computer.File(export + "/export.txt") + + + + file.set_content(file.get_content() + "kernel: " + kernel + char(10)) + file.set_content(file.get_content() + "ssh: " + ssh + char(10)) + file.set_content(file.get_content() + "ftp: " + ftp + char(10)) + file.set_content(file.get_content() + "sql: " + sql + char(10)) + file.set_content(file.get_content() + "smtp: " + smtp + char(10)) + file.set_content(file.get_content() + "http: " + http + char(10)) + file.set_content(file.get_content() + "cam: " + cam + char(10)) + file.set_content(file.get_content() + "repo: " + repo + char(10)) +end function + +dbFetchAll = function() + + print("kernel_router.so") + myDB.printTable("kernel_router.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libssh.so") + myDB.printTable("libssh.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libftp.so") + myDB.printTable("libftp.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libsql.so") + myDB.printTable("libsql.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libsmtp.so") + myDB.printTable("libsmtp.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libhttp.so") + myDB.printTable("libhttp.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("libcam.so") + myDB.printTable("libcam.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + print("librepository.so") + myDB.printTable("librepository.so",{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + +end function + + +dbFetchLib = function(table,release) + + myDB.printTableBy(table,"version",release,{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + +end function + +dbFetchTarget = function(target_ip) + + + target_ip = webToIp(target_ip) + if(target_ip == 1) then exit("Invalid IP/Web Address") + + target_router = get_router(target_ip) + target_ports = target_router.used_ports + + router_data = [] + router_data.push({"port":"0", "port_info":"kernel_router", "port_info": target_router.kernel_version, "lan_ip":target_router.local_ip}) + for port in target_ports + router_data.push({"port":port.port_number,"port_info":target_router.port_info(port),"lan_ip":port.get_lan_ip}) + end for + + lib = [] + + for item in router_data + known = false + for i in lib + if(item.port_info == i) then known = true + end for + if not known then lib.push(item) + end for + + print("Kernel_router.so") + myDB.printTableBy("kernel_router.so","version",router_data[0].port_info,{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + + lib.pull + for item in lib + data = item.port_info.split(" ") + + if(data[0] == "criminals") then data[0] = "sql" + if(data[0] == "employees") then data[0] = "sql" + if(data[0] == "employees") then data[0] = "sql" + if(data[0] == "bank_account") then data[0] = "sql" + if(data[0] == "students") then data[0] = "sql" + print("lib" + data[0] + ".so") + myDB.printTableBy("lib" + data[0] + ".so","version",data[1],{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) + end for + +end function \ No newline at end of file diff --git a/scanner/database_export.src b/scanner/old/database_export.src similarity index 100% rename from scanner/database_export.src rename to scanner/old/database_export.src diff --git a/scanner/database_fetch.src b/scanner/old/database_fetch.src similarity index 100% rename from scanner/database_fetch.src rename to scanner/old/database_fetch.src diff --git a/scanner/database_fetch_all.src b/scanner/old/database_fetch_all.src similarity index 100% rename from scanner/database_fetch_all.src rename to scanner/old/database_fetch_all.src diff --git a/scanner/database_fetch_ip.src b/scanner/old/database_fetch_ip.src similarity index 97% rename from scanner/database_fetch_ip.src rename to scanner/old/database_fetch_ip.src index 25b5f8c..d377644 100644 --- a/scanner/database_fetch_ip.src +++ b/scanner/old/database_fetch_ip.src @@ -38,6 +38,7 @@ for item in lib if(data[0] == "employees") then data[0] = "sql" if(data[0] == "employees") then data[0] = "sql" if(data[0] == "bank_account") then date[0] = "sql" + if(data[0] == "students") then data[0] = "sql" print("lib" + data[0] + ".so") myDB.printTableBy("lib" + data[0] + ".so","version",data[1],{"version": "Version", "memory_adress": "Memory Address", "key_value": "key Value", "object": "Object", "privilege": "Privilege"}) end for \ No newline at end of file diff --git a/scanner/scanner.src b/scanner/scanner.src index 5988584..d161e23 100644 --- a/scanner/scanner.src +++ b/scanner/scanner.src @@ -1,8 +1,6 @@ -// import Database/functions -// comment out if importing -import_code("/dev/scanner/libbindb.src") -import_code("/dev/scanner/database.src") -import_code("/dev/scanner/util_import.src") +// import_code("/dev/scanner/libbindb.src") +// import_code("/dev/scanner/database.src") +// import_code("/dev/scanner/util_import.src") // Trying to figure out what privileges the connected user has by checking what permissions are avaiable on commen files. // TODO: Needs confirming, initial tests seem correct. @@ -61,6 +59,7 @@ scanner = function(target_ip) metaxploit = mxploit() + print(target_ip) target_ip = webToIp(target_ip) if(target_ip == 1) then exit("Invalid IP") @@ -83,7 +82,6 @@ scanner = function(target_ip) end function //comment out if using as import - -if params.len == 0 then exit("Usage: scanner [IP/WEB_Address]") -myDB = database() -scanner(params[0]) \ No newline at end of file +//if params.len == 0 then exit("Usage: scanner [IP/WEB_Address]") +//myDB = database() +//scanner(params[0]) \ No newline at end of file diff --git a/scanner/util_import.src b/scanner/util_import.src index 0f30d81..58c858c 100644 --- a/scanner/util_import.src +++ b/scanner/util_import.src @@ -28,3 +28,27 @@ webToIp = function(target) return target end function +nmap = function(target_ip, echo) + + target_ip = webToIP(target_ip) + + target_router = get_router(target_ip) + target_ports = target_router.used_ports + + router_data = [] + column = "Number Type Version IP" + column = column + "\n" + "0" + " " + "kernel_router" + " " + target_router.kernel_version + " " + target_router.local_ip + router_data.push({"port":"0", "port_info":"kernel_router", "port_info": target_router.kernel_version, "lan_ip":target_router.local_ip}) + for port in target_ports + column = column + "\n" + port.port_number + " " + target_router.port_info(port) + " " + port.get_lan_ip + router_data.push({"port":port.port_number,"port_info":target_router.port_info(port),"lan_ip":port.get_lan_ip}) + end for + + if(echo == true) then + print("\nIP Address : " + target_ip) + print(format_columns(column)) + end if + + return router_data + +end function \ No newline at end of file diff --git a/tool/nmap.src b/tool/nmap.src index b1a3c59..2b8f4ba 100644 --- a/tool/nmap.src +++ b/tool/nmap.src @@ -1,6 +1,4 @@ -nmap = function(target_ip) - - target_ip = params[0] +nmap = function(target_ip, echo) if not (is_valid_ip(target_ip)) then target_ip = nslookup(target_ip) @@ -20,9 +18,11 @@ nmap = function(target_ip) router_data.push({"port":port.port_number,"port_info":target_router.port_info(port),"lan_ip":port.get_lan_ip}) end for - print("\nIP Address : " + target_ip) - print(format_columns(column)) - + if(echo == true) then + print("\nIP Address : " + target_ip) + print(format_columns(column)) + end if + return router_data end function \ No newline at end of file