Proxy
从Proxy模块开始是因为这个模块可以说是burpsuite的核心,多数的功能都是基于在这个模块的基础上去使用的
开始前的两个准备
- 打开Burpsuite
- 配置好浏览器代理,并且安装好了CA证书
准备好了就让我们先来看看Burpsuite2021的Proxy界面,简单了解一下菜单栏中一些按键的功能
- Intercept(拦截功能),这个是Proxy模块也是Burpsuite的核心功能,我们抓取数据包对数据包进行增删改等操作都是在这里面进行
- HTTP history/WebSocket history(历史记录),这两个功能会记录通过Burpsuite代理发起的HTTP/WebSocket请求以及对应响应的内容
- Options(Proxy配置),在这里面可以对Proxy模块的功能进行一些配置
下面会对它们进行逐一介绍
Intercept(拦截功能)
首先呢我们可以点击Intercept is off
,然后它就会变成Intercept is on
,这样Burpsuite就会开始拦截我们通过浏览器发起的请求,如果想关闭拦截功能再点一下Intercept is on
即可
如图所示,打开拦截功能后我们直接用浏览器访问自己需要拦截请求的URL
注:
- 如果暂时不知道要抓哪个页面的请求我们可以先关闭拦截,等找到自己想要抓取的页面在打开拦截,然后刷新一下页面即可
- 有时候Burpsuite会拦截很多不是我们想要的请求包,我们也可以重启开启一下拦截,然后马上刷新页面这样就可以抓到自己想要的包了,当然这个问题有更好的解决办法,后面会说
下面就是我拦截到的请求内容,这时候前面还是灰色的三个按键已经亮了起来,表示可以对这个数据包进行操作了,我先解释这几个按键的含义
- Forward,将当前拦截的数据放行,如果还有拦截到其他数据的话,放行了当前这条就会显示拦截的下一条,这些数据就像排队出关一样
- Drop,直接删除当前拦截的数据,那么这个请求就不会发出去了,自然也就不会有响应内容过来,页面会报错
- Action,可以对当前数据进行的一些操作,后面会细讲
- Open Browser,这个是一个新功能,点击它会打开一个Chrome浏览器,这个浏览器应该是内置在Burpsuite中的,使用这个浏览器我们可以不用进行配置代理以及CA证书安装等操作直接开始测试
然后是数据区域中的标签含义
-
Raw,这个是数据的主要视图格式,它里面包含了HTTP请求的方法,地址,协议版本,请求头,等信息,如果是POST请求的话,在请求头的下面应该还会有请求的实体内容
-
Hex,这个是数据的二进制内容,它是以16进制的形式进行显示的,我们可以通过Hex编辑器直接对内容进行修改
-
\n这个的作用是显示当前请求数据中的换行符,效果很显而易见,要在Rwa视图中使用
-
\n旁边那三条横杆以及Action还有鼠标在数据区右击所弹出来的菜单栏,这几个东西都是一样的,后面一起说
在数据区的右侧还有这样一个东西,在这里面我们可以更直观的看到数据区中的一些内容,以及更方便的对他们进行修改,不会因为选取修改内容的失误而导致修改了我们不想修改的数据
- Request Attributes,这里可以设置HTTP请求协议的版本,以及请求的方法还有请求的路径
- Query Parameters,这里可以设置GET请求中的参数内容
- Body Parameters,这里可以设置POST请求中的参数内容
- Request Cookies,这里可以设置Cookie中的key或者值
- Request Headers,这里可以设置HTTP请求头
Action中的内容
东西有点多,可能不会对它每一行都进行详细介绍
-
联动扫描模块,把当前请求的目标放到扫描模块,进行扫描,这个扫描模块后面会说
- scan,发送到扫描模块
- Do passive scan,发起被动扫描
- Do active scan,发起主动扫描
-
将当前数据发送到其他模块,都是一些对应的模块名,这里就不细说了
-
Engagement tools,用一些工具对当前请求进行处理
-
Find references,在历史记录中找到有对当前请求地址进行引用的记录(其实也就是带有当前地址的请求记录)
-
Discover content,对请求的地址发起目录以及文件的扫描,这个挺有意思可以了解一下
进来的时候应该是默认在Control的,不过呢这里先说Config页面
刚开始看的时候觉得很厉害,但是现在我觉得它有点鸡肋了,首先自定义设置的字典设置了也没用,可能有特定的文件内容格式吧,但是也没有模板,其次它爆破的内容其实我们是不可控的,所以会枚举大量没有意义的内容,而且一点开始要爆破的路径都全确定了,即使中途更改字典也是没用的,需要重新打开设置才行
下面看下另外两个菜单栏的作用
site map中就可以看到它所收集到的文件和目录
-
Schedule task,设置一个定时任务,它应该是和扫描模块联动的,不过这里我也没仔细研究
-
Generate CSRF Poc,根据当前请求模块自动生成CSRF漏洞的利用脚本
-
-
Change request method,改变请求的HTTP方法
-
Change body encoding,改变请求内容的格式,它可以把正常的表单内容改成分块上传,以及GET请求
-
下面几个忽略
-
Don't intercept request,这里可以通过当前请求的一些值来设置不拦截对应的内容
- 不拦截这个域名
- 不拦截这个IP地址
- 不拦截这个文件拓展名
- 不拦截这个目录
-
Do intercept,拦截一些指定的东西,这里面就一个选项,就是拦截这个请求的响应包
-
URL-encode as you type,对你在这里面输入的一些特殊字符自动进行url编码
下面呢是对于一些小细节的介绍
-
target的设置,点击箭头所指的地方就会弹出这个框,这里显示的是请求所要发送的地址以及端口,如果勾中
Use HTTPS
那么端口号会自动转为443,还有只要这里的Host值不改,你随便修改请求内容中的那个Host头,数据还是会发往这个地址、
-
comment的设置,框框中是可以填写对这个数据包的备注,然后那个扇子一样的东西是可以设置这个请求在历史记录中的颜色,这样我们可以在历史记录中更方便的找到这个请求
例如我在这里写上
这是我抓到的第一个数据包
,然后把颜色设置为红色在历史记录中犹如鹤立鸡群,一下就能找到它
-
search,这个搜索框可以用来搜索请求中是否有我们需要的内容,旁边的齿轮是对它的设置,前两个好选项好理解,不过第三个我也没懂它什么意思,也试不出来
HTTP history/WebSocket history(历史记录)
这里呢只说HTPP history,另外一个和它差不多,HTTP history里面呢也只说它的过滤器,其他的都比较简单,能看懂
通过点击箭头所指的位置,它就会弹出Filter settings这个设置框,通过它我们可以对历史记录中的记录进行过滤,以便我们更好的查看
这里面呢总共有七个框,我们对他们的功能逐一进行介绍
-
Filter by request type(按请求的类型进行筛选)
-
Show only in-scope items(仅显示作用域内的记录),这个作用域是结合Burpsuite中的target模块来使用的
我进入Target的作用域设置中添加作用域
192.168.1.2
,然后勾上这个选项,历史记录中就只会出现192.168.1.2
这个地址的记录了 -
Hide items without responses(隐藏没有响应的记录)
-
Show only parameterized requests(显示有参数的请求),GET或者POST传参的都会显示
-
-
Filter by MIME type(根据MIME这个类型来进行过滤),MIME类型是Content-Type这个请求头的值,并且这里面是勾上的才会显示
-
Filter by status code(根据请求状态码来过滤),勾上的才会被显示
-
Filter by search term(根据搜索的内容来进行过滤),只会显示数据中存储指定搜索内容的记录
- Regex 启用正则
- Case sensitive 区分大小写
- Negative search 反向搜索(没有指定字符的返回会被匹配)
-
Filter by file extension(根据文件后缀名来过滤)
-
Filter by annotation(根据注释来过滤)
- Show only commented items,只显示有备注的记录
- Show only highlighted items,只显示设置了高亮的记录
-
Filter by listener(根据端口来过滤),从字面上我是这样理解的,但是尝试设置80或者443端口它都有显示任何内容,有点不理解了
Options(Proxy配置)
Options中主要分为8个区域,下面会逐一介绍
Proxy Listeners(配置代理监听地址)
这个模块主要是Proxy代理的地址进行设置,默认是127.0.0.1:8080
,在这里注意一点,正在监听的端口在Running中有一个小勾,有时候你发现Burpsuite设置好了代理也抓不到包,可以来这里看看,如果没有勾可能是端口被占用了,这时候要关闭占用端口的程序要么改端口
-
Add是添加监听地址
-
Edit是修改选中的监听地址
Add和Edit点击之后都是弹出同一个窗口界面, 所以就统一说了
- Loopback only 设置这个地址,那么Burpsuite的代理只有本地可以访问到
- All interfaces 设置这个的话,用户当前所处的环境中的设备都可以设置这个机器为代理,例如我们的手机和电脑在一个网络下,就可以设置wifi的代理为电脑的IP地址以及Burpsuite的代理端口,这样就可以拦截到手机上的HTTP/S请求包
- Specific address,这个就是选择主机指定的一个网卡地址进行监听了,对应网络地址下的设备也可以设置这个主机为代理
TLS Protocols是设置关于TLS协议的
HTTP这里面就一个选项,勾上就使用HTTP/2协议
-
Remove是删除选中的监听地址
最下面两个按键是搞CA证书的,这里就不说了
Intercept Client Requests(拦截请求的规则配置)
对请求的拦截进行配置,我们主要来看它的Add窗口
Add用于添加拦截规则,Edit其实也一样,只不过修改已有的规则而已
- Boolean operator,设置拦截规则的逻辑,And或者Or
- Match type,设置根据什么来拦截
- Domain name,根据域名拦截,可以指定只拦截这个域名的数据包,还是只不拦截这个域名的数据包,这个就是Burpsuite会抓到我们不想要的网站数据包时候的解决方案
- IP address,根据IP地址拦截,它的值可以是一个IP段
- Protocol,根据协议来拦截,只有HTTP和HTTPS可以选
- HTTP method,根据HTTP请求方法来拦截
- URL,根据URL来拦截
- File extension,根据文件拓展名来拦截
- Reuqest,根据请求的参数名来拦截
- Cookie name/Cookie value,根据Cookie的key或者值来拦截
- Any header,根据请求头来拦截
- Body,根据请求实体内容进行拦截
- Param name/Param value,根据参数名或者值来拦截
- Listener port,根据请求的端口进行拦截
- Match relationship,根据匹配类型的不同,内容可能也不同,不过也就是指定匹配/不匹配或者指定匹配什么
- Match condition,匹配的详细内容
Intercept Server Responses(拦截响应的规则配置)
这个和Intercept Client Requests没差很多,所以请参考上面
Intercept WebSockets Messages(拦截WebSockets的配置)
这个设置是否拦截WebSockets的消息,就两个设置,拦截客户端到服务器,拦截服务器到客户端
Response Modification(对响应内容的修改)
Match and Replace(通过正则匹配替换请求或响应的内容)
我在这里做个测试,下面的正常的抓包内容,参数名是useranme
我设置一个规则,将请求参数useranme改成name,保存后,再次抓包
username就被替换成了name
TLS Pass Through(TSL直接连接)
Miscellaneous(其他设置)
注:本文禁止转载,文章的内容如果有错误或者有可以改进的地方,可以在评论区指出,感谢