[Openvas-commits] r2835 - trunk/openvas-plugins/scripts
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Wed Mar 18 22:24:07 CET 2009
Author: edjenguele
Date: 2009-03-18 22:24:02 +0100 (Wed, 18 Mar 2009)
New Revision: 2835
Modified:
trunk/openvas-plugins/scripts/remote-detect-MSdotNET-version.nasl
Log:
Fix Regex for version handling : thanks to Chandra for that regex :)
TODO:
* some script that I've committed use this plugin as a dependency
as they report the vulnerability based on the exact version of .net
and this script report the complete exact version string.
* use the revisions-lib.inc by Thomas Reinke to compare these versions string
Modified: trunk/openvas-plugins/scripts/remote-detect-MSdotNET-version.nasl
===================================================================
--- trunk/openvas-plugins/scripts/remote-detect-MSdotNET-version.nasl 2009-03-18 13:42:27 UTC (rev 2834)
+++ trunk/openvas-plugins/scripts/remote-detect-MSdotNET-version.nasl 2009-03-18 21:24:02 UTC (rev 2835)
@@ -70,49 +70,50 @@
include("misc_func.inc");
include("http_func.inc");
+include("http_keepalive.inc");
-iis_servers = get_kb_list("Services/www");
# request a non existant random page
-# test page in browser: http://www.camstar.com/000111222.aspx
-
-page = string(rand() + '.aspx');
+page = string(rand() + ".aspx");
-foreach port (iis_servers)
-{
- soc = open_sock_tcp(port);
- qry = strcat('GET /' , page , ' HTTP/1.0\r\n\r\n');
-
- req = http_get(item:qry, port:port);
- send(socket:soc, data:req);
+port = get_http_port(default:80);
+
+request = string(
+ "GET /", page, " HTTP/1.0\r\n",
+ "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; OpenVAS)\r\n",
+ "Accept-Language: en-us,en;q=0.5\r\n",
+ "Keep-Alive: 300\r\n",
+ "Connection: keep-alive\r\n",
+ "Content-Type: application/x-www-form-urlencoded\r\n\r\n"
+ );
+
+
# Get back the response
- reply = recv(socket:soc, length:1204);
+ response = http_keepalive_send_recv(port:port, data:request, bodyonly:1);
+ report = '';
# Get the ASP.NET Microsoft .Net Framework version
- # a tipical response from test page above
+ # a response example:
# Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433
- dotNet_header = egrep(pattern:"Microsoft .NET Framework Version:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)", string:reply, icase:TRUE);
- aspNet_header = egrep(pattern:"ASP.NET Version:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)", string:reply, icase:TRUE);
+ dotNet_header = eregmatch(pattern:"Microsoft .NET Framework Version:([0-9.]+)",string:response, icase:TRUE);
+ aspNet_header = eregmatch(pattern:"ASP.NET Version:([0-9.]+)",string:response, icase:TRUE);
- if(('Version Information' >< response) && dotNet_header)
- dotnetversion = ereg_replace(string:response, pattern:dotNet_header,"\1");
- report = "Detected Microsoft .NET Framework version: " + dotnetversion;
+ if(('Version Information' >< response) && dotNet_header){
+ report = "OpenVAS was able to Detected " + dotNet_header[0];
+
+ # save informations into the kb
+ set_kb_item(name:"dotNET/install", value:TRUE);
+ set_kb_item(name:"dotNET/port", value:port);
+ set_kb_item(name:"dotNet/version", value:dotNet_header[1]);
+ }
- if(aspNET_header)
- aspnetversion = ereg_replace(string:response, pattern:aspNet_header,"\1");
- report += "Detected ASP .NET version: " + aspnetversion;
+ if(aspNET_header >< response){
+ report += " and " + aspNet_header[0];
# save informations into the kb
- set_kb_item(name:"dotNET/installed", value:TRUE);
set_kb_item(name:"aspNET/installed", value:TRUE);
- set_kb_item(name:"dotNET/version", value:dotnetversion);
- set_kb_item(name:"aspNET/version", value:aspnetversion);
- set_kb_item(name:"dotNET/port", value:port);
-
- # report all gathered informations
- security_note(port:port, data:report);
-
-
-}
-
+ set_kb_item(name:"aspNET/version", value:aspNet_header[1]);
+ }
+ # report all gathered informations
+ security_note(port:port, data:report);
More information about the Openvas-commits
mailing list