mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 12:41:29 +00:00
75 lines
1.7 KiB
Lua
75 lines
1.7 KiB
Lua
description = [[
|
|
Attempts to get tables from a MongoDB
|
|
]]
|
|
|
|
---
|
|
-- @usage
|
|
-- nmap -p 27017 --script mongodb-get-tables-query <host>
|
|
-- @output
|
|
-- PORT STATE SERVICE REASON
|
|
-- 27017/tcp open unknown syn-ack
|
|
-- | mongodb-get-tables-query:
|
|
-- | ok = 1
|
|
-- | databases
|
|
-- | 1
|
|
-- | empty = false
|
|
-- | sizeOnDisk = 83886080
|
|
-- | name = test
|
|
-- | 0
|
|
-- | empty = false
|
|
-- | sizeOnDisk = 83886080
|
|
-- | name = httpstorage
|
|
-- | 3
|
|
-- | empty = true
|
|
-- | sizeOnDisk = 1
|
|
-- | name = local
|
|
-- | 2
|
|
-- | empty = true
|
|
-- | sizeOnDisk = 1
|
|
-- | name = admin
|
|
-- |_ totalSize = 167772160
|
|
--@version 0.1
|
|
-- Created 01/12/2010 - v0.1 - created by Martin Holst Swende <martin@swende.se>
|
|
|
|
|
|
author = "Martin Holst Swende"
|
|
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
|
categories = {"default", "discovery", "safe"}
|
|
|
|
require "mongodb"
|
|
require "shortport"
|
|
|
|
portrule = shortport.port_or_service({27017}, {"mongodb"})
|
|
function action(host,port)
|
|
|
|
local socket = nmap.new_socket()
|
|
|
|
-- set a reasonable timeout value
|
|
socket:set_timeout(10000)
|
|
-- do some exception / cleanup
|
|
local catch = function()
|
|
socket:close()
|
|
end
|
|
|
|
local try = nmap.new_try(catch)
|
|
|
|
try( socket:connect(host.ip, port.number, "tcp") )
|
|
|
|
local req, result, packet, err, status
|
|
--Build packet
|
|
status, packet = mongodb.listDbQuery()
|
|
if not status then return result end-- Error message
|
|
|
|
--- Send packet
|
|
status, result = mongodb.query(socket, packet)
|
|
if not status then return result end-- Error message
|
|
|
|
local output = mongodb.queryResultToTable(result)
|
|
if err ~= nil then
|
|
stdnse.log_error(err)
|
|
end
|
|
if result ~= nil then
|
|
return stdnse.format_output(true, output )
|
|
end
|
|
end
|