赞
踩
参考视频 https://www.bilibili.com/video/BV1Ut411K7QJ?p=3&vd_source=13dd0c4a82a579a2d8aef2ac9bf547bc
xsl样式参考 https://cloud.tencent.com/developer/article/2201699
参考此篇文档进行下载安装 https://blog.csdn.net/lj1521195618/article/details/119866338?spm=1001.2014.3001.5506
首先判断nmap输入的命令行中是否包含域名,如果包含需要利用DNS服务器进行域名解析,然后发送ICMP Echo
Request来探测主机存活性。存活了再继续扫描。
nmap scanme.nmap.org
扫描1000个常见的端口,需要扫描所有端口则 -p 1-65535
使用Google的公共DNS服务器(8.8.8.8)解析目标域名(scanme.nmap.org),然后对解析出的IP地址执行Nmap扫描。这是为了公司的dns服务器解析不出来域名
nmap --dns-servers 8.8.8.8 scanme.nmap.org
nmap -Pn xxx.xxx.xxx.xxx
如政务云相关服务器是禁止ping的,不加 -Pn
就扫描不到远程机器开放端口
加了 -Pn
成功扫描到了远程机器开放端口
nmap -p 1-65535 xxx.xxx.xxx.xxx
-p 1-65535:这是一个选项,用于指定要扫描的端口范围。在这种情况下,范围是从端口 1 到端口 65535,表示将扫描目标主机上所有可能的 TCP 和 UDP 端口
标识端口号的变量是16位的,2的16次方那么就是65536个,去掉0这个特殊端口,剩下65535个
nmap -p 80,81 xxx.xxx.xxx.xxx
nmap -p- xxx.xxx.xxx.xxx
nmap -p T:43,U:53 xxx.xxx.xxx.xxx
-T: tcp端口
-U:udp端口
nmap -p ssh xxx.xxx.xxx.xxx
探测某个协议的端口
在Nmap扫描过程中,您可能会遇到不同的端口状态。下面是一些常见的端口状态及其含义:
open:端口是打开的,表示目标主机上运行着一个服务,并且可以接受连接。
closed:端口是关闭的,表示目标主机上未运行该端口的服务,并且主机拒绝连接。
filtered:端口被过滤了,表示Nmap无法确定端口的状态,因为防火墙、网络过滤器或其他设备阻止了Nmap的扫描请求到达目标主机。
unfiltered:端口未被过滤,表示Nmap能够确定端口是开放或关闭的,但无法确定具体是哪一种状态。
open|filtered:端口可能是开放的,也可能是被过滤的,Nmap无法确定端口的确切状态。
closed|filtered:端口可能是关闭的,也可能是被过滤的,Nmap无法确定端口的确切状态。
注意事项
nmap -sV xxx.xxx.xxx.xxx
s
服务 V
版本
使用 Nmap 对指定的目标 IP 地址进行服务版本检测扫描,以获取目标主机上运行的服务的版本信息。
可以与nmap -sV -p 1-65535 ip
联合使用查看所有端口。
nmap -T4 -A -v xxx.xxx.xxx.xxx
使用Nmap对指定的目标IP地址进行扫描,设置扫描速度为正常模式,并启用全面扫描(会启用NSE所有脚本进行破解)功能,同时打印出更详细的扫描信息如版本号,加密算法方式等。
-T4:这是一个选项,用于设置扫描的速度和对目标系统的影响。-T4表示设置扫描速度为正常(Normal)模式,即快速扫描。k可以设置为1-5
-A:这是一个选项,用于执行“全面扫描”。-A选项将启用操作系统检测、服务版本检测、脚本扫描和traceroute等功能,以提供更详细的关于目标主机的信息。
-v:这是一个选项,用于设置扫描的详细程度。-v表示启用详细模式,即更多的信息将被打印出来
nmap --script auth
将运行所有属于auth类别的脚本来对目标进行扫描
nmap --script <script-name> <target>
运行特定的脚本,可以指定脚本的名称
auth:
负责处理鉴权证书(绕开鉴权)的脚本
broadcast:
在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute:
提供暴力破解方式,针对常见的应用如http/snmp等
default:
使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery:
对网络进行更多的信息,如SMB枚举、SNMP查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行whois解析
fuzzer:
模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息 safe: 此类与intrusive相反,属于安全性脚本
version: 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln:
负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root xxx.xxx.xxx.xxx
nmap --script=mysql* xxx.xxx.xxx.xxx
-d
参数即可打开调试模式
nmap -d xxx.xxx.xxx.xxx
-d参数用于增加调试输出。当使用-d参数时,nmap将输出更多的调试信息,以帮助用户了解扫描过程中发生的情况
总结
nmap -p 1-65535 -T4 -A -v xxx.xxx.xxx.xxx
使用Nmap对指定的目标IP地址的所有端口进行扫描,设置扫描速度为正常模式,并启用全面扫描(会启用NSE所有脚本进行破解)功能,同时打印出更详细的扫描信息如版本号,加密算法方式等
nmap -A命令将启用一些Nmap的主要脚本,并进行更全面的扫描,但不会启用所有NSE脚本。具体来说,-A选项会启用以下操作:
主机发现(Ping扫描):检测目标主机是否在线。
操作系统检测:尝试识别目标主机运行的操作系统。
版本检测:尝试确定目标主机上运行的服务的版本信息。
脚本扫描:执行一些常见的Nmap脚本,如漏洞检测、服务发现等。
虽然-A选项会启用一些NSE脚本,但不会启用所有的脚本。要启用所有的NSE脚本,您需要使用–script=all选项。
-A选项是-T4、-O、-Pn、-sC和–script=default选项的组合。
因此我会使用 nmap -p 1-65535 -T4 -A -v --script=all xxx.xxx.xxx.xxx
进行扫描
扫描完成后,有大量的日志输出需要去分析日志
开放端口是否存在问题 重点分析 open状态的端口
是不是有的端口可以直接访问到文件
是不是有的端口可以没有鉴权直接返回了一些数据
是不是有点端口直接就下载了文件等
是否存在漏洞
查看nse是否发现漏洞
将xml 转化为 如下的html 报告(好向领导汇报需要替换文档的样式)
from lxml import etree
# 读取生成报告的XML文件
tree = etree.parse(r'D:\nmap\zt.xml')
# 读取XSL样式表文件
xslt = etree.parse(r'D:\nmap\new_template2.xsl')
# 创建转换器并应用样式表
transform = etree.XSLT(xslt)
result = transform(tree)
# 将转换结果写入HTML文件
with open('output2.html', 'wb') as f:
f.write(result)
D:\nmap\new_template2.xsl
样式代码如下<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" indent="yes" doctype-system="about:legacy-compat"/> <xsl:template match="/"> <html lang="en"> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap.min.css"/> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script> <style> .target:before { content: ""; display: block; height: 50px; margin: -20px 0 0; } @media only screen and (min-width:1900px) { .container { width: 1800px; } } .footer { margin-top:60px; padding-top:60px; width: 100%; height: 180px; background-color: #f5f5f5; } .navbar-right { float: right!important; margin-right: -15px; } </style> <title>Nmap Scanner 扫描报告</title> </head> <body> <!--导航栏--> <nav class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#"><span class="glyphicon glyphicon-home"></span></a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="#summary">概要信息</a></li> <li><a href="#scannedhosts">主机信息</a></li> <li><a href="#onlinehosts">在线主机</a></li> <li><a href="#openservices">服务信息</a></li> </ul> </div> </div> </nav> <!--内容区--> <div class="container"> <h2 id="summary" class="target">扫描概要</h2> <div class="target"> <p >Nmap 版本:<xsl:value-of select="/nmaprun/@version"/></p> <p >Nmap命令:<xsl:value-of select="/nmaprun/@args"/></p> <p >开始时间:<xsl:value-of select="/nmaprun/@startstr"/> </p> <p >结束时间:<xsl:value-of select="/nmaprun/runstats/finished/@timestr"/></p> </div> <h2 id="scannedhosts" class="target">主机信息<xsl:if test="/nmaprun/runstats/hosts/@down > 1024"><small> (offline hosts are hidden)</small></xsl:if></h2> <div class="table-responsive"> <table id="table-overview" class="table table-striped dataTable" role="grid"> <thead> <tr> <th>状态</th> <th>IP</th> <th>主机名</th> <th>开放TCP端口数</th> <th>开放UDP端口数</th> </tr> </thead> <tbody> <xsl:choose> <xsl:when test="/nmaprun/runstats/hosts/@down > 1024"> <xsl:for-each select="/nmaprun/host[status/@state='up']"> <tr> <td><span class="label label-danger"><xsl:if test="status/@state='up'"><xsl:attribute name="class">label label-success</xsl:attribute></xsl:if><xsl:value-of select="status/@state"/></span></td> <td><xsl:value-of select="address/@addr"/></td> <td><xsl:value-of select="hostnames/hostname/@name"/></td> <td><xsl:value-of select="count(ports/port[state/@state='open' and @protocol='tcp'])"/></td> <td><xsl:value-of select="count(ports/port[state/@state='open' and @protocol='udp'])"/></td> </tr> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:for-each select="/nmaprun/host"> <tr> <td><span class="label label-danger"><xsl:if test="status/@state='up'"><xsl:attribute name="class">label label-success</xsl:attribute></xsl:if><xsl:value-of select="status/@state"/></span></td> <td><xsl:value-of select="address/@addr"/></td> <td><xsl:value-of select="hostnames/hostname/@name"/></td> <td><xsl:value-of select="count(ports/port[state/@state='open' and @protocol='tcp'])"/></td> <td><xsl:value-of select="count(ports/port[state/@state='open' and @protocol='udp'])"/></td> </tr> </xsl:for-each> </xsl:otherwise> </xsl:choose> </tbody> </table> </div> <script> $(document).ready(function() { $('#table-overview').DataTable({ language: { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } } }); }); </script> <h2 id="onlinehosts" class="target">在线主机</h2> <xsl:for-each select="/nmaprun/host[status/@state='up']"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"><xsl:value-of select="address/@addr"/><xsl:if test="count(hostnames/hostname) > 0"> - <xsl:value-of select="hostnames/hostname/@name"/></xsl:if></h3> </div> <div class="panel-body"> <xsl:if test="count(hostnames/hostname) > 0"> <h4>Hostnames</h4> <ul> <xsl:for-each select="hostnames/hostname"> <li><xsl:value-of select="@name"/> (<xsl:value-of select="@type"/>)</li> </xsl:for-each> </ul> </xsl:if> <h4>端口信息</h4> <div class="table-responsive"> <table class="table table-bordered"> <thead> <tr> <th>端口</th> <th>协议</th> <th>状态</th> <th>探测手段</th> <th>服务</th> <th>组件</th> <th>版本</th> <th>附件信息</th> <th>CPE 信息</th> </tr> </thead> <tbody> <xsl:for-each select="ports/port"> <xsl:choose> <xsl:when test="state/@state = 'open'"> <tr class="success"> <td title="Port"><xsl:value-of select="@portid"/></td> <td title="Protocol"><xsl:value-of select="@protocol"/></td> <td title="State"><xsl:value-of select="state/@state"/></td> <td title="Reason"><xsl:value-of select="state/@reason"/></td> <td title="Service"><xsl:value-of select="service/@name"/></td> <td title="Product"><xsl:value-of select="service/@product"/></td> <td title="Version"><xsl:value-of select="service/@version"/></td> <td title="Extra Info"><xsl:value-of select="service/@extrainfo"/></td> <td title="CPE Info"><xsl:value-of select="service/cpe"/></td> </tr> <xsl:for-each select="script"> <tr class="script"> <td></td> <td><xsl:value-of select="@id"/> <xsl:text> </xsl:text></td> <td colspan="7"> <pre><xsl:value-of select="@output"/> <xsl:text> </xsl:text></pre> </td> </tr> </xsl:for-each> </xsl:when> <xsl:when test="state/@state = 'filtered'"> <tr class="warning"> <td><xsl:value-of select="@portid"/></td> <td><xsl:value-of select="@protocol"/></td> <td><xsl:value-of select="state/@state"/><br/><xsl:value-of select="state/@reason"/></td> <td><xsl:value-of select="service/@name"/></td> <td><xsl:value-of select="service/@product"/></td> <td><xsl:value-of select="service/@version"/></td> <td><xsl:value-of select="service/@extrainfo"/></td> <td><xsl:value-of select="service/cpe"/></td> </tr> </xsl:when> <xsl:when test="state/@state = 'closed'"> <tr class="active"> <td><xsl:value-of select="@portid"/></td> <td><xsl:value-of select="@protocol"/></td> <td><xsl:value-of select="state/@state"/><br/><xsl:value-of select="state/@reason"/></td> <td><xsl:value-of select="service/@name"/></td> <td><xsl:value-of select="service/@product"/></td> <td><xsl:value-of select="service/@version"/></td> <td><xsl:value-of select="service/@extrainfo"/></td> <td><xsl:value-of select="service/cpe"/></td> </tr> </xsl:when> <xsl:otherwise> <tr class="info"> <td><xsl:value-of select="@portid"/></td> <td><xsl:value-of select="@protocol"/></td> <td><xsl:value-of select="state/@state"/><br/><xsl:value-of select="state/@reason"/></td> <td><xsl:value-of select="service/@name"/></td> <td><xsl:value-of select="service/@product"/></td> <td><xsl:value-of select="service/@version"/></td> <td><xsl:value-of select="service/@extrainfo"/></td> <td><xsl:value-of select="service/cpe"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </tbody> </table> </div> <xsl:if test="count(hostscript/script) > 0"> <h4>主机 脚本</h4> </xsl:if> <xsl:for-each select="hostscript/script"> <h5><xsl:value-of select="@id"/></h5> <pre style="white-space:pre-wrap; word-wrap:break-word;"><xsl:value-of select="@output"/></pre> </xsl:for-each> </div> </div> </xsl:for-each> <h2 id="openservices" class="target">服务信息</h2> <div class="table-responsive"> <table id="table-services" class="table table-striped dataTable" role="grid"> <thead> <tr> <th>IP</th> <th>端口</th> <th>协议</th> <th>服务</th> <th>组件</th> <th>版本</th> <th>CPE</th> <th>附加信息</th> </tr> </thead> <tbody> <xsl:for-each select="/nmaprun/host"> <xsl:for-each select="ports/port[state/@state='open']"> <tr> <td><xsl:value-of select="../../address/@addr"/><xsl:if test="count(../../hostnames/hostname) > 0"> - <xsl:value-of select="../../hostnames/hostname/@name"/></xsl:if></td> <td><xsl:value-of select="@portid"/></td> <td><xsl:value-of select="@protocol"/></td> <td><xsl:value-of select="service/@name"/></td> <td><xsl:value-of select="service/@product"/></td> <td><xsl:value-of select="service/@version"/></td> <td><xsl:value-of select="service/cpe"/></td> <td><xsl:value-of select="service/@extrainfo"/></td> </tr> </xsl:for-each> </xsl:for-each> </tbody> </table> </div> <script> $(document).ready(function() { $('#table-services').DataTable({ language: { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } } }); }); </script> </div> <!-- 页脚 --> <footer class="footer" style="height: 50px; margin-top: 20px; padding-top: 20px;"> <div class="container"> <p class="text-muted"> This Report Was Generated By <a href='https://www.cnblogs.com/lyshark'>LyShark</a>.<br/> </p> </div> </footer> </body> </html> </xsl:template> </xsl:stylesheet>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。