这是备忘单的最后一部分,在这里主要讲述漏洞评估和渗透测试。

数据库审计

列出数据库名称

nmap -sV --script=mysql-databases 192.168.195.130

上图并没有显示数据库列表,因为用户名和密码是空的。通过设置参数来指定用户名和密码。

nmap -sV --script=mysql-databases --script-args mysqluser=root,mysqlpass=toor 192.168.195.130

用户审计

用密码进行身份验证。通过暴力破解或者空口令获得凭据。

nmap -sV --script=mysql-users 192.168.195.130

检查root空口令

sudo nmap --script mysql-empty-password 192.168.195.130

Mysql Server变量清单

在默认情况下,开发人员或DBA人忘了设置正确的数据库环境。以下可以用来检索环境设置。

nmap -p3306 --script mysql-variables localhost

暴力破解

使用nmap脚本来暴力破解用户名和密码

nmap --script=mysql-brute localhost

哈希转储

转储密码的哈希值,通过使用John the Ripper进行暴力破解。需要root权限。

nmap --script=mysql-dump-hashes localhost

Mysql信息

这是信息搜集的一部分,有助于后期的渗透

nmap --script=mysql-info localhost

Mysql枚举

当我们获取了数据库的root权限,我们可以收集到合法的用户名和密码。

nmap --script=mysql-enum localhost

使用CVE-2012-2122

记住mysql最可怕的漏洞CVE-2012-2122,攻击者使用root尝试300次登陆后,成功进入了数据库。

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-2122

http://www.exploit-db.com/exploits/19092/

http://blog.trendmicro.com/trendlabs-security-intelligence/mysql-password-verification-bypass-cve-2012-2122/

nmap –script=mysql-vuln-cve2012-2122 localhost

但是运气不好,端口被过滤了。我是用了-d选项来查看debug信息。它显示因为端口被过滤所以没有任何响应。我建议读者通过shodan去搜索。

对邮件服务器渗透测试

我们可以使用Nmap脚本对邮件服务的攻击如下:

使用谷歌搜索发现有效的电子邮件帐户

检测开放中继

暴力破解SMTP密码

枚举SMTP服务器的用户

检测SMTP服务器的后门

暴力破解IMAP密码

检索IMAP邮件服务器的功能

暴力破解POP3密码

检索POP3邮件服务器的功能

检测4.70到4.75版本的Exim SMTP的漏洞

使用谷歌搜索发现有效的电子邮件帐户

nmap -p80 --script=http-email-harvest target

检测开放中继

什么是开放中继?是指任何人都可以用来发信的SMTP服务器。这曾是许多邮件服务器的默认配置。

使用nmap检测开放中继的命令如下:

nmap -sV --script smtp-open-relay -v localhost

暴力破解SMTP密码

邮件服务器通常存储非常敏感的信息,且渗透测试人员需要对他们进行暴力破解密码来审计检查弱密码。

nmap -p25 -Pn --script smtp-brute target

枚举SMTP服务的用户

将邮箱作为用户名在web应用程序中非常常见,在审计邮件服务器时,收集用户名是一个必要的任务。感谢nmap的脚本引擎可以自动化执行该任务。

nmap -p25 --script smtp-enum-users target

检测SMTP服务器后门

nmap -sV --script smtp-strangeport target

暴力破解IMAP密码

nmap -p143 --script imap-brute target

检索IMAP邮件服务器的功能

IMAP服务器可以支持不同的功能,有个名为CAPABILITY的命令,允许用户列出邮件服务器支持的命令。我们可以使用NMAP自动完成这个任务。

nmap -p143,993 -Pn --script imap-capabilities target

暴力破解POP3密码

nmap -p110 –script pop3-brute google.com

检索POP3邮件服务器支持的功能

POP3邮件服务器可以支持RFC2449定义的不同功能的POP3命令。多亏了Nmap,我们就可以自动完成这个任务,可以在我们的扫描结果显示这种服务的信息。

nmap -p110 –script pop3-capabilities target

检测4.70到4.75版本的Exim SMTP的漏洞

4.70到4.75版本之间的Exim SMTP存在字符串格式化漏洞,允许攻击者远程执行代码。NMAP NSE能帮助渗透测试人员来远程检测此漏洞。

nmap –script smtp-vuln-cve2011-1764 –script-args mailfrom=<Source address>,mailto=<Destination address>,domain=<domain> -p25,465,587 <target>

Nmap脚本引擎开发(NSE)

通过前面的例子,我们已经了解到NSE的力量是如何的强大。NMAP的NSE可针对网络和Web应用程序开发自定义的脚本。

NSE基本上是由lua语言开发。

Nmap脚本格式

NSE脚本包含5个字段和一个端口或者主机的定义规则。

描述域

这个字段用来描述脚本。

类别域

该字段描述脚本所属的类别。参考如下演示。

categories = {“default”, “discovery”, “safe”}

作者域

这个字段描述脚本的所有者和联系信息。

许可证域

该字段可帮助确保我们有分发所有附带的Nmap脚本的法律许可。所有这些脚本目前使用的标准Nmap许可证,这是可选字段。它们包括以下行作为标准。

license = “Same as Nmap–See http://nmap.org/book/man-legal.html”

依赖域

该字段包含了在执行该脚本之前需要运行的脚本名称。这使得脚本可以调用另外一个脚本执行的结果。例如,大多数的smb-*脚本依赖于smb-brute,因为通过smb-brute发现的账户可能会让其他的smb脚本获得更多信息。列出依赖脚本并不会导致那些脚本被运行。它需要-script或其他选项来调用。依赖的脚本会强制按照列表内的顺序执行。下面是例子。

dependencies = {“smb-brute”}

规则

NMAP使用脚本的规则,以确定一个脚本应针对某个目标是否需要运行。规则是一个Lua函数,返回true或false。如果规则计算结果为true时才执行脚本操作功能。

脚本必须包含以下一个或多个功能用来确定脚本的运行:

prerule()

hostrule(主机)

portrule(主机,端口)

postrule()

任何主机被扫描之前,prerule脚本在脚本预扫描阶段运行一次。hostrule和portrule脚本在每个主机被扫描后运行。 postrule脚本在所有主机都被扫描后执行一次。脚本可以在一个以上的阶段运行,如果它有几个规则的话。

操作

操作是NSE脚本的核心部分。它包含了脚本在prerule,portrule,hostrule或postrule触发时执行的所有指令。这是一个Lua函数,接受相同的参数规则。操作的返回值可能是key-value,字符串,或者null。相关信息请查阅http://nmap.org/book/nse-api.html#nse-structured-output

环境变量:每个脚本都有自己的一套环境变量。

SCRIPT_PATH:介绍了脚本路径。

SCRIPT_NAME:介绍了脚本的名称。此变量可以在调试输出被使用。

SCRIPT_TYPE:

由于脚本可以有多个规则函数,这个环境变量将显示哪些规则激活了脚本。脚本可以在不同的扫描阶段共享相同的代码。这将需要四个字符串值:“prerule”,“hostrule”,“portrule”或“postrule”。这些变量只能在规则函数评估中或评估完成后生效。

列出所有的库

Lua有很多方便开发的功能,但是NSE有自建的内部库用于NSE的开发。目录nselib包含了很多库,开发者可以利用这些库开发新的脚本。库列表如下。

Afp

Patrik Karlsson <patrik@cqure.net>编写的用来与苹果AFP服务进行交流的脚本,但是功能并不齐全。

Ajp

根据来自Apache的mod_proxy_ajp可用文档的基本AJP 1.3执行; http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

Amqp

AMQP库提供用于检索的AMQP服务器的属性信息的一些基本功能。

ASN1

ASN.1功能

base32

Base32编码和解码。遵循RFC 4648。

BASE64

base64编码和解码。遵循RFC 4648。

Bin

打包和解包二进制数据

对整数位操作

比特币

此库实现Bitcoin的协议的一个小子集。它目前支持的版本握手,并处理地址响应。

Bittorrent

BitTorrent和DHT协议库,使用户能够读取torrent文件的信息,解码B编码(BitTorrent的编码)的缓冲区,找到联系在一起的其他客户端,和在搜索客户端中发现的结点。

Bjnp

佳能BJNP协议的实现,用于发现和查询佳能网络打印机和扫描仪设备。

Brute

brute库是试图建立对远程服务执行密码猜测的共同框架。

Cassandra

作为一个cassandra的客户端

Citrixxml

这个模块的作者是帕特里克·卡尔森,用来与Citrix XML服务进行通信。它功能不齐全,缺少一些功能和参数。

Comm

网络探索任务中的常用框架,比如banner的抓取和数据交换。

Creds

nmap支持的凭证类

CVS

一个最小的CVS(并行版本系统)的pserver协议实现,它目前只支持验证。

Datafiles

阅读和分析nmap的数据文件,比如nmap-protocols, nmap-rpc, nmap-services, 和nmap-mac-prefixes.

DHCP

实现一个动态主机配置协议(DHCP)客户端。

对于更多的库,我们可以按照下面的链接:

http://nmap.org/book/nse-library.html

http://nmap.org/nsedoc/

Nmap API

Nmap API对于安全研究员和渗透测试人员非常有用,在扫描和利用过程中自定义设置。nmap扫描主机结束后得到的数据作为脚本的参数。主机和参数封装为一个lua表。如果脚本匹配hostrule,将会得到主机信息,如果脚本匹配portrule,将会得到主机和端口的信息。

接下来看看API的规则

Host

这个表是作为一个参数传递给rule和action功能。它包含操作系统的细节。

Host.os

用数组的方式来显示匹配的os列表。例子如下:

host.os = {

{

name = <string>,----Linux 2.6/3.2

classes = {

{

vendor = <string>,------Linux

osfamily = <string>,-------Linux

osgen = <string>,------2.6.x

type = <string>,---------general purpose

cpe = {---------------------"cpe:/o:linux:linux_kernel:3"

"cpe:/<...>",

[More CPE]

}

},

[More classes]

},

},

[More OS matches]

}

跟host.os类似的还有host.ip,host.name,host.region等。完全的组件请查阅http://nmap.org/book/nse-api.html.

网络API连接

使用Nmap自带的nsock库可以高效且并行运行网络I/O。

连接API

这是网络api的一部分,下面是连接api的例子。

require(“nmap”)

local socket = nmap.new_socket()

socket:set_timeout(1000)

try = nmap.new_try(function() socket:close() end)

try(socket:connect(host.ip, port.number))

try(socket:send(“login”))

response = try(socket:receive())

socket:close()

异常处理

Nmap Lua语言没有异常处理机制,所以API提供了强大的对异常处理的功能。

local result, socket, try, catch

result = “”

socket = nmap.new_socket()

catch = function()

socket:close()

end

try = nmap.new_try(catch)

try(socket:connect(host.ip, port.number))

result = try(socket:receive_lines(1))

try(socket:send(result))

我们的第一个NSE脚本

接下来让我们示例演示下如何编写一个属于自己的NSE脚本吧。

在此之前请阅读nse开发所需要的基本知识。

http://nmap.org/book/nse-tutorial.html

黑客喜欢入侵摄像机来查看别人的艳照。最常见的是劫持AXIS摄像机。可以使用下面的dork来搜索。

inurl:axis-cgi/jpg

打开带有axis-cgi/jpg/image.cgi的url,然后你就可以看到私人或者公共的相机,这是未经授权的。参考下面的例子。

现在我们可以尝试使用nse来实现漏洞的利用了。

1、创建axis.nse文件,并写入以下代码实现自动化。

description = [[Attempts to detect webcams AXIS vulnerable to unauthenticated access to the video stream by queryingthe URI ” /axis-cgi/jpg/image.cgi “.

2、我们载入开发时需要的库

local http = require “http”

local shortport = require “shortport”

local stdnse = require “stdnse“

3、定义执行规则

portrule = shortport.http

4、定义存在漏洞的标识,比如状态码

action = function(host, port)

local uri = ” /axis-cgi/jpg/image.cgi”

local _, status_404, resp_404 = http.identify_404(host,port)

if status_404 == 200 then

stdnse.print_debug(1, “%s: Web server returns ambiguous response. Axis webcams return standard 404 status responses. Exiting.”, SCRIPT_NAME)

return

end

stdnse.print_debug(1, “%s: HTTP HEAD %s”, SCRIPT_NAME,uri)

local resp = http.head(host, port, uri)

if resp.status and resp.status == 200 then

return string.format(“Axis video feed is unprotected:http://%s/axis-cgi/jpg/image.cgi “, host.ip)

end

End

你可以从https://github.com/bikashdash/Axis_Vuln_Webcam 找到这个脚本。

引用:

https://secwiki.org/w/Nmap/External_Script_Library

http://nmap.org/book/nse-tutorial.html

*参考来源:resources.infosecinstitute,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

Nmap备忘单:从探索到漏洞利用(Part 5)的更多相关文章

  1. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  2. Nmap备忘单:从探索到漏洞利用(Part 2)

    这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...

  3. Nmap备忘单:从探索到漏洞利用 Part1

    在侦查过程中,信息收集的初始阶段是扫描. 侦查是什么? 侦查是尽可能多的收集目标网络的信息.从黑客的角度来看,信息收集对攻击非常有帮助,一般来说可以收集到以下信息: 电子邮件.端口号.操作系统.运行的 ...

  4. Nmap备忘单:从探索到漏洞利用(Part3)

    众所周知NMAP是经常用来进行端口发现.端口识别.除此之外我们还可以通过NMAP的NSE脚本做很多事情,比如邮件指纹识别,检索WHOIS记录,使用UDP服务等. 发现地理位置 Gorjan Petro ...

  5. Nmap备忘单

    #在推特上看到,感觉做的相当不错就转一波. 目标规格 开关 例 描述   nmap 192.168.1.1 扫描一个IP   nmap 192.168.1.1 192.168.2.1 扫描特定的IP地 ...

  6. Cheat (tldr, bropages) - Unix命令用法备忘单

    cheat 是一个Unix命令行小工具,用来查询一些常用命令的惯用法(我们都知道,man page阅读起来太累了,常常是跳到最后去看 examples,但并不是所有man pages里面都有examp ...

  7. Objective-C教程备忘单

    终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...

  8. HTML5属性备忘单

    在网上闲逛的时候看到了文章,感觉总结的这个html5文章,决定转载过来,在排版的时候也帮助自己重新梳理复习一遍.毕竟学习基础最重要. by zhangxinxu from http://www.zha ...

  9. 跨站脚本(XSS)备忘单-2019版

    这是一份跨站脚本(XSS)备忘录,收集了大量的XSS攻击向量,包含了各种事件处理.通讯协议.特殊属性.限制字符.编码方式.沙箱逃逸等技巧,可以帮助渗透测试人员绕过WAF和过滤机制. 译者注:原文由Po ...

随机推荐

  1. sql server 清空数据库表数据

    --禁用外键约束 exec   sp_msforeachtable   'alter   table   ?   nocheck   constraint   all ' --清空数据 truncat ...

  2. css动画之波纹

    样式定义: #ContactAbout { height: auto; position: relative; overflow: hidden; } #sectioncontact { displa ...

  3. 解决 SQL Server Profiler 跟踪[不断]出现检索数据

    问题简单回顾: 当我们使用SQL Server Profiler根据数据时,有时刚打开什么也没干呢,就显示很多数据了,当我们用橡皮擦清除,没过两秒就又有了,如图: 是不是很恼火!~不怕,解决方案如下: ...

  4. hdu1305 字典树

    这题我开始想的简单了,WA一次,然后看disscuss里有人说输入时长度从小到大的,然后我信了.然后开始while(1) WA;然后我尝试先放如数组.后来对了: discuss里面果然不能太相信. 根 ...

  5. Weblogic 启动报错:java.lang.NoClassDefFoundError

    Weblogic 启动报错:java.lang.NoClassDefFoundError  ####<2015-6-17 下午03时30分47秒 CST> <Error> &l ...

  6. 【poj1015】 Jury Compromise

    http://poj.org/problem?id=1015 (题目链接) 题意 随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m 人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢 ...

  7. HackerRank Extra long factorials

    传送门 今天在HackerRank上翻到一道高精度题,于是乎就写了个高精度的模板,说是模板其实就只有乘法而已. Extra long factorials Authored by vatsalchan ...

  8. pthread_kill

    别被名字吓到,pthread_kill可不是kill,而是向线程发送signal.还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理 ...

  9. php返回json数据简单实例

    <?php include './include/conn.php'; //数据库链接文件 $sql_notice = mysql_query('SELECT * FROM gg_notice ...

  10. 实时获取UITextField内容

    在UISearchBar中,当输入信息改变时,它就会调用textDidChange方法, 但是UITextField没有这个功能,要实现就得手动addTarget,其实controlevent里还有很 ...