burpsuite 越权分析插件Auth Analyzer Plus

admin 2023年6月26日12:33:48评论32 views字数 2480阅读8分16秒阅读模式
在burpsuite中有许多测试越权的优秀插件
其中比较常用的就是Authz和Auth Analyzer了

burpsuite 越权分析插件Auth Analyzer Plus

他们的页面分别是这样的

burpsuite 越权分析插件Auth Analyzer Plus

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

burpsuite 越权分析插件Auth Analyzer Plus

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

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

burpsuite 越权分析插件Auth Analyzer Plus

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

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

如何实现

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

burpsuite 越权分析插件Auth Analyzer Plus

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

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

第一步:如何替换Cookie

burpsuite 越权分析插件Auth Analyzer Plus

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

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插件看看什么效果

burpsuite 越权分析插件Auth Analyzer Plus

第二步:如何替换host

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

具体的数据包

burpsuite 越权分析插件Auth Analyzer Plus

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

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

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

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

burpsuite 越权分析插件Auth Analyzer Plus

burpsuite 越权分析插件Auth Analyzer Plus

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

增加一点点细节

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

burpsuite 越权分析插件Auth Analyzer Plus

我们需要做的就是把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网站使用同一套系统
插件配置如下

burpsuite 越权分析插件Auth Analyzer Plus

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

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

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

原文始发于微信公众号(白帽子左一):burpsuite 越权分析插件Auth Analyzer Plus

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月26日12:33:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   burpsuite 越权分析插件Auth Analyzer Plushttp://cn-sec.com/archives/1834264.html

发表评论

匿名网友 填写信息