Lucene search

K
nmapPatrik KarlssonNMAP:VERSANT-INFO.NSE
HistoryMar 08, 2012 - 5:51 p.m.

versant-info NSE Script

2012-03-0817:51:48
Patrik Karlsson
nmap.org
76

9.8 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

HIGH

Integrity Impact

HIGH

Availability Impact

HIGH

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

10 High

CVSS2

Access Vector

NETWORK

Access Complexity

LOW

Authentication

NONE

Confidentiality Impact

COMPLETE

Integrity Impact

COMPLETE

Availability Impact

COMPLETE

AV:N/AC:L/Au:N/C:C/I:C/A:C

0.973 High

EPSS

Percentile

99.8%

Extracts information, including file paths, version and database names from a Versant object database.

Example Usage

nmap -p 5019 <ip> --script versant-info

Script Output

PORT     STATE SERVICE REASON
5019/tcp open  versant syn-ack
| versant-info:
|   Hostname: WIN-S6HA7RJFAAR
|   Root path: C:\Versant\8
|   Database path: C:\Versant\db
|   Library path: C:\Versant\8
|   Version: 8.0.2
|   Databases
|     FirstDB@WIN-S6HA7RJFAAR:5019
|       Created: Sat Mar 03 12:00:02 2012
|       Owner: Administrator
|       Version: 8.0.2
|     SecondDB@WIN-S6HA7RJFAAR:5019
|       Created: Sat Mar 03 03:44:10 2012
|       Owner: Administrator
|       Version: 8.0.2
|     ThirdDB@WIN-S6HA7RJFAAR:5019
|       Created: Sun Mar 04 02:20:21 2012
|       Owner: Administrator
|_      Version: 8.0.2

Requires


local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
local table = require "table"
local versant = require "versant"

description = [[
Extracts information, including file paths, version and database names from
a Versant object database.
]]

---
-- @usage
-- nmap -p 5019 <ip> --script versant-info
--
-- @output
-- PORT     STATE SERVICE REASON
-- 5019/tcp open  versant syn-ack
-- | versant-info:
-- |   Hostname: WIN-S6HA7RJFAAR
-- |   Root path: C:\Versant\8
-- |   Database path: C:\Versant\db
-- |   Library path: C:\Versant\8
-- |   Version: 8.0.2
-- |   Databases
-- |     FirstDB@WIN-S6HA7RJFAAR:5019
-- |       Created: Sat Mar 03 12:00:02 2012
-- |       Owner: Administrator
-- |       Version: 8.0.2
-- |     SecondDB@WIN-S6HA7RJFAAR:5019
-- |       Created: Sat Mar 03 03:44:10 2012
-- |       Owner: Administrator
-- |       Version: 8.0.2
-- |     ThirdDB@WIN-S6HA7RJFAAR:5019
-- |       Created: Sun Mar 04 02:20:21 2012
-- |       Owner: Administrator
-- |_      Version: 8.0.2
--


author = "Patrik Karlsson"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"discovery", "safe"}

portrule = shortport.port_or_service(5019, "versant", "tcp")

local function fail(err) return stdnse.format_output(false, err) end

action = function(host, port)

  local v = versant.Versant:new(host, port)
  local status = v:connect()
  if ( not(status) ) then
    return fail("Failed to connect to server")
  end

  local status, newport = v:getObePort()
  if ( not(status) ) then
    return fail("Failed to retrieve OBE port")
  end
  v:close()

  v = versant.Versant.OBE:new(host, newport)
  status = v:connect()
  if ( not(status) ) then
    return fail("Failed to connect to server")
  end

  local result
  status, result = v:getVODInfo()
  if ( not(status) ) then
    return fail("Failed to get VOD information")
  end
  v:close()

  local output = {}

  table.insert(output, ("Hostname: %s"):format(result.hostname))
  table.insert(output, ("Root path: %s"):format(result.root_path))
  table.insert(output, ("Database path: %s"):format(result.db_path))
  table.insert(output, ("Library path: %s"):format(result.lib_path))
  table.insert(output, ("Version: %s"):format(result.version))

  port.version.product = "Versant Database"
  port.version.name = "versant"
  nmap.set_port_version(host, port)

  -- the script may fail after this part, but we want to report at least
  -- the above information if that's the case.

  v = versant.Versant:new(host, port)
  status = v:connect()
  if ( not(status) ) then
    return stdnse.format_output(true, output)
  end

  status, result = v:getNodeInfo()
  if ( not(status) ) then
    return stdnse.format_output(true, output)
  end
  v:close()

  local databases = { name = "Databases" }

  for _, db in ipairs(result) do
    local db_tbl = { name = db.name }
    table.insert(db_tbl, ("Created: %s"):format(db.created))
    table.insert(db_tbl, ("Owner: %s"):format(db.owner))
    table.insert(db_tbl, ("Version: %s"):format(db.version))
    table.insert(databases, db_tbl)
  end

  table.insert(output, databases)
  return stdnse.format_output(true, output)
end

9.8 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

HIGH

Integrity Impact

HIGH

Availability Impact

HIGH

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

10 High

CVSS2

Access Vector

NETWORK

Access Complexity

LOW

Authentication

NONE

Confidentiality Impact

COMPLETE

Integrity Impact

COMPLETE

Availability Impact

COMPLETE

AV:N/AC:L/Au:N/C:C/I:C/A:C

0.973 High

EPSS

Percentile

99.8%

Related for NMAP:VERSANT-INFO.NSE