⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http_trace.nasl

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 NASL
字号:
## (C) 2002 Michel Arboi <arboi@alussinan.org>## HTTP/1.1 is defined by RFC 2068## Check for proxy on the way (transparent or reverse?!)#if(description){ script_id(11040); script_version ("$Revision: 116 $");  name["english"] = "HTTP TRACE"; name["francais"] = "TRACE HTTP"; script_name(english:name["english"], francais:name["francais"]);  desc["english"] = "Transparent or reverse HTTP proxies may be implement on some sites.Risk factor : None"; desc["francais"] = "Des proxys HTTP transparent ou 'reverse' sont susceptibles d'阾re install閟 sur certains sites.Risque: aucun"; script_description(english:desc["english"], francais:desc["francais"]);  summary["english"] = "Look for an HTTP proxy on the way"; summary["francais"] = "Cherche un proxy HTTP sur le chemin";  script_summary(english:summary["english"], francais:summary["francais"]); script_category(ACT_GATHER_INFO);   script_copyright(english:"This script is Copyright (C) 2002 Michel Arboi",		francais:"Ce script est Copyright (C) 2002 Michel Arboi"); family["english"] = "General"; script_family(english:family["english"]); # script_dependencie("find_service.nes", "httpver.nasl"); script_dependencie("find_service.nes"); script_require_ports("Services/www", 80); exit(0);}#include("http_func.inc");port = get_http_port(default:80);if (!get_port_state(port)) exit(0);soc = open_sock_tcp(port);if (!soc) exit(0);req = http_get(port: port, item: "/");send(socket: soc, data: req);heads = http_recv_headers2(socket:soc);via = egrep(pattern: "^Via: ", string: heads);trace="";if (via){  # display(via);  via=ereg_replace(string: via, pattern: "^Via: *", replace:"");  via=via-string("\r\n");  while(via)  {    # display("Via=", via, "\n");    proxy = ereg_replace(string:via, pattern: " *([^,]*),?.*", replace: "\1");    via = ereg_replace(string: via, pattern: "([^,]*)(, *)?(.*)", replace: "\3");    # display(string("Proxy=", proxy, " - Via=", via, "\n"));    proto = ereg_replace(string:proxy, 		pattern:"^([a-zA-Z0-9_-]*/?[0-9.]+) +.*",		replace: "\1");    line = ereg_replace(string:proxy, 		pattern:"^([a-zA-Z0-9_-]*/?[0-9.]+) *(.*)",		replace: "\2");    # display(string("Proto=", proto, "\nLine=", line, "\n"));    if (egrep(pattern:"^[0-9]+", string: proto))      proto = "HTTP/" + proto;    trace = trace + proto;    l = strlen(proto);    for (i= l;i < 12; i=i+1) trace=trace+" ";    trace=string(trace, " ", line, "\n");  }}close(soc);if (trace)  security_note(port: port, data: string("The GET method revealed those proxies on the way to this web server :\n", trace));else if (egrep(pattern: "^X-Cache:", string: heads)){  p = ereg_replace(pattern:'^X-Cache: *[A-Z]+ +from +([^ \t\r\n]+)[ \t\r\n]+',	string: heads, replace: "\1");  r = 'There might be a caching proxy on the way to this web server';  if (p != heads) r = strcat(r, ':\n', p);  security_note(port: port, data: r);}exit(0); # broken at this time#ver=get_kb_item(string("http/", port));if ((ver == "10") || (ver == "09")) exit(0);	# No TRACE in HTTP/1.0n=0;for (i=0; i<99;i=i+1){  soc = open_sock_tcp(port);  if (soc)  {    req=string("TRACE / HTTP/1.1\r\nHost: ", get_host_name(), 	"\r\nUser-Agent: OpenVAS\r\nMax-Forwards: ", i,	"\r\n\r\n");    send(socket: soc, data: req);    buf = http_recv_headers2(socket:soc);    #    via = egrep(pattern: "^Via: ", string: buf);    if (via)    {      via = ereg_replace(string: via, pattern: "^Via: *", replace:"");      viaL[i] = via - string("\r\n");# display(string("V[", i, "]=", viaL[i], "\n"));    }    else      viaL[i] = string("?");    #    if (egrep(string: buf, pattern: "^HTTP/.* 200 "))    {      buf2 = recv_line(socket: soc, length: 2048);      # The proxy is supposed to send back the request it got.       # i.e. "TRACE / HTTP/1.1"      # However, NetCache appliance change it to "TRACE http://srv HTTP/1.1"      if (egrep(pattern: "^TRACE (/|http://.*) HTTP/1.1", string: buf2))      {        srv = egrep(pattern: "^Server: ", string: buf);        if (srv)        {          srv = ereg_replace(string: srv, pattern: "^Server: *", replace:"");          srvL[i+1] = srv - string("\r\n");# display(string("S[", i+1, "]=", srvL[i+1], "\n"));        }        else          srvL[i+1] = string("?");        n=n+1;      }    }    else      i=9999;#    close(soc);  }  else    i = 9999;}  trace="";for (i = 1; i <= n; i = i+1){  trace=string(trace, viaL[i]," - ", srvL[i], "\n");}if (n > 0)  security_note(port:port, protocol:"tcp",	data:string("The TRACE method revealed ", n, 	" proxy(s) between us and the web server :\n",	trace,"\nRisk factor : None"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -