2026/4/16 23:23:41
网站建设
项目流程
广平手机网站建设,门户网站建设重建方案,广州域名备案,网站备案名称几个字SQLMap
1.SQLMap详解
SQLMap是一个自动化的SQL注入工具#xff0c;其主要功能是扫描、发现并利用给定URL的SQL注入漏洞#xff0c;内置了很多绕过插件#xff0c;支持的数据库是MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Fir…SQLMap1.SQLMap详解SQLMap是一个自动化的SQL注入工具其主要功能是扫描、发现并利用给定URL的SQL注入漏洞内置了很多绕过插件支持的数据库是MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。SQLMap采用了以下5种独特的SQL注入技术。● 基于布尔类型的盲注即可以根据返回页面判断条件真假的注入。● 基于时间的盲注即不能根据页面返回的内容判断任何信息要用条件语句查看时间延迟语句是否已执行即页面返回时间是否增加来判断。● 基于报错注入即页面会返回错误信息或者把注入的语句的结果直接返回到页面中。● 联合查询注入在可以使用Union的情况下的注入。● 堆查询注入可以同时执行多条语句时的注入。SQLMap的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统并在获取完全的操作权限时实行任意命令。SQLMap的功能强大到让人惊叹当常规的注入工具不能利用SQL注入漏洞进行注入时使用SQLMap会有意想不到的效果。2.安装SQLMapSQLMap的安装需要Python环境不支持Python 3目前使用的是Python 2.7.3可在官网下载安装包并一键安装安装完成后复制Python的安装目录添加到环境变量值中如下图所示然后在SQLMap的官网http://www.sqlmap.org下载最新版的SQLMap下载到Python的安装目录下并把SQLMap目录加到环境变量中。打开cmd输入sqlmap.py命令后工具即可正常运行如下图所示3.SQLMap入门1.判断是否存在注入假设目标注入点是http://192.168.1.104/sql1/Less-1/? id11判断其是否存在注入的命令如下所示sqlmap.py -u http://192.168.1.104/sql1/Less-1/? id1结果显示存在注入如下图所示还有一种情况当注入点后面的参数大于等于两个时需要加双引号如下所示。sqlmap.py -u http://192.168.1.104/sql1/Less-1/? id1uid2 可以看到运行完判断是否存在注入的语句后“爆出”一大段代码下面来分析代码反馈给我们的信息。这里有三处需要选择的地方第一处的意思为检测到数据库可能是MySQL是否需要跳过检测其他数据库第二处的意思是在“level1、risk1”的情况下是否使用MySQL对应的所有Payload进行检测第三处的意思是参数ID存在漏洞是否要继续检测其他参数一般默认按回车键即可如下图所示2.判断文本中的请求是否存在注入从文件中加载HTTP请求SQLMap可以从一个文本文件中获取HTTP请求这样就可以不设置其他参数如cookie、POST数据等, txt文件中的内容为Web数据包如下图所示判断是否存在注入的命令如下所示运行后的结果如下图所示-r一般在存在cookie注入时使用。3.查询当前用户下的所有数据库该命令是确定网站存在注入后用于查询当前用户下的所有数据库如下所示。如果当前用户有权限读取包含所有数据库列表信息的表使用该命令就可以列出所有数据库如下所示sqlmap.py -u http://192.168.1.104/sql1/Less-1/? id1 --dbssqlmap.py -u http://192.168.1.104/sql1/Less-1/? id1 --dbs从下图中可以看到查询出了17个数据库及所有数据库的库名。当继续注入时–dbs缩写成-D xxx其意思是在xxx数据库中继续查询其他数据。4.获取数据库中的表名该命令的作用是查询完数据库后查询指定数据库中所有的表名如下所示。如果在该命令中不加入-D参数来指定某一个具体的数据库那么SQLMap会列出数据库中所有库的表如下所示sqlmap.py -u http://192.168.1.7/sql/union.php? id1 -D dkeye --tables从上图中可以看到dkeye数据库中拥有的3个表名。当继续注入时–tables缩写成-T意思是在某表中继续查询。5.获取表中的字段名该命令的作用是查询完表名后查询该表中所有的字段名如下所示。运行该命令的结果如下所示:sqlmap.py -u http://192.168.1.7/sql/union.php? id1-D dkeye -T user\_info --columns从上图中可以看到在dkeye数据库中的user_info表中一共有4个字段。在后续的注入中–columns缩写成-C。6.获取字段内容该命令是查询完字段名之后获取该字段中具体的数据信息如下所示:sqlmap.py -u http://192.168.1.7/sql/union.php? id1 -D dkeye -T user\_info -C username, password --dump这里需要下载的数据是dkeye数据库里user_info表中username和password的值如下图所示7.获取数据库的所有用户该命令的作用是列出数据库的所有用户如下所示。在当前用户有权限读取包含所有用户的表的权限时使用该命令就可以列出所有管理用户。sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --userssqlmap.py -u http://192.168.1.7/sql/union.php? id1 --users可以看到当前用户账号是root如下图所示8.获取数据库用户的密码该命令的作用是列出数据库用户的密码如下所示。如果当前用户有读取包含用户密码的权限SQLMap会先列举出用户然后列出Hash并尝试破解。sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --passwords从下图中可以看到密码使用MySQL5加密可以在www.cmd5.com中自行解密。9.获取当前网站数据库的名称使用该命令可以列出当前网站使用的数据库如下所示。sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --current-db从下图中可以看到数据库是’sql’。10.获取当前网站数据库的用户名称使用该命令可以列出当前网站使用的数据库用户如下所示。sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --current-user从下图中可以看到用户是root。4.SQLMap进阶1.–level 5探测等级参数–level 5指需要执行的测试等级一共有5个等级15可不加level默认是1。SQLMap使用的Payload可以在xml/payloads.xml中看到也可以根据相应的格式添加自己的Payload其中5级包含的Payload最多会自动破解出cookie、XFF等头部注入。当然level 5的运行速度也比较慢。这个参数会影响测试的注入点GET和POST的数据都会进行测试HTTP cookie在level为2时就会测试HTTP User-Agent/Referer头在level为3时就会测试。总之在不确定哪个Payload或参数为注入点时为了保证全面性建议使用高的level值。2.–is-dba当前用户是否为管理权限该命令用于查看当前账户是否为数据库管理员账户如下所示在本案例中输入该命令会返回Ture如下所示sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --is-dba3.–roles列出数据库管理员角色该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表输入该命令会列举出每个用户的角色也可以用-U参数指定想看哪个用户的角色。该命令仅适用于当前数据库是Oracle的时候。在本案例中输入该命令的结果如下图所示4.–referer:HTTP Referer头SQLMap可以在请求中伪造HTTP中的referer当–level参数设定为3或3以上时会尝试对referer注入。可以使用referer命令来欺骗如–refererhttp://www.baidu.com。5.–sql-shell运行自定义SQL语句该命令用于执行指定的SQL语句如下所示假设执行select*from users limit 0,1语句结果如下图所示sqlmap.py -u http://192.168.1.7/sql/union.php? id1 --sql-shell6.–os-cmd, --os-shell运行任意操作系统命令在数据库为MySQL、PostgreSQL或Microsoft SQL Server并且当前用户有权限使用特定的函数时如果数据库为MySQL、PostgreSQL, SQLMap上传一个二进制库包含用户自定义的函数sys_exec()和sys_eval()那么创建的这两个函数就可以执行系统命令。在Microsoft SQL Server中SQLMap将使用xp_cmdshell存储过程如果被禁用在Microsoft SQL Server 2005及以上版本默认被禁制则SQLMap会重新启用它如果不存在会自动创建。用–os-shell参数可以模拟一个真实的Shell输入想执行的命令。当不能执行多语句时比如PHP或ASP的后端数据库为MySQL仍然可以使用INTO OUTFILE写进可写目录创建一个Web后门。–os-shell支持ASP、ASP.NET、JSP和PHP四种语言要想执行改参数需要有数据库管理员权限也就是–is-dba的值要为True。Burp Suite1.Burp Suite的安装Burp Suite是一款集成化的渗透测试工具包含了很多功能可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。Burp Suite由Java语言编写基于Java自身的跨平台性使这款软件学习和使用起来更方便。Burp Suite不像其他自动化测试工具它需要手工配置一些参数触发一些自动化流程然后才会开始工作。Burp Suite可执行程序是Java文件类型的jar文件免费版可以从官网下载。免费版的Burp Suite会有许多限制无法使用很多高级工具如果想使用更多的高级功能需要付费购买专业版。专业版与免费版的主要区别有以下三点:● Burp Scanner。● 工作空间的保存和恢复。● 拓展工具如Target Analyzer、Content Discovery和Task Scheduler。Burp Suite是用Java语言开发的运行时依赖JRE需要安装Java环境才可以运行。用百度搜索JDK选择安装包然后下载即可打开安装包后单击“下一步”按钮进行安装安装路径可以自己更改或者采用默认路径。提示安装完成后打开cmd输入java-version进行查看若返回版本信息则说明已经正确安装如下图所示接下来配置环境变量右击“计算机”接着单击“属性”→“高级系统设置”→“环境变量”然后新建系统变量在弹出框的“变量名”处输入“JAVA_HOME”在“变量值”处输入JDK的安装路径如“C:\Program Files(x86)\Java\jdk1.8.0_112”然后单击“确定”按钮。在“系统变量”中找到PATH变量在“变量值”的最前面加上“%JAVA_HOME%\bin; ”然后单击“确定”按钮。在“系统变量”中找到CLASSPATH变量若不存在则新建这个变量在“变量值”的最前面加上“.; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar;”然后单击“确定”按钮。打开cmd输入javac若返回帮助信息如下图所示说明已经正确配置了环境变量。下载好的Burp无须安装直接双击BurpLoader.jar文件即可运行如下图所示2.Burp Suite入门Burp Suite代理工具是以拦截代理的方式拦截所有通过代理的网络流量如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截HTTP和HTTPS协议的流量通过拦截Burp Suite以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理以达到安全测试的目的。在日常工作中最常用的Web客户端就是Web浏览器我们可以通过设置代理信息拦截Web浏览器的流量并对经过Burp Suite代理的流量数据进行处理。BurpSuite运行后Burp Proxy默认本地代理端口为8080如下图所示这里以Firefox浏览器为例单击浏览器右上角“打开菜单”依次单击“选项”→“常规”→“网络代理”→“设置”→“手动配置代理”如下图所示设置HTTP代理为127.0.0.1端口为8080与Burp Proxy中的代理一致。2.1 ProxyBurp Proxy是利用Burp开展测试流程的核心通过代理模式可以让我们拦截、查看、修改所有在客户端与服务端之间传输的数据。Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off和Action构成它们的功能如下所示:● Forward表示将拦截的数据包或修改后的数据包发送至服务器端。● Drop表示丢弃当前拦截的数据包。● Interception is on表示开启拦截功能单击后变为Interception is off表示关闭拦截功能。● 单击Action按钮可以将数据包进一步发送到Spider、Scanner、Repeater、 Intruder等功能组件做进一步的测试同时也包含改变数据包请求方式及其body的编码等功能。打开浏览器输入需要访问的URL并按回车键这时将看到数据流量经过Burp Proxy并暂停直到单击Forward按钮才会继续传输下去。如果单击了Drop按钮这次通过的数据将丢失不再继续处理。当Burp Suite拦截的客户端和服务器交互之后我们可以在Burp Suite的消息分析选项中查看这次请求的实体内容、消息头、请求参数等信息。Burp有四种消息类型显示数据包Raw、Params、Headers和Hex。● Raw主要显示Web请求的raw格式以纯文本的形式显示数据包包含请求地址、HTTP协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等可以通过手动修改这些信息对服务器端进行渗透测试。● Params主要显示客户端请求的参数信息包括GET或者POST请求的参数、cookie参数。可以通过修改这些请求参数完成对服务器端的渗透测试。● Headers中显示的是数据包中的头信息以名称、值的形式显示数据包。● Hex对应的是Raw中信息的二进制内容可以通过Hex编辑器对请求的内容进行修改在进行00截断时非常好用如下图所示2.2 SpiderSpider的蜘蛛爬行功能可以帮助我们了解系统的结构其中Spider爬取到的内容将在Target中展示如下图所示界面左侧为一个主机和目录树选择具体某一个分支即可查看对应的请求与响应。2.3 DecoderDecoder的功能比较简单它是Burp中自带的编码解码及散列转换的工具能对原始数据进行各种编码格式和散列的转换。Decoder的界面如下图所示。输入域显示的是需要编码/解码的原始数据此处可以直接填写或粘贴也可以通过其他Burp工具上下文菜单中的“Send toDecoder”选项发送过来输出域显示的是对输入域中原始数据进行编码/解码的结果。无论是输入域还是输出域都支持文本和Hex这两种格式编码解码选项由解码选项Decode as、编码选项Encode as)、散列Hash构成。在实际使用时可以根据场景的需要进行设置。对编码解码选项而言目前支持URL、HTML、Base64、ASCII、十六进制、八进制、二进制和GZIP共八种形式的格式转换Hash散列支持SHA、SHA-224、SHA-256、SHA-384、SHA-512、MD2、MD5格式的转换。更重要的是对同一个数据我们可以在Decoder界面进行多次编码、解码的转换。3.Burp Suite进阶3.1 ScannerBurp Scanner主要用于自动检测Web系统的各种漏洞。本小节介绍Burp Scanner的基本使用方法在实际使用中可能会有所改变但大体环节如下。首先确认Burp Suite正常启动并完成浏览器代理的配置。然后进入Burp Proxy关闭代理拦截功能快速浏览需要扫描的域或URL模块此时在默认情况下Burp Scanner会扫描通过代理服务的请求并对请求的消息进行分析来辨别是否存在系统漏洞。而且当我们打开Burp Target时也会在站点地图中显示请求的URL树。我们随便找一个网站进行测试选择Burp Target的站点地图选项下的链接在其链接URL上右击选择“Actively scan this host”此时会弹出过滤设置保持默认选项即可扫描整个域如下图所示也可以在Proxy下的HTTP history中选择某个节点上的链接URL并右击选择Do an active scan进行扫描如下图所示这时Burp Scanner开始扫描在Scanner界面下双击即可看到扫描结果如下图所示我们也可以在扫描结果中选中需要进行分析的部分将其发送到repeater模块中进行模拟提交分析和验证如下图所示:当scanner扫描完成后可以右击Burp Target站点地图选项下的链接依次选择“issues”→“Report issues”选项然后导出漏洞报告如下图所示然后将漏洞报告以html文件格式保存结果如下图所示通过以上操作步骤我们可以学习到Burp Scanner主要有主动扫描和被动扫描两种扫描方式。1.主动扫描Active Scanning当使用主动扫描模式时Burp会向应用发送新的请求并通过Payload验证漏洞。这种模式下的操作会产生大量的请求和应答数据直接影响服务端的性能通常用于非生产环境。主动扫描适用于以下这两类漏洞。● 客户端的漏洞如XSS、HTTP头注入、操作重定向。 ● 服务端的漏洞如SQL注入、命令行注入、文件遍历。对第一类漏洞Burp在检测时会提交input域然后根据应答的数据进行解析。在检测过程中Burp会对基础的请求信息进行修改即根据漏洞的特征对参数进行修改模拟人的行为以达到检测漏洞的目的对第二类漏洞以SQL注入为例服务端有可能返回数据库错误提示信息也有可能什么都不反馈。Burp在检测过程中会采用各个技术验证漏洞是否存在例如诱导时间延迟、强制修改Boolean值、与模糊测试的结果进行比较以提高漏洞扫描报告的准确性。2.被动扫描Passive Scanning当使用被动扫描模式时Burp不会重新发送新的请求只是对已经存在的请求和应答进行分析对服务端的检测来说这比较安全通常适用于生产环境的检测。一般来说下列漏洞在被动模式中容易被检测出来。● 提交的密码为未加密的明文。 ● 不安全的cookie的属性例如缺少HttpOnly和安全标志。 ● cookie的范围缺失。 ● 跨域脚本包含和站点引用泄露。 ● 表单值自动填充尤其是密码。 ● SSL保护的内容缓存。 ● 目录列表。 ● 提交密码后应答延迟。 ● session令牌的不安全传输。 ● 敏感信息泄露例如内部IP地址、电子邮件地址、堆栈跟踪等信息泄露。 ● 不安全的ViewState的配置。 ● 错误或不规范的Content-Type指令。虽然被动扫描模式相比主动模式有很多不足但同时也具有主动模式不具备的优点。除了对服务端的检测比较安全当某种业务场景的测试每次都会破坏业务场景的某方面功能时可以使用被动扫描模式验证是否存在漏洞以减少测试的风险。3.2 IntruderIntruder是一个定制的高度可配置的工具可以对Web应用程序进行自动化攻击如通过标识符枚举用户名、ID和账户号码模糊测试SQL注入跨站目录遍历等。它的工作原理是Intruder在原始请求数据的基础上通过修改各种请求参数获取不同的请求应答。在每一次请求中Intruder通常会携带一个或多个有效攻击载荷Payload在不同的位置进行攻击重放通过应答数据的比对分析获得需要的特征数据。Burp Intruder通常被应用于以下场景。● 标识符枚举。Web应用程序经常使用标识符引用用户、账户、资产等数据信息。例如用户名、文件ID和账户号码。● 提取有用的数据。在某些场景下不是简单地识别有效标识符而是通过简单标识符提取其他数据。例如通过用户的个人空间ID获取所有用户在其个人空间的名字和年龄。● 模糊测试。很多输入型的漏洞如SQL注入、跨站点脚本和文件路径遍历可以通过请求参数提交各种测试字符串并分析错误消息和其他异常情况来对应用程序进行检测。受限于应用程序的大小和复杂性手动执行这个测试是一个耗时且烦琐的过程因此可以设置Payload通过Burp Intruder自动化地对Web应用程序进行模糊测试。下面将演示利用Intruder模块爆破无验证码和次数限制的网站的方法如下图所示这里使用方法只是为了实验读者不要将其用于其他非法用途。前提是你得有比较好的字典我们准备好的字典如下图所示。需要注意的是Burp Suite的文件不要放在中文的路径下。首先将数据包发送到intruder模块Burp会自动对某些参数进行标记这里先清除所有标记然后选择要进行暴力破解的参数值将pass参数选中单击“Add$”按钮这里只对一个参数进行暴力破解所以攻击类型使用sniper即可如下图所示。这里要注意的是如果要同时对用户名和密码进行破解可以同时选中user和pass参数并且选择交叉式cluster bomb模式进行暴力破解。● Sniper模式使用单一的Payload组。它会针对每个位置设置Payload。这种攻击类型适用于对常见漏洞中的请求参数单独进行Fuzzing测试的情景。攻击中的请求总数应该是position数量和Payload数量的乘积。● Battering ram模式使用单一的Payload组。它会重复Payload并一次性把所有相同的Payload放入指定的位置中。这种攻击适用于需要在请求中把相同的输入放到多个位置的情景。请求的总数是Payload组中Payload的总数。● Pitchfork模式使用多个Payload组。攻击会同步迭代所有的Payload组把Payload放入每个定义的位置中。这种攻击类型非常适合在不同位置中需要插入不同但相似输入的情况。请求的数量应该是最小的Payload组中的Payload数量。● Cluster bomb模式会使用多个Payload组。每个定义的位置中有不同的Payload组。攻击会迭代每个Payload组每种Payload组合都会被测试一遍。这种攻击适用于在位置中需要不同且不相关或者未知输入攻击的情景。攻击请求的总数是各Payload组中Payload数量的乘积。下面选择要添加的字典然后开始爆破并等待爆破结束这里对Status或Length的返回值进行排序查看是否有不同之处。如果有查看返回包是否显示为登录成功如果返回的数据包中有明显的登录成功的信息则说明已经破解成功如下图所示3.3 RepeaterBurp Repeater是一个手动修改、补发个别HTTP请求并分析它们的响应的工具。它最大的用途就是能和其他Burp Suite工具结合起来使用。可以将目标站点地图、Burp Proxy浏览记录、Burp Intruder的攻击结果发送到Repeater上并手动调整这个请求来对漏洞的探测或攻击进行微调。Repeater分析选项有4种Raw、Params、Headers和Hex。● Raw显示纯文本格式的消息。在文本面板的底部有一个搜索和加亮的功能可以用来快速定位需要寻找的字符串如出错消息。利用搜索栏左边的弹出项能控制状况的灵敏度以及是否使用简单文本或十六进制进行搜索。● Params对于包含参数URL查询字符串、cookie头或者消息体的请求 Params选项会把这些参数显示为名字/值的格式这样就可以简单地对它们进行查看和修改了。● Headers将以名字/值的格式显示HTTP的消息头并且以原始格式显示消息体。● Hex允许直接编辑由原始二进制数据组成的消息。在渗透测试过程中我们经常使用Repeater进行请求与响应的消息验证分析例如修改请求参数、验证输入的漏洞修改请求参数、验证逻辑越权从拦截历史记录中捕获特征性的请求消息进行请求重放。本节将抓包发送到Repeater如下图所示在Repeater的操作界面中左边的Request为请求消息区右边的Response为应答消息区请求消息区显示的是客户端发送的请求消息的详细信息。当我们编辑完请求消息后单击“Go”按钮即可发送请求给服务端如下图所示应答消息区显示的是对对应的请求消息单击“GO”按钮后服务端的反馈消息。通过修改请求消息的参数来比对分析每次应答消息之间的差异能更好地帮助我们分析系统可能存在的漏洞如下图所示3.4 ComparerBurp Comparer在Burp Suite中主要提供一个可视化的差异比对功能来对比分析两次数据之间的区别使用到的场合有● 枚举用户名的过程中对比分析登录成功和失败时服务端反馈结果的区别。● 使用Intruder进行攻击时对于不同的服务端响应可以很快分析出两次响应的区别在哪里。● 进行SQL注入的盲注测试时比较两次响应消息的差异判断响应结果与注入条件的关联关系。使用Comparer时有两个步骤先是数据加载然后是差异分析Comparer数据加载的常用方式如下所示。● 从其他Burp工具通过上下文菜单转发过来。● 直接粘贴。● 从文件里加载。加载完毕后如果选择两次不同的请求或应答消息则下发的比较按钮将被激活此时可以选择文本比较或字节比较。3.5 SequencerBurp Sequencer是一种用于分析数据样本随机性质量的工具。可以用它测试应用程序的会话令牌Session token、密码重置令牌是否可预测等场景通Sequencer的数据样本分析能很好地降低这些关键数据被伪造的风险。Burp Sequencer主要由信息截取Live Capture、手动加载Manual Load和选项分析Analysis Options三个模块组成。在截取信息后单击Load按钮加载信息然后单击“Analyze now”按钮进行分析如下图所示Nmap1.Nmap详解NmapNetwork Mapper网络映射器是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap分布式框架为DNmap。Nmap的特点如下所示:● 主机探测探测网络上的主机如列出响应TCP和ICMP请求、ICMP请求、开放特别端口的主机。● 端口扫描探测目标主机所开放的端口。● 版本检测探测目标主机的网络服务判断其服务名称及版本号。● 系统检测探测目标主机的操作系统及网络设备的硬件特性。● 支持探测脚本的编写使用Nmap的脚本引擎NSE和Lua编程语言。2.安装NmapNmap的下载地址为https://nmap.org/download.html本节下载的版本是7.40。读者在安装的过程中按照提示一步步安装即可如下图所示3.Nmap入门3.1 扫描参数进入安装目录后在命令行直接执行Nmap或查看帮助文档输入nmap–help将显示Namp的用法及其功能如下图所示在讲解具体的使用方法前先介绍一下Nmap的相关参数的含义与用法。首先介绍设置扫描目标时用到的相关参数如下所示:● -iL从文件中导入目标主机或目标网段。 ● -iR随机选择目标主机。 ● --exclude后面跟的主机或网段将不在扫描范围内。 ● --excludefile导入文件中的主机或网段将不在扫描范围中。 与主机发现方法相关的参数如下。 ● -sL:List Scan列表扫描仅列举指定目标的IP不进行主机发现。 ● -sn:Ping Scan只进行主机发现不进行端口扫描。 ● -Pn将所有指定的主机视作已开启跳过主机发现的过程。 ● -PS/PA/PU/PY\[portlist\]使用TCP SYN/ACK或SCTP INIT/ECHO方式来发现。 ● -PE/PP/PM使用ICMP echo、timestamp、netmask请求包发现主机。 ● -PO\[protocollist\]使用IP协议包探测对方主机是否开启。 ● -n/-R:-n表示不进行DNS解析-R表示总是进行DNS解析。 ● --dns-serversserv1\[, serv2\], ...指定DNS服务器。 ● --system-dns指定使用系统的DNS服务器。 ● --traceroute追踪每个路由节点。 与常见的端口扫描方法相关的参数如下。 ● -sS/sT/sA/sW/sM指定使用TCP SYN/Connect()/ACK/Window/Maimon scans的方式对目标主机进行扫描。 ● -sU指定使用UDP扫描的方式确定目标主机的UDP端口状况。 ● -sN/sF/sX指定使用TCP Null/FIN/Xmas scans秘密扫描的方式协助探测对方的TCP端口状态。 ● --scanflagsflags定制TCP包的flags。 ● -sIzombie host\[:probeport\]指定使用Idle scan的方式扫描目标主机前提是需要找到合适的zombie host。 ● -sY/sZ使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口的开放情况。 ● -sO使用IP protocol扫描确定目标机支持的协议类型。 ● -bFTP relay host使用FTP bounce scan扫描方式。 跟端口参数与扫描顺序的设置相关的参数如下。 ● -pport ranges扫描指定的端口。 ● -F:Fast mode快速模式仅扫描TOP 100的端口。 ● -r不进行端口随机打乱的操作如无该参数Nmap会将要扫描的端口以随机顺序的方式进行扫描让Nmap的扫描不易被对方防火墙检测到。 ● --top-portsnumber扫描开放概率最高的number个端口Nmap的作者曾做过大规模的互联网扫描以此统计网络上各种端口可能开放的概率并排列出最有可能开放端口的列表具体可以参见nmap-services文件。默认情况下Nmap会扫描最有可能的1000个TCP端口。 ● --port-ratioratio扫描指定频率以上的端口。与上述--top-ports类似这里以概率作为参数概率大于--port-ratio的端口才被扫描。显然参数必须在01之间想了解具体的概率范围可以查看nmap-services文件。 与版本侦测相关的参数如下所示。 ● -sV指定让Nmap进行版本侦测。 ● --version-intensitylevel指定版本侦测的强度09默认为7。数值越高探测出的服务越准确但是运行时间会比较长。 ● --version-light指定使用轻量级侦测方式intensity 2。 ● --version-all尝试使用所有的probes进行侦测intensity 9。 ● --version-trace显示出详细的版本侦测过程信息。在了解以上参数及其含义后再来看用法会更好理解扫描命令格式:Nmap扫描参数目标地址或网段。比如一次完整的Nmap扫描命令如下:nmap -T4 -A -v ip其中-A表示使用进攻性Aggressive方式扫描-T4表示指定扫描过程使用的时序Timing共有6个级别05级别越高扫描速度越快但也容易被防火墙或IDS检测并屏蔽掉在网络通信状况良好的情况下推荐使用T4。-v表示显示冗余verbosity信息在扫描过程中显示扫描的细节有助于让用户了解当前的扫描状态。3.2 常用方法Nmap的参数较多但是通常用不了那么多以下是在渗透测试过程中比较常见的命令。1.扫描单个目标地址在Nmap后面直接添加目标地址即可扫描如下图所示nmap 192.168.0.1002.扫描多个目标地址如果目标地址不在同一网段或在同一网段但不连续且数量不多可以使用该方法进行扫描如下图所示nmap 192.168.0.100 192.168.0.1053.扫描一个范围内的目标地址可以指定扫描一个连续的网段中间使用“-”连接例如下列命令表示扫描范围为192.168.0.100192.168.0.110如下图所示nmap 192.168.0.100-1104.扫描目标地址所在的某个网段以C段为例如果目标是一个网段则可以通过添加子网掩码的方式扫描下列命令表示扫描范围为192.168.0.1192.168.0.255如下图所示nmap 192.168.0.100/245.扫描主机列表targets.txt中的所有目标地址扫描targets.txt中的地址或者网段此处导入的是绝对路径如果targets.txt文件与 nmap.exe在同一个目录下则直接引用文件名即可如下图所示:nmap -iL C:\\Users\\Aerfa\\Desktop\\targets.txt6.扫描除某一个目标地址之外的所有目标地址下列命令表示扫描除192.168.0.105之外的其他192.168.0.x地址从扫描结果来看确实没有对192.168.0.105进行扫描如下图所示nmap 192.168.0.100/24 -exclude 192.168.0.1057.扫描除某一文件中的目标地址之外的目标地址下列命令表示扫描除了target.txt文件夹中涉及的地址或网段之外的目标地址。还是以扫描192.168.0.x网段为例在targets.txt中添加192.168.0.100和192.168.0.105从扫描结果来看已经证实该方法有效可用如下图所示nmap 192.168.0.100/24 -excludefile C:\\Users\\Aerfa\\Desktop\\targets.txt8.扫描某一目标地址的21、22、23、80端口如果不需要对目标主机进行全端口扫描只想探测它是否开放了某一端口那么使用-p参数指定端口号将大大提升扫描速度如下图所示nmap 192.168.0.100 -p 21,22,23,809.对目标地址进行路由跟踪下列命令表示对目标地址进行路由跟踪如图下所示nmap --traceroute 192.168.0.10510.扫描目标地址所在C段的在线状况下列命令表示扫描目标地址所在C段的在线状况如下图所示nmap -sP 192.168.0.100/2411.目标地址的操作系统指纹识别下列命令表示通过指纹识别技术识别目标地址的操作系统的版本如下图所示nmap -O 192.168.0.10512.目标地址提供的服务版本检测下列命令表示检测目标地址开放的端口对应的服务版本信息如下图所示nmap -sV 192.168.0.10513.探测防火墙状态在实战中可以利用FIN扫描的方式探测防火墙的状态。FIN扫描用于识别端口是否关闭收到RST回复说明该端口关闭否则就是open或filtered状态如下图所示nmap -sF -T4 192.168.0.1053.3 状态识别Nmap输出的是扫描列表包括端口号、端口状态、服务名称、服务版本及协议。通常有如下表所示的6种状态。了解了以上状态在渗透测试过程中将有利于我们确定下一步应该采取什么方法或攻击手段。3.4 脚本介绍Nmap的脚本默认存在/xx/nmap/scripts文件夹下如下图所示Nmap的脚本主要分为以下几类:● Auth负责处理鉴权证书绕过鉴权的脚本。 ● Broadcast在局域网内探查更多服务的开启情况如DHCP/DNS/SQLServer等。 ● Brute针对常见的应用提供暴力破解方式如HTTP/SMTP等。 ● Default使用-sC或-A选项扫描时默认的脚本提供基本的脚本扫描能力。 ● Discovery对网络进行更多信息的搜集如SMB枚举、SNMP查询等。 ● Dos用于进行拒绝服务攻击。 ● Exploit利用已知的漏洞入侵系统。 ● External利用第三方的数据库或资源。例如进行Whois解析。 ● Fuzzer模糊测试脚本发送异常的包到目标机探测出潜在漏洞。 ● Intrusive入侵性的脚本此类脚本可能引发对方的IDS/IPS的记录或屏蔽。 ● Malware探测目标机是否感染了病毒、开启后门等信息。 ● Safe此类与Intrusive相反属于安全性脚本。 ● Version负责增强服务与版本扫描功能的脚本。 ● Vuln负责检查目标机是否有常见漏洞如MS08-067。用户还可根据需要设置–script类别进行扫描常用参数如下所示:● -sC/--scriptdefault使用默认的脚本进行扫描。 ● --scriptLua scripts使用某个脚本进行扫描。 ● --script-argskey1value1, key2value2······该参数用于传递脚本里的参数 key1是参数名该参数对应value1这个值。如有更多的参数使用逗号连接。 ● -script-args-filefilename使用文件为脚本提供参数。 ● --script-trace如果设置该参数则显示脚本执行过程中发送与接收的数据。 ● --script-updatedb在Nmap的scripts目录里有一个script.db文件该文件保存了当前Nmap可用的脚本类似于一个小型数据库如果我们开启Nmap并调用了此参数则Nmap会自行扫描scripts目录中的扩展脚本进行数据库更新。 ● --script-help调用该参数后Nmap会输出该脚本对应的脚本使用参数以及详细的介绍信息。3.5 实例1.鉴权扫描使用–scriptauth可以对目标主机或目标主机所在的网段进行应用弱口令检测如下图所示nmap --scriptauth 192.168.0.1052.暴力破解攻击Nmap具有暴力破解的功能可对数据库、SMB、SNMP等进行简单密码的暴力猜解如下图所示nmap --scriptbrute 192.168.0.1053.扫描常见的漏洞Nmap具备漏洞扫描的功能可以检查目标主机或网段是否存在常见的漏洞如下图所示nmap --scriptvuln 192.168.0.1054.应用服务扫描Nmap具备很多常见应用服务的扫描脚本例如VNC服务、MySQL服务、Telnet服务、Rsync服务等此处以VNC服务为例如下图所示nmap --scriptrealvnc-auth-bypass 192.168.0.1055.探测局域网内更多服务开启的情况输入以下命令即可探测局域网内更多服务开启的情况如下图所示nmap -n -p 445 --scriptbroadcast 192.168.0.1056.Whois解析利用第三方的数据库或资源查询目标地址的信息例如进行Whois解析如下图所示nmap -script external baidu.com网络安全学习路线学习资源网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底6k就算你底子差如果能趁着网安良好的发展势头不断学习日后跳槽大厂、拿到百万年薪也不是不可能初级网工1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗【“脚本小子”成长进阶资源领取】7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级网工这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。感兴趣的童鞋可以研究一下不懂得地方可以【点这里】加我耗油跟我学习交流一下。网络安全工程师企业级学习路线如图片过大被平台压缩导致看不清的话可以【点这里】加我耗油发给你大家也可以一起学习交流一下。一些我自己买的、其他平台白嫖不到的视频教程需要的话可以扫描下方卡片加我耗油发给你都是无偿分享的大家也可以一起学习交流一下。网络安全学习路线学习资源结语网络安全产业就像一个江湖各色人等聚集。相对于欧美国家基础扎实懂加密、会防护、能挖洞、擅工程的众多名门正派我国的人才更多的属于旁门左道很多白帽子可能会不服气因此在未来的人才培养和建设上需要调整结构鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”才能解人才之渴真正的为社会全面互联网化提供安全保障。特别声明此教程为纯技术分享本书的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失