1.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.安装SQLMap
SQLMap的安装需要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/? id=11,判断其是否存在注入的下令如下所示:
- sqlmap.py -u http://192.168.1.104/sql1/Less-1/? id=1
复制代码 结果表现存在注入,如下图所示:
还有一种情况,当注入点后面的参数大于等于两个时,需要加双引号,如下所示。
- sqlmap.py -u "http://192.168.1.104/sql1/Less-1/? id=1&uid=2 "
复制代码 可以看到,运行完判断是否存在注入的语句后,“爆出”一大段代码,下面来分析代码反馈给我们的信息。这里有三处需要选择的地方:第一处的意思为检测到数据库大概是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/? id=1 --dbssqlmap.py -u http://192.168.1.104/sql1/Less-1/? id=1 --dbs
复制代码 从下图中可以看到,查询出了17个数据库及所有数据库的库名。当继续注入时,--dbs缩写成-D xxx,其意思是在xxx数据库中继续查询其他数据。
4.获取数据库中的表名
该下令的作用是查询完数据库后,查询指定数据库中所有的表名,如下所示。如果在该下令中不参加-D参数来指定某一个具体的数据库,那么SQLMap会列出数据库中所有库的表,如下所示:
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" -D dkeye --tables
复制代码
从上图中可以看到dkeye数据库中拥有的3个表名。当继续注入时,--tables缩写成-T,意思是在某表中继续查询。
5.获取表中的字段名
该下令的作用是查询完表名后,查询该表中所有的字段名,如下所示。运行该下令的结果如下所示:
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1"-D dkeye -T user_info --columns
复制代码
从上图中可以看到在dkeye数据库中的user_info表中一共有4个字段。在后续的注入中,--columns缩写成-C。
6.获取字段内容
该下令是查询完字段名之后,获取该字段中具体的数据信息,如下所示:
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" -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? id=1" --userssqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" --users
复制代码 可以看到,当前用户账号是root,如下图所示:
8.获取数据库用户的暗码
该下令的作用是列出数据库用户的暗码,如下所示。如果当前用户有读取包含用户暗码的权限,SQLMap会先罗列出用户,然后列出Hash,并尝试破解。
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" --passwords
复制代码 从下图中可以看到,暗码使用MySQL5加密,可以在www.cmd5.com中自行解密。
9.获取当前网站数据库的名称
使用该下令可以列出当前网站使用的数据库,如下所示。
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" --current-db
复制代码 从下图中可以看到数据库是’sql'。
10.获取当前网站数据库的用户名称
使用该下令可以列出当前网站使用的数据库用户,如下所示。
- sqlmap.py -u "http://192.168.1.7/sql/union.php? id=1" --current-user
复制代码 从下图中可以看到,用户是root。
4.SQLMap进阶
1.--level 5:探测等级
参数--level 5指需要实行的测试等级,一共有5个等级(1~5),可不加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? id=1" --is-dba
复制代码
3.--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? id=1" --sql-shell
复制代码
6.--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 Suite
1.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 Proxy
Burp 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 Spider
Spider的蜘蛛爬行功能可以帮助我们相识体系的结构,其中Spider爬取到的内容将在Target中展示,如下图所示,界面左侧为一个主机和目录树,选择具体某一个分支即可查看对应的哀求与响应。
2.3 Decoder
Decoder的功能比力简单,它是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 Scanner
Burp 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 Intruder
Intruder是一个定制的高度可设置的工具,可以对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 Repeater
Burp 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 Comparer
Burp Comparer在Burp Suite中重要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别,使用到的场合有:
● 罗列用户名的过程中,对比分析登录成功和失败时,服务端反馈结果的区别。
● 使用Intruder举行攻击时,对于不同的服务端响应,可以很快分析出两次响应的区别在那边。
● 举行SQL注入的盲注测试时,比力两次响应消息的差异,判断响应结果与注入条件的关联关系。使用Comparer时有两个步调,先是数据加载:
然后是差异分析:
Comparer数据加载的常用方式如下所示。
● 从其他Burp工具通过上下文菜单转发过来。
● 直接粘贴。
● 从文件里加载。加载完毕后,如果选择两次不同的哀求或应答消息,则下发的比力按钮将被激活,此时可以选择文本比力或字节比力。
3.5 Sequencer
Burp Sequencer是一种用于分析数据样本随机性质量的工具。可以用它测试应用程序的会话令牌(Session token)、暗码重置令牌是否可猜测等场景,通Sequencer的数据样天职析,能很好地降低这些关键数据被伪造的风险。
Burp Sequencer重要由信息截取(Live Capture)、手动加载(Manual Load)和选项分析(Analysis Options)三个模块构成。
在截取信息后,单击Load按钮加载信息,然后单击“Analyze now”按钮举行分析,如下图所示:
Nmap
1.Nmap详解
Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包罗主机探测与发现、开放的端口情况、操作体系与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap,分布式框架为DNmap。
Nmap的特点如下所示:
● 主机探测:探测网络上的主机,如列出响应TCP和ICMP哀求、ICMP哀求、开放特殊端口的主机。
● 端口扫描:探测目标主机所开放的端口。
● 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
● 体系检测:探测目标主机的操作体系及网络设备的硬件特性。
● 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言。
2.安装Nmap
Nmap的下载地址为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-servers<serv1[, 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端口状态。
- ● --scanflags<flags>:定制TCP包的flags。
- ● -sI<zombie host[:probeport]>:指定使用Idle scan的方式扫描目标主机(前提是需要找到合适的zombie host)。
- ● -sY/sZ:使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口的开放情况。
- ● -sO:使用IP protocol扫描确定目标机支持的协议类型。
- ● -b<FTP relay host>:使用FTP bounce scan扫描方式。
- 跟端口参数与扫描顺序的设置相关的参数如下。
- ● -p<port ranges>:扫描指定的端口。
- ● -F:Fast mode(快速模式),仅扫描TOP 100的端口。
- ● -r:不进行端口随机打乱的操作(如无该参数,Nmap会将要扫描的端口以随机顺序的方式进行扫描,让Nmap的扫描不易被对方防火墙检测到)。
- ● --top-ports<number>:扫描开放概率最高的number个端口(Nmap的作者曾做过大规模的互联网扫描,以此统计网络上各种端口可能开放的概率,并排列出最有可能开放端口的列表,具体可以参见nmap-services文件。默认情况下,Nmap会扫描最有可能的1000个TCP端口)。
- ● --port-ratio<ratio>:扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,概率大于--port-ratio的端口才被扫描。显然参数必须在0~1之间,想了解具体的概率范围可以查看nmap-services文件。
- 与版本侦测相关的参数如下所示。
- ● -sV:指定让Nmap进行版本侦测。
- ● --version-intensity<level>:指定版本侦测的强度(0~9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
- ● --version-light:指定使用轻量级侦测方式(intensity 2)。
- ● --version-all:尝试使用所有的probes进行侦测(intensity 9)。
- ● --version-trace:显示出详细的版本侦测过程信息。
复制代码 在相识以上参数及其寄义后,再来看用法会更好理解,扫描下令格式:Nmap+扫描参数+目标地址或网段。比如一次完备的Nmap扫描下令如下:
其中-A表示使用打击性(Aggressive)方式扫描;-T4表示指定扫描过程使用的时序(Timing),共有6个级别(0~5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通信状况良好的情况下保举使用T4。-v表示表现冗余(verbosity)信息,在扫描过程中表现扫描的细节,有助于让用户相识当前的扫描状态。
3.2 常用方法
Nmap的参数较多,但是通常用不了那么多,以下是在渗透测试过程中比力常见的下令。
1.扫描单个目标地址
在Nmap后面直接添加目标地址即可扫描,如下图所示:
2.扫描多个目标地址
如果目标地址不在同一网段,或在同一网段但不一连且数量不多,可以使用该方法举行扫描,如下图所示:
- nmap 192.168.0.100 192.168.0.105
复制代码
3.扫描一个范围内的目标地址
可以指定扫描一个一连的网段,中心使用“-”毗连,例如,下列下令表示扫描范围为192.168.0.100~192.168.0.110,如下图所示:
4.扫描目标地址所在的某个网段
以C段为例,如果目标是一个网段,则可以通过添加子网掩码的方式扫描,下列下令表示扫描范围为192.168.0.1~192.168.0.255,如下图所示:
5.扫描主机列表targets.txt中的所有目标地址
扫描targets.txt中的地址或者网段,此处导入的是绝对路径,如果targets.txt文件与 nmap.exe在同一个目录下,则直接引用文件名即可,如下图所示:
- nmap -iL C:\Users\Aerfa\Desktop\targets.txt
复制代码
6.扫描除某一个目标地址之外的所有目标地址
下列下令表示扫描除192.168.0.105之外的其他192.168.0.x地址,从扫描结果来看确实没有对192.168.0.105举行扫描,如下图所示:
- nmap 192.168.0.100/24 -exclude 192.168.0.105
复制代码
7.扫描除某一文件中的目标地址之外的目标地址
下列下令表示扫描除了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.txt
复制代码
8.扫描某一目标地址的21、22、23、80端口
如果不需要对目标主机举行全端口扫描,只想探测它是否开放了某一端口,那么使用-p参数指定端标语,将大大提升扫描速度,如下图所示:
- nmap 192.168.0.100 -p 21,22,23,80
复制代码
9.对目标地址举行路由跟踪
下列下令表示对目标地址举行路由跟踪,如图下所示:
- nmap --traceroute 192.168.0.105
复制代码
10.扫描目标地址所在C段的在线状况
下列下令表示扫描目标地址所在C段的在线状况,如下图所示:
- nmap -sP 192.168.0.100/24
复制代码
11.目标地址的操作体系指纹识别
下列下令表示通过指纹识别技能识别目标地址的操作体系的版本,如下图所示:
12.目标地址提供的服务版本检测
下列下令表示检测目标地址开放的端口对应的服务版本信息,如下图所示:
13.探测防火墙状态
在实战中,可以使用FIN扫描的方式探测防火墙的状态。FIN扫描用于识别端口是否关闭,收到RST回复说明该端口关闭,否则就是open或filtered状态,如下图所示:
- nmap -sF -T4 192.168.0.105
复制代码
3.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/--script=default:使用默认的脚本进行扫描。
- ● --script=<Lua scripts>:使用某个脚本进行扫描。
- ● --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会输出该脚本对应的脚本使用参数,以及详细的介绍信息。
复制代码 3.5 实例
1.鉴权扫描
使用--script=auth可以对目标主机或目标主机所在的网段举行应用弱口令检测,如下图所示:
- nmap --script=auth 192.168.0.105
复制代码
2.暴力破解攻击
Nmap具有暴力破解的功能,可对数据库、SMB、SNMP等举行简单暗码的暴力猜解,如下图所示:
- nmap --script=brute 192.168.0.105
复制代码
3.扫描常见的漏洞
Nmap具备漏洞扫描的功能,可以查抄目标主机或网段是否存在常见的漏洞,如下图所示:
- nmap --script=vuln 192.168.0.105
复制代码
4.应用服务扫描
Nmap具备很多常见应用服务的扫描脚本,例如VNC服务、MySQL服务、Telnet服务、Rsync服务等,此处以VNC服务为例,如下图所示:
- nmap --script=realvnc-auth-bypass 192.168.0.105
复制代码
5.探测局域网内更多服务开启的情况
输入以下下令即可探测局域网内更多服务开启的情况,如下图所示:
- nmap -n -p 445 --script=broadcast 192.168.0.105
复制代码
6.Whois解析
使用第三方的数据库或资源查询目标地址的信息,例如举行Whois解析,如下图所示:
- nmap -script external baidu.com
复制代码
更多扫描脚本的使用方法可参见https://nmap.org/nsedoc/categories。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望各人少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给各人分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料信赖各人都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完备的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |