Web安全学习笔记之Nmap脚本使用指南
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
—— 来自百度百科
那么今天带大家来揭露Nmap的另一个面纱 ,那就是脚本。
在某些时候,我们大部分都使用Nmap进行扫描,然后再通过Metasploit进行漏洞利用,但是这个过程比较繁琐,一个个漏洞去验证的话还需要打开MSF去设置参数,最后run/exploit(不包括自动化,所以不要喷了)。
那么我们就要有必要认识一下Nmap的扩展脚本啦~
0x01 脚本参数
这个小例子中我会演示几个基本的脚本使用方式,但是更多的还是需要大家掌握使用脚本的技巧,然后自行发掘了。笔者在此不概述太多。
SCRIPT SCAN:
-sC: equivalent to --script=default
--script=<Lua scripts>: <Lua scripts> is a comma separated list of
directories, script-files or script-categories
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
--script-args-file=filename: provide NSE script args in a file
--script-trace: Show all data sent and received
--script-updatedb: Update the script database.
--script-help=<Lua scripts>: Show help about scripts.
<Lua scripts> is a comma-separated list of script-files or
script-categories.
上面这部分是Nmap关于脚本的参数,下面一个一个来介绍:
-sC 是指的是采用默认配置扫描,与--script=default参数等价
--script=脚本名称,脚本一般都在Nmap的安装目录下的scripts目录中
那么Linux下可以查看脚本数量:
ls /usr/share/nmap/scripts/ | wc -l
那么我当前的Nmap是有516个很使用的漏洞利用、工具脚本。也可以使用下面一条命令导出 ~
ls /usr/share/nmap/scripts/ | sed 's/.nse//' > scripts.list
那么所有的脚本名称都在scripts.list中了,这样做的原因是因为我们传递脚本名称的时候,不能写脚本的文件扩展名(.nse)。
--script-args=key1=value1,key2=value2... 该参数是用来传递脚本里面的参数的,key1是参数名,该参数对应value1这个值,那么有更多的参数,使用逗号连接,后面例子中会给大家讲解。
–script-args-file=filename,使用文件来为脚本提供参数。
--script-trace 如果设置该参数,则所有的脚本收发请求过程。
--script-updatedb 在Nmap的scripts目录里有一个script.db,该文件中保存了当前Nmap可用的脚本,类似于一个小型数据库,如果我们开启nmap并且调用了此参数,则nmap会自行扫描scripts目录中的扩展脚本,进行数据库更新。
--script-help=脚本名称,调用该参数后,Nmap会输出该脚本名称对应的脚本使用参数,以及详细介绍信息。
0x02 实战
现在我们用一个很简单的脚本,telnet爆破脚本,我们搜索一下:
root@ThundeRobot:/usr/share/nmap# ls /usr/share/nmap/scripts/ | grep telnet
telnet-brute.nse
telnet-encryption.nse
那么可以看到,返回了两个nse脚本名称,那么第一个就是telnet爆破的脚本了,如果不清楚的话,可以使用上面刚介绍过的--script-help参数。
root@ThundeRobot:/usr/share/nmap# nmap --script-help=telnet-brute Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-28 03:11 CST telnet-brute
Categories: brute intrusive
https://nmap.org/nsedoc/scripts/telnet-brute.html
Performs brute-force password auditing against telnet servers.
可以看到 有一个Nmap的文档地址,正是我们现在想要使用的脚本的详细信息。
nmap -p --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s <target>
笔者就直接照搬官网文档的例子了。经常做安全测试的朋友肯定看一眼就会用了。
最后那个 target指的是我们的目标地址。userdb是用户名字典,passdb是密码字典,timeout是每次连接之间的等待超时时间。
当然了,我们也可以直接查看脚本源文件
---
-- @usage
-- nmap -p --script telnet-brute \
-- --script-args userdb=myusers.lst,passdb=mypwds.lst \
-- --script-args telnet-brute.timeout=8s \
-- <target>
--
-- @output
-- /tcp open telnet
-- | telnet-brute:
-- | Accounts
-- | wkurtz:colonel
-- | Statistics
-- |_ Performed guesses in seconds, average tps:
--
-- @args telnet-brute.timeout Connection time-out timespec (default: "5s")
-- @args telnet-brute.autosize Whether to automatically reduce the thread
-- count based on the behavior of the target
-- (default: "true") author = "nnposter"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {'brute', 'intrusive'} portrule = shortport.port_or_service(, 'telnet')
上方这块,可以看到有一个例子,还有常规的扫描结果。那么加粗的这行是笔者故意为之,因为在某些情况下,管理员可能会更改telnet服务的端口(这里不只是光指Telnet),那么我们就无法使用这个脚本了。聪明的你一定想到了更改上方的23端口吧!但是这还不够灵活~ 我们可以将端口号自制成一个变量,通过我们的脚本参数传递进去。这里不再过多赘述,有违文章主体。
等等……还记得我们的-sC参数吗?其实它等价与--script=default,那么default调用了那些脚本呢?
在这里:
点进去你一定会惊讶,为什么会调用那么多,而且会影响扫描速度(懒人方案)。所以最好的方案就是根据服务去手动调用合适的脚本。
下面我们来实战一下,今日刚发现的运营商漏洞,就出在Telnet上。
我家上网是没有分配公网IP的,就是路由那里是一个内网,于是我先用nmap探测了一下这个内网,发现有某些网络设备。
Nmap scan report for bogon (10.14.16.106)
Host is up (.021s latency).
Not shown: filtered ports
PORT STATE SERVICE
/tcp open telnet
/tcp open domain
/tcp open pptp
/tcp open blackice-icecap
/tcp open unknown
作为一个搞Web安全的,首先去看的是8081……但是未果。于是准备从Telnet碰碰运气,会不会运营商也用若口令?
我把字典放到了 /usr/share/nmap/nselib/data,因为这个目录中是专门存放Nmap默认字典的。
扫描命令如下:
nmap -p -Pn --script=telnet-brute --script-args=userdb=admin.lst,passdb=passwords.lst,telnet-brute.timeout=3s --script-trace 10.14.16.106
在这我用--script-trace开启了数据的收发开关:
经过耐心等待,得到爆破结果:
看来都是真的,童话原来不是谎言。
我们登录看看~
What ? 多协议路由?
为此我还复习了以前干网络工程的知识。这个不谈了。我们继续再来个例子 ~
root@ThundeRobot:/usr/share/nmap/nselib/data# nmap --script=http-ls vault.centos.org Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-28 04:01 CST
Nmap scan report for vault.centos.org (109.72.83.61)
Host is up (.38s latency).
Other addresses for vault.centos.org (not scanned): :ff28::::ff:fe4b:3e8a
Not shown: filtered ports
PORT STATE SERVICE
/tcp open http
| http-ls: Volume /
| maxfiles limit reached ()
| SIZE TIME FILENAME
| - -Aug- : 2.1/
| 1.2M -Aug- : 2.1/centos2-scripts-v1.tar
| - -Sep- : 2.1/extras/
| - -May- : 2.1/final/
| - -Apr- : 2.1/i386/
| - -Jan- : 2.1/source/
| - -Dec- : 2.1/updates/
| - -Jul- : 3.1/
| - -Apr- : 3.1/SRPMS/
| - -Sep- : 3.1/addons/
|_
/tcp open rsync Nmap done: IP address ( host up) scanned in 58.35 seconds
root@ThundeRobot:/usr/share/nmap/nselib/data#
这边是扫描了http://centos.org的列目录的安全隐患。
HTTP认证爆破:
nmap --script=http-brute dvwa.vuln.leafsec.com
0X03 延伸
漏洞利用方面:vuln NSE Category
权限验证方面:auth NSE Category
暴力破解方面:brute NSE Category
服务信息发现:discovery NSE Category
DOS攻击方面:dos NSE Category
漏洞利用方面:https://nmap.org/nsedoc/categories/exploit.html
外部扩展方面:external NSE Category (集成了shodanAPI)
FUZZ测试方面:fuzzer NSE Category
一些针对的服务入侵模块:intrusive NSE Category
恶意后门方面:malware NSE Category
版本识别:version NSE Category
auth
broadcast
brute
default
discovery
dos
exploit
external
fuzzer
intrusive
malware
safe
version
vulnall
以上参数都可以作为--script的通配参数,例如:--script=vuln
--script=all 调用所有脚本扫描
0x04 总结
这篇文章没什么技术含量,只是弹性较高,算是一个小干货了,Nmap可以做数据库、系统、协议、网络等方面的评估。就是因为插件很丰富,省时省力。也希望大家在使用工具的同时细心一点,多做总结,这些脚本都是可以继续优化起来的。那么就先到此结束啦~ 另外关于字典,我们可以让nmap的字典更加强大,全部放到nmap/nselib/data就可以了,方便后期的调用与整理。
参考
Web安全学习笔记之Nmap脚本使用指南的更多相关文章
- Web安全学习笔记之Nmap脚本编写
0x00 Nmap脚本简介 夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=.=,但是都是大牛啊,挺敬佩开源开发者的. Nmap ...
- Web安全学习笔记之Nmap命令参考指南
最近研究Nmap,命令太多,详细还是需要参考官方文档(可选中文) 本文转载 在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型.物理端口指的是物理存在的端口,如ADSL Modem.集线器. ...
- Web安全学习笔记之Nmap扫描原理与用法
1 Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字N ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
随机推荐
- 《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
原创文章,欢迎转载.转载请注明:关东升的博客 实现目标与动作关联使用UIControl类addTarget(_:action:forControlEvents:)方法,示例代码如下: button.a ...
- Spring Security OAuth2 源码分析
Spring Security OAuth2 主要两部分功能:1.生成token,2.验证token,最大概的流程进行了一次梳理 1.Server端生成token (post /oauth/token ...
- 面试之二:Redis是单线程还是多线程?以及处理模型。
Redis是单线程还是多线程?以及处理模型. 线程:单线程 处理模型:参考书<Redis 设计与实现>P151-152 ![](https://ws1.sinaimg.cn/large ...
- SaltStack远程执行-返回MySQL
上一篇:SaltStack远程执行-模块 参考官方文档:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.my ...
- C#中资源文件的使用
在程序中会用到图片,有两种方法,一种是将图片放在运行文件夹中,直接调用,另一种是将图片放入资源文件中. 方法一,一般在.exe文件同级创建文件夹,如“ico”,然后把图标放进去.在程序中代码采用相对路 ...
- VC 常用资源
vckbase:www.vckbase.com emule:http://sourceforge.net/projects/emule/files/eMule/ firefox developer:h ...
- HDU3535——AreYouBusy
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题目意思:给出两个数n,T,分别表示有n个任务集合,T的总时间,对于每个任务集合有两个属性m和t ...
- 全量日志 requestId
常量参数和系统参数 API 的请求者不可见,由网关在请求后端服务时添加上. 常量参数.比如您的后端需要接收一个常量,但是这个常量您不希望被您的客户看见,那么就设置一个常量参数,可以在 Header 或 ...
- linux日志自动分割shell
随着服务器运行时间不断增加,各种日志文件也会不断的增长,虽然硬盘已经是白菜价了,但是如果当你看到你的一个日志文件达到数十G的时候是什么感想?下面的脚本实现了如下功能: 自动对日志文件进行分割 对分割后 ...
- 通过Nginx反向代理实现IP分流
通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或 ...