十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
NSE中的脚本采用Lua语言编写。NSE设计出来是为了提供Nmap的灵活性,式版的NSE包含14个大类的脚本,总数达500多个,这些脚本的功能包括对各种网络口令强度的审计,对各种服务器安全性配置的审计,对各种服务器漏洞的审计等。
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出志丹免费做网站回馈大家。
我们使用NSE脚本测试一台主机,我们来看一下这条指令使用的参数,-O进行操作系统检测,-sV对目标系统的服务进行检测,这里我们没有使用脚本的参数所有使用的是默认脚本,默认脚本会使用-sC参数。默认脚本一般不会对目标系统造成危害,但是其他的一些脚本可能会引起安全防御设备的报警。
nmap -sV -sC -O 192.168.126.139
默认分类中的脚本:
我们可以在命令行中输入 --script 选项来进行对脚本的选择,--script 后跟脚本的名字、脚本的种类或脚本存放的路径,或一个包含多个脚本的目录...
我这里是随便用了一个,检测主机是否有常见漏洞(直接用脚本的分类名称作为参数的话,扫描的时候是调用该分类下所有脚本去扫描)
nmap -script vuln 192.168.126.139
可以使用http-methods方法来枚举目标web服务器上所运行的服务
nmap -p 80,443 --script http-methods www.*****.com
从检测的结果中可以看到,目标服务器支持的方法有GET、HEAD、POST、OPTIONS 、TRACE。
另外也可以同时使用多个分类中的脚本去扫描
nmap --script exploit,malware 192.168.126.139
使用指定路径来执行NSE脚本,脚本在nmap目录下,/nmap/scripts/xxx.nse
nmap --script D:/Nmap/scripts/banner.nse 192.168.126.139
如果你会编写扫描脚本的话,可以在创建完成后放到文件夹里,如果这个文件夹有多个脚本,你可以将路径只写到目录,这样会使用这个目录下所有脚本进行扫描,也可以将路径指定到文件里的脚本,这样是使用单个脚本进行扫描。
使用运算符来选择使用的脚本:
使用除 exploit分类以外的脚本进行扫描
nmap --script "not exploit" 192.168.126.139
使用除intrusive、dos、exploit分类以外的脚本进行扫描
nmap --script "not (intrusive or dos or exploit)" 192.168.126.139
只使用safe和vuln进行扫描
nmap --script "safe and vuln" 192.168.126.139
此外,NSE中也支持通配符 * ,对一台运行SNMP服务的计算机进行检测,使用所有与SNMP相关的脚本
nmap --script "snmp-*" 192.168.126.139
这些分类和运算符可以结合操作
nmap --script "ftp-* and not(intrusive)" 192.168.126.139
Nmap中使用 --script-args 来指定NSE脚本运行时的参数
nmap -p80 --script http-methods www.***.com
当执行这个脚本的时候,Nmap会向目标服务器发送数据包,Nmap的数据包中包含的默认客户端信息。
这种客户端一般会被安全机制拦截,我们可以使用 --script-args 修改客户端信息为Mozilla 50
nmap -p 80 --script http-methods --script-args http.useragent="Mozilla 50" www.***.com
如果想看nmap扫描时候的具体操作,这样可能会使操作过程更加清晰,在之前我们也讲过可以使用 --script-trace来查看
nmap -p 80 --script-trace --script http-methods --script-args "http.useragent=Mozilla 50" www.***.com
也可以使用 -d [ 1-9 ] 切换调试模式,使用-d参数1-9,数字越大输出信息越详细
nmap -d3 --script-trace --script http-methods www.***.com
Nmap的基本功能只包括主机发现,端口扫描,操作系统和服务检测功能,而NSE进一步实现了大量高级功能。
信息搜集类脚本
NSE中大量脚本实现了这个功能,这些脚本使用不同的技术完成了对目标的各种信息的搜集。利用脚本 http-methods查看目标服务器所支持的HTTP方法。
基于脚本http-methods的审计目的,web服务器需要支持HTTP方法,才能正确提供HTTP服务,常见的有以下几种:
TRACE:回显服务器收到的请求
目前HTTP的TRACE、CONNECT、PUT、DELETE方法可能是web服务器潜在的安全风险,尤其是服务器支持TRACE方法,有可能会遭到XSTGJ。将恶意代码嵌入一台已经被控制的主机的web文件中,当访问者浏览时恶意代码在浏览器执行,然后访问者的cookie、HTTP基本验证等信息会被传到已被控制的主机,同时传送Trace请求给目标服务器,导致cookie欺骗或中间人GJ。
高级主机发现类脚本
脚本broadcast-ping.NSE
审计目的:发现本地网络中的活跃主机
审计方法:这个脚本向整个本地网络中所有IP地址发送广播包,以自己所在网络为目标
审计命令:
nmap --script broadcast-ping
审计结果:
脚本 targets-sniffer
审计目的:发现本地网络中的活跃主机
审计方法:这个脚本会对你的本地网络进行嗅探,然后发现网络中的所有主机,以自己所在网络为目标
审计命令:
nmap -sL --script=target-sniffer -e xxx
审计结果:
可以使用-e监听网卡设备
网络上提供的服务一般都具有一定的认证措施,目前应用最为广泛的认证措施还是用户名和密码。这种认证措施的优势在于简单易行,而缺点在于很多用户意识不到密码强度的重要性,一般会选择一些比较简单容易记住的密码,而这些密码很容易被猜出来,因此网络的管理者需要一个有效的工具来对自己网络中各种服务的密码强度进行审计。
脚本MySQL-brute.NSE
审计目的:发现网络中弱口令的MySQL数据库
审计方法:脚本mysql-brute.NSE的审计方法很简单,在Nmap中有两个数据文件,是一些常见的用户名和密码,这个脚本将这两个文件进行组合然后尝试登陆。
审计命令:
nmap -p 3306 -packet-trace --script mysql-brute 192.168.126.141
这里是没有破解出密码,破解的成功率取决于字典的大小哈,自己感兴趣的可以试试,github上也有爆破字典可以使用的。
2.脚本smtp-brute.NSE
smtp-brute.NSE脚本用来检测目标邮件服务器SMTP服务的密码是否合规。
审计目的:邮件服务器中经常会存储一些非常重要的信息,而对用户进行认证的方式就是用户和密码,这里存在一些简单的账户名和密码,他们很容易成为被GJ的对象,因此需要先对服务器进行弱口令检查。.
审计方法:对密码审计的方法采用穷解的方式。这个脚本可以对SMTP密码的穷解,它支持LOGIN、PLAIN、CRAM-MD5、DIGEST-MD5、NTLM四种登录方式。默认情况下,smtp-brute.NSE会使用/NSElib/data/username.lst文件中的内容作为用户名,/NSElib/data/passwords.lst 文件中的内容作为密码。
审计命令:
nmap -p 25 --script smtp-brute 192.168.0.1
审计结果:我这里没有搭建smtp就不做演示了,有条件的可以自己试试
NSE脚本扩充漏洞扫描的功能,利用这些脚本,就可以使用Nmap对目标进行扫描。
1.脚本 http-slowloris.NSE
slowloris是一种GJ方法,原理是以极低的速度向服务器发送http请求。由于web server对于并发的连接数都有一个上限值,如果恶意连接不释放,那么web server的所有连接都会被恶意连接占用,导致拒绝服务。
审计方法:使用http-slowloris脚本,向目标发送连接,并保持这个连接,构造了一个畸形的http请求,是一个不完整的http请求。
审计命令:
nmap -p 80 --script http-slowloris --max-parallelism 300 www.xxx.com
审计结果:这里不做实验,不要随意对网站进行测试
审计拓展:我们可以通过调整http-slowloris.send_interval参数来改变扫描的过程。这个参数可以指定发送http header datas的间隔,默认为100,我们来修改一下
nmap -p 80 --script http-slowloris --script-args http-slowloris.send_interval=200 --max-parallelism 300
http-slowloris.timeklimit参数指定Dos持续运行时间,默认为30分钟,我们修改为10分钟
nmap -p 80 --script http-slowloris --script-args http-slowloris.timelimit=10m www.***.com
http-slowloris.runforever参数对指定目标一直发动DoSGJ。默认值为false
nmap -p 80 --script http-slowloris --script-args http-slowloris.runforever www.***.com
Nmap中还有一个http-slowloris-check.NSE的脚本,这个脚本不会发起DoS GJ,而是检测目标是否具备抵抗DOS GJ的能力。
nmap -p 80 --script http-slowloris-check www.***.com