Check for received packet in rpc-grind.nse.

The script was checking the returned data, but not the status. When
status is false, data is actually an error message. So in case of a
timeout, the script was receiving nil, "TIMEOUT" and interpreting
"TIMEOUT" as a response from the server. It looked like this:

Discovered open port 1434/udp on 127.0.0.1
NSE: rpc-grind: RPC checking function response data is not RPC.
NSE: Target port 1434 is not a RPC port.

This was reported by Christopher Clements.
http://seclists.org/nmap-dev/2012/q3/685
This commit is contained in:
david 2012-09-11 00:39:04 +00:00
parent ef5205b798
commit ba88cb4f5d
2 changed files with 6 additions and 2 deletions

View file

@ -1,5 +1,9 @@
# Nmap Changelog ($Id$); -*-text-*-
o [NSE] Fixed a bug in rpc-grind.nse that would cause unresponsive UDP
ports to be wrongly marked open. This was reported by Christopher
Clements. [David Fifield]
o [Ncat] Close connection endpoint when receiving EOF on stdin. [Michal Hlavinka].
o Fixed interface listing on NetBSD. The bug was first noticed by

View file

@ -88,8 +88,8 @@ local isRPC = function(host, port)
end
-- And check response
_, data = rpcConn:ReceivePacket()
if not data then
status, data = rpcConn:ReceivePacket()
if not status then
stdnse.print_debug("%s: isRPC didn't receive response.", SCRIPT_NAME)
return
else