burpsuite 越权分析插件"Auth Analyzer Plus"

新闻资讯   2023-06-26 09:32   78   0  

扫码领资料

获黑客教程

免费&进群




在burpsuite中有许多测试越权的优秀插件
其中比较常用的就是Authz和Auth Analyzer了

他们的页面分别是这样的

简单说一下什么是越权
场景:已知admin的账号密码和一普通用户的账号密码
如果普通用户能够访问到只有admin有权访问的页面就称为越权
而这些插件实现的原理就是修改cookie来表示不同的用户

那么我遇到一个问题
场景:已知A网站的管理员账号密码,A网站的普通用户账号密码,B网站的普通用户账号密码,并且A网站和B网站用的是同一套系统

一般测越权的话就是测试A网站的管理员和A网站的普通用户
即交叉区域

为什么要测A网站的管理员和B网站的普通用户呢?

第一点,我们没有得到B网站的管理员权限
第二点,A网站的管理员和A网站的普通用户之间的越权不一定适用于B网站
虽然用的是同一套系统,由于管理员配置不一样,同一个越权点有的网站可以有的网站不可以

第三点,找出此套系统的通用越权漏洞
ABC均为同一套系统,
用一个管理员与其他网站的用户测试得到的相同部分极有可能为系统本身存在的越权漏洞

如何实现

首先在插件替换host和cookie的内容

这个方法是不行的,虽然在请求头里host是被替换成了网站B
但实际上访问的地址仍然是网站A
很明显插件只支持替换同一个域名下的cookie检测
也想过用宏定义能否实现
最后果然还是剩下这条路,魔改Auth Analyzer插件(当然我也是没开发过bp插件的)

于是乎,走上了学习开发bp插件的道路
这里主要是看代码怎么写
那些开发插件的环境先忽略
毕竟文章名字不叫"从零基础开发bp插件"

第一步:如何替换Cookie

红色框里的是重要的,其他的都是开发所需要固定套路

if (messageIsRequest){
IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo);
List<String> headers = analyzeRequest.getHeaders();//获取headers,结果为字符串列表
//遍历全部的代理头,如果是以Cookie开头则删除
for (String header : headers){
if (header.startsWith("Cookie")) {
headers.remove(header);
}
}
//添加新的代理头,即新的Cookie
headers.add("Cookie: new cookie");
//这里是遍历输出代理头
for (String header : headers){
stdout.println("header "+header);
}
}

把代码打包jar文件导入bp插件看看什么效果

第二步:如何替换host

注意:这里的host不是代理头里面的host,准确的说,也不是替换,而是以一个新的host

导入插件后看logger++
并且从日志可以看出第二个请求确确实实访问的是www.baidu.com
上面代码写死了就是要访问www.baidu.com发起一个一模一样但cookie不同的请求

具体的数据包

至此我们所需要的功能就做完了

第三步:修改Auth Analyzer插件源码

修改思路:如果在替换框里检测到Host,就建立一个新的service,以新的Host去发起请求

既然是修改源码那就必须知道需要修改的部分
源码目录如下

在代码中全局搜索找到含有makeHttpRequest的地方
在/src/com/protect7/authanalyzer/controller/RequestController.java发现如下

也就是说最后执行的service是由originalRequestResponse.getHttpService()得到的

修改这个service如下,让新的请求访问baidu,而其他不变

修改代码后打包成jar导入插件查看效果

至此,我们所需要的功能已经实现了

增加一点点细节

在原来的插件中,虽然把host替换成了xxx,但是访问的地址仍旧是原来的地址

我们需要做的就是把host真正替换掉,去访问替换后的host
修改源码如下

String newHost = "";
for(String header : modifiedHeaders){
if (header.startsWith("Host")){
newHost = header.substring(header.indexOf(":")+1);
}
}
//上面的代码负责遍历已修改过的headers,找出修改后的Host并提取出来
//下面的代码负责使用提取到的Host,发起一个新的请求
IHttpService service = originalRequestResponse.getHttpService();
IHttpService newService = BurpExtender.callbacks.getHelpers().buildHttpService(newHost, service.getPort(), service.getProtocol());
IHttpRequestResponse sessionRequestResponse = BurpExtender.callbacks.makeHttpRequest(newService, message);

此时就可以完美解决开始我所提出的问题
使用方法和原来的插件是一样的
现有A网站的管理员和B网站的普通用户,AB网站使用同一套系统
插件配置如下

然后只需要登录A网站的管理员去尝试所有功能就可以跨站测试越权了
改也改完来了,扔到github上,有需要的自取吧
https://github.com/VVeakee/auth-analyzer-plus

原文地址:https://xz.aliyun.com/t/12363

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

@
学习更多渗透技能!体验靶场实战练习

hack视频资料及工具

(部分展示)

往期推荐

给第一次做渗透项目的新手总结的一些感悟

「登陆页面」常见的几种渗透思路与总结!

突破口!入职安服后的经验之谈

红队渗透下的入口权限快速获取

攻防演练|红队手段之将蓝队逼到关站!

CNVD 之5000w通用产品的收集(fofa)

自动化挖掘cnvd证书脚本

Xray捡洞中的高频漏洞

实战|通过供应链一举拿下目标后台权限

实战|一次真实的域渗透拿下域控(内网渗透)

看到这里了,点个“赞”、“再看”吧

文章引用微信公众号"白帽子左一",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。