网络扫描:Web服务
Web服务一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文件,也可以放置网站文件和数据文件,让用户浏览和下载。其中,最常见的Web服务有AJP和ASP.NET等。本文介绍对这些Web服务进行扫描的方法。
1. AJP服务
AJP服务是基于TCP协议工作的服务,其工作在TCP的8009端口。我们可以借助Nmap的一些脚本来实施AJP服务扫描。下面介绍使用这些脚本实施AJP服务扫描的方法。
(1)使用ajp-auth.nse脚本
ajp-auth.nse脚本用来获取AJP服务的认证摘要信息。语法格式如下:
nmap -p 8009 --script ajp-auth [--script-args=ajp-auth.path=/login]
其中,ajp-auth.path参数用于定义请求的路径。
(2)使用ajp-headers.nse脚本
ajp-headers.nse脚本通过执行一个HEAD或GET请求,来获取服务器响应的头部。语法格式如下:
nmap -p 8009 --script=ajp-headers [--script-args=ajp-headers.path=path]
其中,ajp-headers.path参数用于指定请求的路径,如/index.php。默认请求的路径为“/”。
使用ajp-headers.nse脚本获取服务器响应的头部信息。执行命令如下:
root@daxueba:~# nmap -p 8009 --script ajp-headers 192.168.1.6
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:57 CST
Nmap scan report for 192.168.1.6 (192.168.1.6)
Host is up (0.00034s latency).
PORT STATE SERVICE
8009/tcp open ajp13
| ajp-headers:
|_ Content-Type: text/html;charset=ISO-8859-1
MAC Address: 00:0C:29:3E:84:91 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
从输出信息中可以看到获取到目标服务响应的头部信息。
(3)使用ajp-methods.nse脚本
ajp-methods.nse脚本通过发送一个OPTIONS请求和存在风险方法的列表,来获取目标AJP服务支持的方法。语法格式如下:
nmap -p 8009 --script ajp-methods [--script-args=ajp-methods.path=path]
其中,ajp-methods.path参数用于指定检测的路径或/。
获取目标AJP服务支持的方法。执行命令如下:
root@daxueba:~# nmap -p 8009 --script=ajp-methods 86.49.174.2
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 10:50 CST
Nmap scan report for 2.174.49.86.in-addr.arpa (86.49.174.2)
Host is up (0.25s latency).
PORT STATE SERVICE
8009/tcp open ajp13
| ajp-methods:
| Supported methods: GET HEAD POST PUT DELETE TRACE OPTIONS #支持的方法
| Potentially risky methods: PUT DELETE TRACE #存在风险的方法
|_ See https://nmap.org/nsedoc/scripts/ajp-methods.html
Nmap done: 1 IP address (1 host up) scanned in 1.50 seconds
从输出信息中可以看到,目标主机上开放了AJP服务,并且显示了该服务支持的方法,如GET、HEAD、POST、PUT和DELETE等。
(4)使用ajp-request.nse脚本
ajp-request.nse脚本用来获取请求的URI详细信息。语法格式如下:
nmap -p 8009 --script ajp-request [--script-args=username=username,path=path,filename=filename,password=password,method=method]
ajp-request.nse脚本可使用的参数及含义如下。
username:指定访问资源的用户名。
path:指定请求的URI路径。
filename:指定输出结果的文件名。
password:指定访问资源的密码。
method:指定请求URI的方法,默认是GET。
获取请求的URI详细信息。执行命令如下:
root@daxueba:~# nmap -p 8009 --script ajp-request 192.168.1.6
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:58 CST
Nmap scan report for 192.168.1.6 (192.168.1.6)
Host is up (0.00023s latency).
PORT STATE SERVICE
8009/tcp open ajp13
| ajp-request:
| AJP/1.3 200 OK
| Content-Type: text/html;charset=ISO-8859-1
| iguring and using Tomcat
|
dev@tomcat.apache.org for developers working on Tomcat
|
|
Thanks for using Tomcat!
|
|
| Copyright © 1999-2005 Apache Software Foundation
| All Rights Reserved
|
|
|
|
|
|_
MAC Address: 00:0C:29:3E:84:91 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds
从以上输出信息中可以看到,通过使用ajp-request.nse脚本成功获取到了目标AJP服务请求的UIR详细信息。
2. ASP.NET服务
ASP.NET是一个开发框架,用于通过HTML、CSS、JavaScript及服务器脚本来构建网页和网站。我们可以借助Nmap的http-aspnet-debug脚本来实施扫描。http-aspnet-debug脚本通过使用HTTP DEBUG请求,来判断ASP.NET应用程序是否启用了Debug功能。语法格式如下:
nmap --script http-aspnet-debug [--script-args=http-aspnet-debug.
path=path]
其中,http-aspnet-debug.path参数用于指定URI的路径,默认是“/”。
扫描目标主机,以确认是否启用了Debug功能。执行命令如下:
root@daxueba:~# nmap -p 80 --script=http-aspnet-debug 51.254.122.180
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 10:14 CST
Nmap scan report for 180.ip-51-254-122.eu (51.254.122.180)
Host is up (0.37s latency).
PORT STATE SERVICE
80/tcp open http
| http-aspnet-debug:
|_ status: DEBUG is enabled #状态
Nmap done: 1 IP address (1 host up) scanned in 2.27 seconds
从输出信息中可以看到,目标服务器上启用了Debug功能。
3. HTTP认证服务
HTTP服务是基于TCP协议工作的,其工作在TCP的80端口。我们可以借助http-auth脚本对HTTP服务实施扫描。http-auth脚本可以用来获取HTTP服务认证信息。语法格式如下:
nmap --script http-auth [--script-args=http-auth.path=/login] -p80
其中,http-auth.path参数用于指定请求的路径。
获取HTTP服务的认证信息。执行命令如下:
root@daxueba:~# nmap --script http-auth -p 80 80.88.126.226
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 11:06 CST
Nmap scan report for 80.88.126.226
Host is up (0.35s latency).
PORT STATE SERVICE
80/tcp open http
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
| Negotiate
|_ NTLM
从以上输出信息中可以看到,目标主机上开放了HTTP服务,启用的认证方式有Negotiate和NTLM。
4. SSL服务
SSL(Secure Sockets Layer,安全套接层)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。SSL服务是基于TCP协议工作的,其工作在TCP的443端口。我们可以借助Nmap的一些脚本来实施SSL服务。下面介绍这些脚本的扫描方法。
(1)使用ssl-cert脚本
ssl-cert脚本用来获取SSL服务的认证信息。语法格式如下:
nmap --script=ssl-cert -p 443
使用ssl-cert脚本来获取SSL服务的认证信息。执行命令如下:
root@daxueba:~# nmap --script=ssl-cert -p 443 www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:07 CST
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.023s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
PORT STATE SERVICE
443/tcp open https
| ssl-cert: Subject: commonName=baidu.com/organizationName=Beijing Baidu
Netcom Science Technology Co., Ltd/stateOrProvinceName=beijing/countryName=CN
| Subject Alternative Name: DNS:baidu.com, DNS:baifubao.com, DNS:www.baidu.cn, DNS:www.baidu.com.cn, DNS:mct.y.nuomi.com, DNS:baifae.com, DNS:apollo.auto, DNS:*.baidu.com, DNS:*.baifubao.com, DNS:*.baidustatic.com, DNS:*.bdstatic.com, DNS:*.bdimg.com, DNS:*.hao123.com, DNS:*.nuomi.com, DNS:*.chuanke.com, DNS:*.trustgo.com, DNS:*.bce.baidu.com, DNS:*.eyun.baidu.com, DNS:*.map.baidu.com, DNS:*.mbd.baidu.com, DNS:*.fanyi.baidu.com,DNS:*.baidubce.com, DNS:*.mipcdn.com, DNS:*.news.baidu.com, DNS:*.baidupcs.com, DNS:*.aipage.com, DNS:*.aipage.cn, DNS:*.bcehost.com, DNS:*.safe.baidu.com, DNS:*.im.baidu.com, DNS:*.ssl2.duapps.com, DNS:*.baifae.com, DNS:*.baiducontent.com, DNS:*.dlnel.com, DNS:*.dlnel.org, DNS:*.dueros.baidu.com, DNS:*.su.baidu.com, DNS:*.91.com, DNS:*.hao123.baidu.com, DNS:*.apollo.auto, DNS:*.xueshu.baidu.com, DNS:*.bj.baidubce.com, DNS:*.gz.baidubce.com, DNS:click.hm.baidu.com, DNS:log.hm.baidu.com, DNS:cm.pos.baidu.com, DNS:wn.pos.baidu.com, DNS:update.pan.baidu.com
| Issuer: commonName=GlobalSign Organization Validation CA - SHA256 –G2/organizationName=GlobalSign nv-sa/countryName=BE
| Public Key type: rsa #公钥类型
| Public Key bits: 2048 #公钥字节
| Signature Algorithm: sha256WithRSAEncryption #签名算法
| Not valid before: 2018-04-03T03:26:03 #有效时间之前
| Not valid after: 2022-05-26T05:31:02 #有效时间之后
| MD5: fd63 96dc 4e9f 1ea9 1651 d687 734d 3976 #MD5值
|_SHA-1: d6aa f8cf a0e0 2365 47fc 2a89 4f89 5ec9 4724 a60d #SHA-1值
Nmap done: 1 IP address (1 host up) scanned in 0.95 seconds
从输出信息中可以看到目标主机上SSL服务的认证信息。
(2)使用ssl-date脚本
ssl-date脚本用来获取目标主机的日期和时间。语法格式如下:
nmap --script=ssl-date -p 443
使用ssl-date脚本来获取目标主机的信息。执行命令如下:
root@daxueba:~# nmap --script=ssl-date -p 443 www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:07 CST
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.024s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
PORT STATE SERVICE
443/tcp open https
|_ssl-date: 2021-08-12 T08:07:40+00:00; 0s from scanner time.
Nmap done: 1 IP address (1 host up) scanned in 1.14 seconds
从以上输出信息中可以看到,使用ssl-date脚本成功获取到了目标主机的日期和时间。
(3)使用ssl-dh-params脚本
ssl-dh-params脚本用来获取暂时的Diffie-Hellman参数信息。语法格式如下:
nmap --script=ssl-dh-params -p 443
使用ssl-dh-params脚本对SSL服务实施扫描。执行命令如下:
root@daxueba:~# nmap --script=ssl-dh-params -p 443 194.4.240.95
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 15:55 CST
Nmap scan report for 194.4.240.95
Host is up (0.22s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-dh-params:
| VULNERABLE:
| Transport Layer Security (TLS) Protocol DHE_EXPORT Ciphers Downgrade MitM(Logjam)
| State: VULNERABLE
| IDs: CVE:CVE-2015-4000 OSVDB:122331
| The Transport Layer Security (TLS) protocol contains a flaw that is
| triggered when handling Diffie-Hellman key exchanges defined with
| the DHE_EXPORT cipher. This may allow a man-in-the-middle attacker
| to downgrade the security of a TLS session to 512-bit export-grade
| cryptography, which is significantly weaker, allowing the attacker
| to more easily break the encryption and monitor or tamper with
| the encrypted stream.
| Disclosure date: 2015-5-19
| Check results:
| EXPORT-GRADE DH GROUP 1
| Cipher Suite: TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
| Modulus Type: Safe prime
| Modulus Source: mod_ssl 2.2.x/512-bit MODP group with safe prime modulus
| Modulus Length: 512
| Generator Length: 8
| Public Key Length: 512
| References:
| http://osvdb.org/122331
| https://weakdh.org
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4000
| | Diffie-Hellman Key Exchange Insufficient Group Strength
| State: VULNERABLE
| Transport Layer Security (TLS) services that use Diffie-Hellmangroups
| of insufficient strength, especially those using one of a few commonly
| shared groups, may be susceptible to passive eavesdropping attacks.
| Check results:
| WEAK DH GROUP 1
| Cipher Suite: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
| Modulus Type: Safe prime
| Modulus Source: mod_ssl 2.2.x/1024-bit MODP group with safe prime modulus
| Modulus Length: 1024
| Generator Length: 8
| Public Key Length: 1024
| References:
|_ https://weakdh.org
Nmap done: 1 IP address (1 host up) scanned in 8.44 seconds
从以上输出信息中可以看到,使用ssl-dh-params脚本成功获取到了目标服务的Diffie-Hellman参数信息。
(4)使用ssl-enum-ciphers脚本
ssl-enum-ciphers脚本用来枚举目标主机的加密方式。语法格式如下:
nmap --script=ssl-enum-ciphers -p 443
使用ssl-enum-ciphers脚本枚举目标主机的加密方式。执行命令如下:
root@daxueba:~# nmap --script=ssl-enum-ciphers -p 443 www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:20 CST
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.020s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: indeterminate
| cipher preference error: Too few ciphers supported
| warnings:
| Broken cipher RC4 is deprecated by RFC 7465
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| compressors:
| NULL
| cipher preference: server
| warnings:
| Broken cipher RC4 is deprecated by RFC 7465
| TLSv1.1:
| ciphers:
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| compressors:
| NULL
| cipher preference: server
| warnings:
| Broken cipher RC4 is deprecated by RFC 7465
| TLSv1.2:
| ciphers:
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| compressors:
| NULL
| cipher preference: server
| warnings:
| Broken cipher RC4 is deprecated by RFC 7465
|_ least strength: C
Nmap done: 1 IP address (1 host up) scanned in 2.82 seconds
从以上输出信息中可以看到目标主机支持的加密方式。
(5)使用sslv2脚本
sslv2脚本用来判断目标服务器其是否支持SSLv2,并且发现支持的加密方式。语法格式如下:
nmap --script=sslv2 -p 443
使用sslv2脚本扫描目标服务器是否支持SSLv2协议,以及其支持的加密方式。执行命令如下:
root@daxueba:~# nmap --script=sslv2 -p 443 84.200.8.181
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:25 CST
Nmap scan report for srv01.dc-host.de (84.200.8.181)
Host is up (0.32s latency).
PORT STATE SERVICE
443/tcp open https
| sslv2:
| SSLv2 supported
| ciphers: #加密方式
| SSL2_RC4_128_EXPORT40_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_RC4_128_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|_ SSL2_DES_64_CBC_WITH_MD5
Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds
从输出信息中可以看到目标主机支持SSLv2协议,并且可以看到其支持的所有加密方式。
(6)使用tls-alpn脚本
tls-alpn脚本通过使用ALPN协议来枚举TLS服务支持的应用层协议。语法格式如下:
nmap --script=tls-alpn
使用tls-alpn脚本对目标主机上的SSL服务实施扫描。执行命令如下:
root@daxueba:~# nmap --script=tls-alpn -p 443 www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:27 CST
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.024s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
PORT STATE SERVICE
443/tcp open https
| tls-alpn:
|_ http/1.1
Nmap done: 1 IP address (1 host up) scanned in 1.13 seconds
从输出信息中可以看到,SSL服务支持的应用层协议为http/1.1。
(7)使用tls-nextprotoneg脚本
tls-nextprotoneg脚本通过使用Next Protocol Negotiation Extension来枚举TLS服务支持的协议。语法格式如下:
nmap --script=tls-nextprotoneg -p 443 [host]
使用tls-nextprotoneg脚本扫描SSL服务。执行命令如下:
root@daxueba:~# nmap --script=tls-nextprotoneg -p 443 www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-12 16:28 CST
Nmap scan report for www.baidu.com (61.135.169.121)
Host is up (0.028s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.125
PORT STATE SERVICE
443/tcp open https
| tls-nextprotoneg:
|_ http/1.1
Nmap done: 1 IP address (1 host up) scanned in 1.17 seconds
从输出信息中可以看到,SSL服务支持的协议为http/1.1。
