精华内容
下载资源
问答
  • BurpSuite是一款渗透测试工具,不了解的的可以访问:【工具-BurpSuiteBurpSuite专业版 安装和使用 1 重定向(302)跟随 场景:有时测试登陆访问时,会遇到重定向问题,无论传入什么值,返回都是302,无法判断...

    前言

    BurpSuite是一款渗透测试工具,不了解的的可以访问:【工具-BurpSuite】BurpSuite专业版 安装和使用

    1 重定向(302)跟随

    场景:有时测试登陆访问时,会遇到重定向问题,无论传入什么值,返回都是302,无法判断是否登陆成功。

    已DVWA的登陆页为例:使用admin/admin登陆

    发现请求信息被抓取,且发现:登陆账号和密码都是明文,可以遍历请求测试

    右键选择【Send to Intruder】,进行渗透测试

    【Intruder】中修改可变量:§admin§,在【Payloads】中选择密码字典进行测试

    结果:全是302,无法确定真实密码

    配置-attack重定向跟随,且带上cookie:

    再次测试:发现请求返回都变成了200,但是其中一个200返回的是登陆成功之后的欢迎页面!

    OK,重定向测试问题,解决!

    2 重定向+隐藏token

    场景:302重定向同时,还添加了隐藏token效验,来预防部分CSRF请求。

    解决:提交请求时,获取页面中隐藏的token值,并提交

    1、抓取请求,发送到Intruder,选择Password和user_token,使用Pitchfork(一一映射方式),即每次登陆密码都对应新的user_token

    2、线程数修改为1,因为一个user_token只能支持一次登陆测试,只要测试过一次,那么token就会失效。

    3、从页面中抓取user_token

    点击Refetch response,然后双击你需要抓取的内容,burp会自动帮你填充start和end的内容:

    PS:可是在302重定向场景下,response是无法直接返回请求相应的页面,因为请求过程是:A->B->C,这里能获取的内容为B而不是C,那怎么办?自己配置start和end(要保证唯一性):

    'user_token' value='
    
    ' />

    4、Payload1设置照旧,payload2,选择Recursive grep,payload内容会自动加载刚刚配置的截取规则,first request需要填写最新的user_token,去页面里看代码或者使用刚刚response里的value(在这之后没有使用过这个token)。

    5、测试成功,user_token会自动截取页面的值,进行请求:

    持续更新,敬请期待......

     

     


    爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!

    展开全文
  • BurpSuite更新( 2021·5.1版本) BurpSuite2021.5.1发布于2021年5月13日,属于稳定版本,此版本适合JAVA版本≥9 , 推荐使用JAVA13,包括对Intruder的多项改进,其中一项功能使您可以将Intruder攻击保存到项目文件中...
  • burp suite入门I get asked a lot about what tooling I’m using these days for web app pentesting, and why I’m not using Kali for everything. Seriously, stop telling me to use Kali. I like it, it’s ...

    burp suite入门

    I get asked a lot about what tooling I’m using these days for web app pentesting, and why I’m not using Kali for everything. Seriously, stop telling me to use Kali. I like it, it’s just fine, but I’m not ever going to use it as my daily driver, and sometimes I just want to be able to look at some API calls intelligently from my main OS.

    关于这些天我正在使用哪些工具进行Web应用程序渗透测试,以及为什么我不使用Kali进行所有测试,我被问到很多。 认真地说,别再告诉我要使用Kali。 我喜欢它,这很好,但是我永远不会将其用作日常驱动程序,有时我只是想能够从主操作系统中智能地查看一些API调用。

    Say what you want about Ubuntu, it’s certainly no Arch Linux, but for what I do (which, these days, is mostly development) it’s stable, easy to use, and gives me enough control to not complain very much. And hey, it’s not Windows. So, anyway, I’ve put together a little guide to help you get started pentesting from Ubuntu with Burp Suite.

    说出您想要的Ubuntu, 肯定不是Arch Linux ,但对于我所做的(如今主要是开发工作),它稳定,易于使用,并提供了足够的控制权,使我不会抱怨太多。 嘿,这不是Windows。 因此,无论如何,我整理了一些指南,以帮助您开始使用Burp Suite从Ubuntu开始进行渗透测试。

    安装 (Installation)

    Head over to Portswigger and get the download for Burp Suite Community Edition. You’ll get what is possibly the largest bash script I’ve ever seen in my life. So, in your terminal, migrate to whichever folder it downloaded to an run the following:

    前往Portswigger并获得Burp Suite社区版的下载。 您将获得我一生中见过的最大的bash脚本。 因此,在您的终端中,迁移到它下载的任何文件夹,然后运行以下命令:

    chmod +x burpsuite_community_linux_v<your version here>.sh
    ./burpsuite_community_linux_v<your version here>.sh

    That’ll take a moment to run, and when it’s done you’ll have the latest version of Burp Suite installed. I know, it’s surprising.

    这将需要一些时间才能运行,完成后,您将安装最新版本的Burp Suite。 我知道,这令人惊讶。

    最初设定 (Initial setup)

    Open up the program (either by running BurpSuiteCommunity in your terminal or hitting the super/windows key and searching for it). You’ll see a pretty little splash screen, and then this:

    打开程序(通过在终端中运行BurpSuiteCommunity或按超级/ Windows键并进行搜索)。 您会看到一个很小的启动屏幕,然后显示以下内容:

    Image for post

    Hit next…

    下一个…

    Image for post

    Hit next again…

    再次点击…

    Image for post

    Alright, now we’re in business. Next, you’ll want to set a few of the Proxy options so you can actually use the damn thing. Go to the proxy tab:

    好吧,现在我们在做生意。 接下来,您需要设置一些代理选项,以便您可以实际使用该死的东西。 转到代理标签:

    Image for post

    Click on the options tab. Here, you can set up the listeners that will essentially allow you to do a Man in the Middle attack on yourself, so you can view/modify/replay traffic in real time. Modify the current entry to allow invisible proxying, and create a new entry on port 8443 for HTTPS traffic, as seen below:

    单击选项选项卡。 在这里,您可以设置侦听器,从本质上讲,您可以对自己进行中间人攻击,因此您可以实时查看/修改/重播流量。 修改当前条目以允许隐形代理,并在端口8443上为HTTPS流量创建一个新条目,如下所示:

    Image for post
    now you can’t even see yourself
    现在你甚至看不到自己

    Remember to check off “Force use of TLS” when you create the listener for HTTPS:

    创建HTTPS侦听器时,请记住选中“强制使用TLS”:

    Image for post

    Bonus: if you never want to do this again, click the Burp menu (top left of main window) >> User Options >> Save user options and name the file something like burp.json . Now, you can load this template when you start a new project.

    奖励:如果您不想再执行此操作,请单击Burp菜单(在主窗口的左上角)>>用户选项>>保存用户选项,并将文件命名为burp.json 。 现在,您可以在开始新项目时加载此模板。

    设置浏览器 (Setting up your browser)

    To make use of Burp, we need some source of traffic. Let’s setup Firefox to be our testing browser. Open up Firefox and go to the preferences page. At the bottom, you’ll see Network Settings:

    要使用Burp,我们需要一些流量来源。 让我们将Firefox设置为我们的测试浏览器。 打开Firefox并转到首选项页面。 在底部,您将看到网络设置:

    Image for post

    Click on the Settings button beside that section, and you’ll see a window with proxy options pop up:

    单击该部分旁边的Settings按钮,您将看到一个窗口,其中弹出代理选项:

    Image for post

    Enter the loopback address for each, since Burp Suite is running locally, and make sure you use the correct port numbers. If you’ve been following this guide exactly, they will be 8080 for HTTP and 8443 for HTTPS.

    由于Burp Suite在本地运行,请为每个地址输入回送地址,并确保使用正确的端口号。 如果您一直严格按照本指南进行操作,那么对于HTTP,它们将是8080,对于HTTPS,它将是8443。

    Ok, now you have the means to direct the traffic to Burp Suite. Now, you need to force your browser, who really just wants to be secure, to trust Burp. So, in your browser, navigate to http://burp (exactly). You’ll see this nifty little screen:

    好的,现在您可以将流量定向到Burp Suite。 现在,您需要迫使实际上只是想确保安全的浏览器信任Burp。 因此,在您的浏览器中,精确地导航到http://burp 。 您会看到一个漂亮的小屏幕:

    Image for post

    Hidden in the top right corner is what we’re after. Click the ‘CA Certificate’ link and save it:

    隐藏在右上角的是我们想要的。 点击“ CA证书”链接并保存:

    Image for post

    That is the certificate that Burp Suite uses when signing HTTPS traffic. If you were only going to proxy HTTP traffic (good luck), you wouldn’t really need this, but that’s not the world we live in. Next, you’ll need to import this certificate into Firefox’s trusted certificate store. Go back to Preferences, and click on the Privacy & Security tab:

    那是Burp Suite在签署HTTPS流量时使用的证书。 如果您只打算代理HTTP通信(祝您好运),那么您实际上并不需要它,但这不是我们所生活的世界。接下来,您需要将此证书导入Firefox的受信任证书存储中。 返回“首选项”,然后单击“隐私和安全性”选项卡:

    Image for post

    Near the bottom, click on ‘View Certificates’. You’ll see a window listing all of the certificates you currently trust. At the bottom, click Import:

    在底部附近,单击“查看证书”。 您将看到一个窗口,列出了您当前信任的所有证书。 在底部,单击导入:

    Image for post

    Navigate to the folder where you saved the certificate from earlier and import it. Firefox will ask how you want to use it:

    浏览至先前保存证书的文件夹,然后将其导入。 Firefox会询问您如何使用它:

    Image for post

    We don’t really need this to identify anything but websites, so for the sake of ‘scurity, just check off the first box. Older versions of Firefox had more options, but I can’t recall what they were and I’m too lazy to look it up. Use your best judgement, security professional.

    除了网站之外,我们实际上不需要此标识,因此,为了确保安全,只需选中第一个框。 较旧版本的Firefox有更多选择,但我不记得它们是什么,而且我懒得查找它。 使用您最好的判断,安全专家。

    看一些交通 (Looking at some traffic)

    Now, we could go back to Burp and click on the proxy tab while navigating around the web all willy-nilly and capture everything going to and fro. But what about this project you’re working on where you really just need to see traffic from a certain domain or subdomain?

    现在,我们可以回到Burp并单击“代理”选项卡,同时在网络上随意浏览并捕获来回的一切。 但是,您正在从事的这个项目又是什么,您真的只需要查看来自特定域或子域的流量就可以了?

    Easy. Go to the Target tab:

    简单。 转到目标选项卡:

    Image for post

    We’re highly advanced, here, so click on the ‘Use advanced scope control’ checkbox. Really, it’s just easier to use I think:

    我们的位置非常先进,因此请点击“使用高级范围控件”复选框。 确实,我认为使用起来更简单:

    Image for post

    So, pretend we’re wanting to look at Twitter traffic and only want to view traffic from subdomains (like api.twitter.com). You would set a new target scope like so:

    因此,假装我们只想查看Twitter流量,而只想查看来自子域(如api.twitter.com)的流量。 您将设置一个新的目标范围,如下所示:

    Image for post

    Going back to the proxy tab, you may have to change the filters in the HTTP history to ensure you only see items from your scope. Click on the Filter bar right above the traffic history and make sure ‘Show only in-scope items’ is checked off:

    返回到“代理”选项卡,您可能必须更改HTTP历史记录中的过滤器,以确保仅看到范围内的项目。 点击流量历史记录上方的过滤器栏,并确保已选中“仅显示范围内的物品”:

    Image for post

    Navigate to Twitter, log in, and click around on stuff. You can now see only the traffic coming from Twitter subdomains (the Repeater tab is shown below):

    导航到Twitter,登录,然后在内容上单击。 现在,您只能看到来自Twitter子域的流量(“中继器”选项卡如下所示):

    Image for post

    You’ll notice that I’ve magically switched to dark mode, check this article out to be a big copy cat and do the same.

    您会注意到,我已经神奇地切换到黑暗模式, 将本文检查为模仿大猫,然后执行相同操作。

    结语 (Wrapping it up)

    That’s pretty much it, you should be good to go. So what’s next? Anything you want really. I use Burp to pentest (obviously), assist with API development, and diagnose weird website issues. If you haven’t worked it into your web app pentesting work flow, do it now!

    差不多就可以了,您应该很好。 下一个是什么? 您真正想要的任何东西。 我使用Burp进行渗透测试(显然),协助API开发,并诊断奇怪的网站问题。 如果您尚未将其纳入网络应用程序渗透测试工作流程中,请立即执行!

    关于作者 (About the author)

    Andrew is a CyberSecurity Engineer and Software Developer specializing in Phishing Simulation. When he’s not writing articles, you can catch him on Twitter or Linkedin.

    安德鲁(Andrew)是专门从事网络钓鱼模拟的网络安全工程师和软件开发人员。 当他不写文章时,您可以在 Twitter Linkedin 上找到他

    翻译自: https://medium.com/swlh/getting-started-with-burp-suite-on-ubuntu-3c1e665122a3

    burp suite入门

    展开全文
  • burpsuite实战指南--如何使用burpsuite

    万次阅读 多人点赞 2018-06-19 10:52:33
    1. 学习Proxy首先看标红,intercept is on 为拦截状态 其对应的intercept is off 为非拦截状态,设置完代理后打开拦截状态,浏览器发起的请求会被burpsuite所拦截forward: 进行请求后被拦截,点击forward可以继续...

    1. 学习Proxy
    首先看标红, intercept is on 为拦截状态  其对应的 intercept is off 为非拦截状态,设置完代理后打开拦截状态,浏览器发起的请求会被burpsuite所拦截
    forward: 进行请求后被拦截,点击forward可以继续此次请求,如果你点击 drop则丢弃此请求数据。
    继续请求后能够看到返回结果

    可以在消息分析选项卡查看这次请求的所有内容

    1. Raw 这个视图主要显示web请求的raw格式,包含 请求地址http协议版本, 主机头, 浏览器信息,accept可接受的内容类型,字符集,编码方式,cookies等,       可以手动修改这些内容,然后在点击forward进行渗透测试

    2. params 这个视图主要是显示客户端请求的参数信息,get或者post的参数,cookies参数,也可以修改
    3.headers是头部信息和Raw其实差不多,展示更直观
    4.Hex 这个试图显示Raw的二进制内容


    注意: 默认情况下,BurpProxy只拦截请求的消息,普通的文件如css,js,图片是不会拦截的,当然,想拦截什么都可以设置,我们现在知道了怎么设置代理,怎么安装,怎么进行请求拦截,怎么修改请求发起的内容向服务端进行渗透,接下来我们学习一下怎么控制这些拦截

    上图为http history 所有拦截的历史均会被记录起来
    在 http history中能够通过7种情况进行请求过滤:
    • 按照请求类型过滤 你可以选择仅显示当前作用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前作用域”时,此作用域需要在Burp Target的Scope选项中进行配置,详细请阅读Burp Target相关章节。

    • 按照MIME类型过滤 你可以控制是否显示服务器端返回的不同的文件类型的消息,比如只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其他文本、图片、Flash、二进制文件 8种形式。

    • 按照服务器返回的HTTP状态码过滤 Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。比如,如果你只想显示返回状态码为200的请求成功消息,则勾选2XX。

    • 按照查找条件过滤 此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你可以选择 1.正则表达式 2.大小写敏感 3.否定查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将不再显示。

    • 按照文件类型过滤 通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅仅显示哪些,另一个是不显示哪些。如果是仅仅显示哪些,在show only的输入框中填写显示的文件类型,同样,如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。

    • 按照注解过滤 此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。

    • 按照监听端口过滤 此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,我们很少用到


    Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是:  Forward 的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。  Drop 的功能是你想丢失当前拦截的消息,不再forward到服务器端。 Interception is on 表示拦截功能打开,拦截所有通过Burp Proxy的请求数据; Interception is off 表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。  Action 的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。                                                                                                                                             

         



    接下来我们主要介绍一下 options
    1.proxyListeners 

    前面介绍过了,配置代理使用时可以使用
    2.intercept Client REQUESTS
    客户端请求消息拦截:  Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数, cookies, 头部或者内容, 状态码, MIME类型, HTML页面的title等。relationship表示此条规则是匹配还是不匹配Match condition输入的关键字。当我们输入这些信息,点击【OK】按钮,则规则即被保存。

    如果intercept request based on the follow rules的checkbox被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的
    如果Automatically fix missing的checkbox被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。
    如果Automatically update Content-Length的checkbox被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值

    其他的配置和上面的大同小异,理解其意思就可以根据自己的需要进行配置

    本章节主要是对proxy的所有功能进行介绍,先让大家熟悉界面上的所有东西是什么意思,能做什么事情,我们在之后的博客更新会接着介绍。

    展开全文
  • 一段时间没写公众号了,最近写了个 burpsuite 数据收集的插件,于是想出一篇从头编写一个 burpsuite 插件的教程。这个插件的目的收集 burpsuite 请求中的数据,如请求中的子域名、文件名、目录名、参数名等,保存到...
    一段时间没写公众号了,最近写了个 burpsuite 数据收集的插件,于是想出一篇从头编写一个 burpsuite 插件的教程。 这个插件的目的收集 burpsuite 请求中的数据,如请求中的子域名、文件名、目录名、参数名等,保存到数据库,然后根据出现的次数进行排序,出现次数多的排在前面,从而强化我们的字典。 插件效果演示 先来看看插件的效果图: 53920a2fb0d39880d01324fe1d11d283.png 该插件会在 burp 上面新建一个标签页,用来保存一些配置,如数据库 ip 地址、端口、账号密码等。 还可以从数据库导出数据到文件作为字典,或者从文件中导入数据到数据库中,用于和别人分享及备份数据库。 导出的文件效果如下: acb8d5950e3f8efa1381e82e8ddc148a.png 0a557279f2b8f681e450273fc7f79c26.png 导出的字典文件是 txt 文件,主要是作为字典来使用,其中的内容是根据出现的次数来排序的, 如 /test/ 目录在 a.baidu.com 出现了一次,然后在 b.baidu.com 出现了一次,那么它的 count 值就是 2 。 目录在不同网站出现的次数越多,那么排名就会越前,证明该目录是最常现出的,因此应该把它放在前面提高命中率。   同理,对于请求中的参数名、文件名、子域名等数据,也是通过出现的次数来排序。 上图中,导出的还有 csv 文件,该文件含有出现的次数,可以通过该文件通过插件导入其它数据库,以实现备份或分享的功能。 插件开发 现在开始插件的开发,开发插件需要些前置的知识。 编写 burpsuite 插件需要对 Java 或 Python 语言有一定的基础,在这里我使用的是 Java,因为 Java 编写的插件在 burpsuite 加载得更快,性能更好。 在这里我使用的开发环境是 IDEA ,因为 IDEA 的智能补全功能就像知道我想打什么代码一样,十分强大。 在 IDEA 新建一个 gradle 项目,点击 Create New Project  70c8aa3cb49d2df2673f21075c8b3504.png 选择 Gradle 项目, Gradle 是一个构建工具,可以方便加载所需的代码仓库。 点击下一步。 5155fa694039d64073bf3dce7741b0de.png 给项目起个名称 b5c0d6a1b6545ab83c5a48ebc96c0914.png 新建完后,在 build.gradle 文件中添加以下依赖,也就是加载 burpsuite 插件API ,如果提示 auto import, 可以点击,从而自动从远程仓库加载 burpsuite API 。
    compile('net.portswigger.burp.extender:burp-extender-api:1.7.13')
    ‍ 同时在 plugins 里面添加 shadow 插件,该插件可以方便把项目打包成 jar 包。
    id 'com.github.johnrengelman.shadow' version '5.2.0'
    d7fdb171ec9a10c9d8cbb9383d260c8c.png 接着在 /src/main/java 目录处创建一个名为 burp 的包名,在 java 目录处右键 -> New -> Package  7b00b9d6891c4bb44bd63e37269320fe.png 973aae0712f9612cd0a62f2115dfb4f3.png 接着在该包上右键,新建一个名为 BurpExtender 的类。 9ac2472362cf3381a115399eb8ed0c8b.png dea0cb3c63e3fbbc1c8a646741a9e67d.png 这个包名和类名是固定的,burpsuite 加载插件时就是通过 burp.BurpExtender 来查找的,如果不这样起名,会报 ClassNotFoundException 。 BurpExtender 类需要实现 IBurpExtender 接口,burp 在加载插件时,会调用该接口,并传递 IBurpExtenderCallbacks 接口仅我们使用。 点击错误提示,实现接口中的方法 6fd0a8ae4150919af4da648ab601001b.png 6f3d0c00a4d278e8d529df797a8af54b.png 然后我们添加下面的代码为插件设置名称,并打印一 success 字符串
    callbacks.setExtensionName("data-collect2");callbacks.printOutput("load success");
    743925ec023d2430f6845b7a76632397.png 接着可以编译该项目成 jar 包,然后让 burp 加载看看效果。 点击右侧的 gradle 菜单,展开菜单,双击 shadowjar ,gradle 会自动编译项目成 jar 包,jar 包位于 build 目录中的 libs 目录中。 d299f9f2ee8066b333f89452e0a54c2e.png 接着在 burp 的扩展选项卡添加该 jar 包,点击 add  ce1b972455b89aeba104877956432d6d.png 选择 Java 扩展类型,选择我们的 jar 包,点击下一步 0a9d0977d65160eee04af00e3e0feadc.png 可以看到加载插件后成功打印了 success 字符串。 a5bee9bf65b400713c7ae0737b7f0821.png 添加标签页 接着我们要为插件创建一个标签页,先在IDEA中创建一个 Form,用于设计UI 761c9141c0300d5aa53c1788dda341d3.png d22289f63f0689b925fe98edf73f4ff7.png 创建的界面如下,左边的窗口中创建了两个文件,一个是 DataCollectGUI.java 文件,该文件与 form 文件绑定,一个是 DataCollectGUI.form 文件,可以在此文件上拖动控件来设计 UI 界面,当界面更新时,会自动生成代码插入 DataCollectGUI.java 文件中。 94e9d5645ac671a444292cb745d8edd7.png 接着从右边拖一个 JLabel(标签)、一个 JTextField(输入框)和 JButton(按钮) 到设计面板中,效果如下: 34c316bdfab7fe21c90eab183f2e08fa.png 然后给根面板设置个变量名,用于后面生成代码: 48f3aed6217e9db44ae7d81501302cc9.png 为了让 IDEA 打包 GUI 界面的类,需要在 build.gradle 添加以下依赖
    compile('com.intellij:forms_rt:7.0.3')
    3664a416ade9a6a73b5e0fdc66083a73.png 接着在设置中设置根据 Form 界面自动生成 Java 源码: dace81847a956b61f0f0b1bab88bd832.png 9050903175d655ff0067fba502a28723.png 然后在 Gradle 的编译选项中设置编译器是 IDEA 自带的编译器,这样才能自动更新 form 文件中的控件到代码中: 704dbccb797657a97e2d42cf1f8727c0.png 设置好后,点击构建图标,就会自动生成和 form 文件相关的代码,可以看到在 $$$setupUI$$$() 方法中自动生成了我们拖到界面中的3个控件。 注意,$$$getRootComponent$$$() 方法需要给界面中的JPanel 控件设置变量名才可以生成,参考上面的步骤。 1725cd1e3e76bfd03b4cbe3c87994337.png 接着需要回到 BurpExtender 类中,要为插件添加一个标签页,需要实现 ITab 接口 69f8a28f3036900baab574a35a568e18.png 实现 ITab 接口后,会有两个方法需要实现,其中 getTabCaption() 方法返回标签页的名称, getUiComponent() 方法返回我们创建的 UI 面板。 注意,需要在14行下调用 callbacks.addSuiteTab(this) 来注册接口。 接着双击 gradle 中的 shadowjar 按钮重新打包 jar 包,然后在 burp 重新加载插件,就可以看到效果图了: 3f11fc65a57a7f8169c7fb402130d66a.png 获取标签页设置内容 接下来我们需要获取标签页中的配置内容,可以通过添加事件监听器来实现。 回到 IDEA 的 form 文件中,在按钮上右键,点击 Create Listener,选择 ActionListener 81ca983c8c30198eb0654e9f6f9dfb20.png f44dcde1e77f7f4ab3cf7cdf58892af8.png 创建好后就可以编写点击按键时的代码逻辑了 01787d0e2cd8867f52f28cadf3b89885.png 在这里简单地把输入框中的内容打印在插件日志中,要把内容打印到插件日志中,我们需要获取 IBurpExtenderCallbacks 对象,可以修改构造函数,在初始化时传入: 94661134de3f4a6821d6e8d746f1bb0d.png 还需要修改 BurpExtender 中的代码,传入 callbacks 对象 56590882aed32cd753074ff0397b2f1a.png 接着在监听器中实现获取标题内容并打印到日志的代码,代码中29行通过 getText()方法获取输入框架的内容,然后在30行处通过 callbacks.printOutput()方法打印内容到日志中。 6ed38cea79243ea9db94f2acaaeb92d8.png 接着双击 gradle 中的 shadowjar 按钮重新打包 jar 包,然后在 burp 重新加载插件,在插件输入框中输入 hello world, 点击按钮,就会在插件日志中打印输入框中的内容了。 87e727fea3b488925834b737214c6dc4.png 7a55f37e18cd8a8d1da0dc8305816180.png 到此,我们可以获取插件输入框中的内容,这样我们就可以开始开发数据收集的插件了。 开发核心功能 由于插件代码比较多,这里就不一一介绍了,先导入开发完成的代码,可以到我的 github 上下载: https://github.com/QdghJ/burp_data_collector 使用 IDEA 导入项目 f21543382d90e60f476a0e378c28121e.png 选择 gradle 项目 54affeda1b472adc3d5bd52e73c0e141.png 导入后,我们来看看开发数据收集插件需要用到哪些库,首先需要 mysql 的 jdbc 驱动,然后是导出 csv 文件时用到的库: e4f1d923b2bca420790825fce43b583e.png 接着来看看项目的文件结构,在 dao 包中的主要是数据库的操作类,封装了数据库操作的代码,每个表一个类来插入和查询数据。 而 gui 包中的就是界面类。 e13352680b143173b87fe8ec89d4cf31.png 核心要点 这个插件的核心要点如下:
    1.  解析功能,解析请求中的各种数据,然后插入到数据库中。
    2. 数据库设计,关键体现在查询和插入数据的性能上,在被我的开发朋友调教后,重新设计SQL语句,从导入一次数据需要十几分钟,优化到了几秒内完成。
    3. 内存去重,在内存中保存已经插入的数据,如果重复了,就不插入数据库,可以极大地减少数据库的操作。
    4. 定时收集数据,每10分钟收集一次数据。
    5. 退出时收集数据,当 burp 退出时会进行最后一次数据收集,不用人工收集。
    解析请求 首先是解析功能,该功能在 BurpExtender 类的 saveData() 方法中,该方法会在点击 export data to database 按钮后或定时收集时调用,用于解析请求历史中的数据,并保存到数据库中。 在 329 行处调用 callbacks.getProxyHistory() 方法获取请求历史中的所有请求, 接着在 332 行处使用 for 循环遍历所有的请求, 在333行处解析请求内容,并在 334行处获取请求的 host,也就是主机名,如 www.baidu.com。 在 335 行处获取请求的路径,如 /aaa/bbb/ccc.php ,这里就收集到了请求中的路径。 然后在339行处插入到内存中,等到最后一次性插入数据库。 接着在 334 行到 359 行之间收集分离的目录,如 /aaa/bbb/ccc/ 目录,会收集 /aaa/bbb/ccc/, /aaa/bbb/ , /aaa/ 三个目录。 6b082df62bfd451896ddb4957833b983.png 接着在 361 行处从 path 中分离出目录,如 /aaa/bbb/ccc/, 那么会收集 /aaa/, /bbb/, /ccc/ 。   接着在 370 行处收集文件名, 如 /js/jquery.js, 那么会收集 jquery.js 。 然后在 376 行处分离主机名,也就是分离域名,只获取子域名,如域名是 aa.bb.cc.dd.ee ,那么会收集先收集分离后的子域名,如 aa, bb, cc, 然后收集 aa.bb.cc, bb.cc, cc 几个子域名。 811abaf01b8ec578e215375971ae6a8a.png 最后在 400 行处获取请求中的所有参数,402 行处的 2 代表 cookie 参数名,暂时不收集 cookie, 然后收集符合条件的参数名。 41350d2f48c14ee6b2bea4897e04b25d.png 数据库设计 数据库设计主要包括表结构的设计,导出语句的的设计,插入语句的设计。 数据库的设计对性能的影响很大,开始时我写的SQL语句收集一次数据需要20分钟,经过做开发的朋友改进后,只需1秒,所以写数据库代码就是写SQL语句。 首先是表的设计,本次要收集的数据上面已经介绍过,主要的表如下: 274d10826040a3f00799b1886e34d62e.png 8bf0ad86e1d7cb5da0c7560ad304eb8a.png 表的类型有两种,一种是 host_xxx_map 表,如 host_dir_map 表用于收集 host 信息及其对应的内容,表的字段有 host 和 dir ,上图可以看出 0.gravatar.com 这个 host 对应的目录有3个。 另一种表如,dir 表,用于导入 csv 文件中的数据,表的字段是 dir , count,分别是目录名和出现的数目,主要用于导入别人导出的 dir_import.csv, 当导出数据时,会合并这种表中的数据,再进行导出。 创建表的代码在 dao/DatabaseUtil 类中 b737ec46e2ce2c8d6f634ee647592024.png 接下来说下插入数据时的语句,插入数据时应该怎么处理呢,我一开始的时候设计的是这样的: 假设要插入一条数据, host 值是 www.baidu.com, dir 值是 /js/ 下面是伪代码
    数据库是否存在该记录 // 此处一条查询语句如果存在不插入如果不存在,插入该记录 //此处一条插入语句
    假设最坏的情况,我们访问的网站是从来没访问过的,第一次收集数据的时候所有数据都不存在,当该网站有1000条请求时,这里就会进行2000次数据库处理操作。 这样必然是分钟级别的插入,在这样设计时,我需要20分钟才完成一次数据收集。 当我的开发朋友看到这种操作时,内心是崩溃的,于是给我优化了下。 首先是数据库是否存在记录的问题,可以使用 INSERT IGNORE 来解决,该语句在插入数据时,如果存在,则不插入。 接着可以使用一条语句插入所有数据,语句如下:
    INSERT IGNORE INTO host_dir_map(host, dir) VALUES("www.baidu.com", "dir1"), ("www.baidu.com", "dir2"), ...("www.baidu.com", "dir1000")
    这样,2000条语句的操作就变成了一条语句完成,从20分钟的插入时间变成了1秒。 接着是导出数据的语句,如果要统计一个目录在所有 host 中出现的次数,需要使用到 group by 语句,语句如下:
    SELECT hdm.dir, COUNT(*) AS dirCount FROM host_dir_map hdm GROUP BY hdm.dir ORDER BY `dirCount` DESC
    通过使用 dir 字段来分组,然后通过 count(*) 来统计出现的次数,查询结果如下: 50d9889d98e1f90f19fff54e4ee39fb3.png 具体的导出代码如下: 91b830730da7f2aa25b2d1a79e67eba4.png 内存去重 插件是可以定时获取请求内容中的数据并插入数据库的,但每次定时操作时,不知道数据是否插入过数据库了,如果每次都插入全部数据到数据库,还是会影响性能。 因此有必要在每插入一个数据的时候,在内存中记录下该数据已经被插入,在第二次定时收集的时候,遇到已经插入过数据库的数据,就可以跳过此数据。 在内存中检查比在数据库中快很多,这样在导出一次全量的数据后,第二次定时收集的时候会快很多,因为只需要收集新出现的请求。 具体怎样实现呢? 我们需要使用 HashMap 和 HashSet 数据结构相结合。 HashMap 是一个键值对数据结构,也就是一个哈希桶,可以把一些键值对保存到该结构中进行快速查找。 HashSet 是一个集合,里面的数据是不重复的元素,也就是说 ,里面只会出现 aa,bb,cc ,而不会出现 aa,aa,bb,cc。 我们可以组合两个数据结构来实现保存 host 对应的 dir 。 具体结构如下图: f9b513b716232717a0445c38bab31b0c.png 上图中,www.baidu.com 是一个键,对应的值是一个 hashset 结构,hashset里面装有这个 host  所有的目录。 由于有多个表的内容要保存,只要加多一层 HashMap 就可以实现保存所有表了。 c190d7810b033a629fa572abb31beba4.png 具体实现代码如下:
    private boolean addToMemory(String host, String value, String flag) {        boolean result = true;        HashMap> hostHashMap = memoryHostValueMap.get(host);if (hostHashMap == null) {            hostHashMap = new HashMap<>();            HashSet hostHashSet = new HashSet<>();            hostHashSet.add(value);            hostHashMap.put(flag, hostHashSet);            memoryHostValueMap.put(host, hostHashMap);            result = false;        } else {            HashSet hostHashSet = hostHashMap.get(flag);if (hostHashSet == null) {                hostHashSet = new HashSet<>();                hostHashSet.add(value);                hostHashMap.put(flag, hostHashSet);                result = false;            } else {if (!hostHashSet.contains(value)) {                    hostHashSet.add(value);                    result = false;                }            }        }return result;    }
    flag 值代表保存的是哪种类型的数据,如 dir、path。 以上代码的逻辑是判断内存中是否存在该数据,不存在则插入并返回 false。 在解析数据的时候,可以根据 addToMemory() 函数的返回值来决定是否把数据添加到插入队列中。 具体流程如下: 解析数据时,先通过 checkDir 函数检查是否需要插入数据库 e13f50dd23099840125db65b9dd0dfc1.png checkDir() 函数调用 addToMemory() 函数判断内存中是否存在该数据了 443a45ff0fb1c99a74e499ee2ce6b14c.png 回到上面的367行处,接着调用 addToInsertMap() 函数把数据保存到插入队列中,addToInsertMap() 函数和 addToMemory() 相似,区别是只保存新增的数据: 624795acd87145ef942660460a18d341.png 在 saveData() 函数的最后会取出内存中保存的新增数据,一次性插入数据库中: 1212e3d3e8447c06b23d607bf130d0fa.png 小细节 这个插件比较方便的是会定时保存数据以及在退出 burp 时保存数据。 定时保存数据使用 ScheduledExecutorService 对象定时执行任务:
    service = Executors.newSingleThreadScheduledExecutor();service.scheduleWithFixedDelay(new Runnable() {@Overridepublic void run() {        BurpExtender.this.saveData();        callbacks.printOutput("Scheduled export execution completed");    }}, 0, 10, TimeUnit.MINUTES);
    退出 burp 时保存数据需要实现 IExtensionStateListener,  并在  extensionUnloaded() 方法中保存数据 c8a99cc8a99302a7db41a775b68750b5.png 插件的开发到这里就完成了,具体的实现可以下载源码来查看,喜欢我的文章的可以关注下我的公众号,以后可能会继续发些工具开发的文章。 https://github.com/QdghJ/burp_data_collector 这个插件的开发要感谢我的基友,让我的数据库性能得到了极大的提升。
    往期文章python协程学习——写个并发获取网站标题的工具一些相见恨晚的BurpSuite插件推荐
    
    	
    展开全文
  • 01 BurpSuite 安装

    2021-03-01 14:08:56
    BurpSuite 安装1. BurpSuite 功能介绍1.1 什么叫做抓包?1.2 BurpSuite 安装: 1. BurpSuite 功能介绍 Burp Suite (简称Burp)是一款Web安全领域的跨平台工具,基于Java开发。它集成了很多用于发现常见Web漏洞的模
  • 安全测试:BurpSuite 学习使用教程

    万次阅读 多人点赞 2017-09-26 16:10:16
    Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,...
  • burpsuite简介

    千次阅读 2019-01-25 16:47:04
    1 burpsuite简介 burpsuite作为web渗透较为常用的软件,有着9个比较常用的模块——proxy,target,intruder,comparer,repeater,decoder,extendere,sqlmap,csrf。下面将对这九个模块进行一一介绍 1.1 proxy ...
  • Burp Suite学习

    2019-04-14 22:31:34
    这几天贪玩了,只学了一下午加一个晚自习的Burp Suite,学的很浅显,所以这里我只能写一写我对Burpsuite浅显的理解。 Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了...
  • 【工具-BurpSuiteBurpSuite专业版 安装和使用

    万次阅读 多人点赞 2019-10-15 17:48:27
    1 免费版本安装 当前版本:2.1.04 免费版本下载地址:...Burp Scanner 工作空间的保存和恢复 拓展工具,如Target Analyzer, Content Discovery和 Task Scheduler 2.1BurpSui...
  • burpsuite不能成功注册的

    千次阅读 2018-09-26 15:59:37
    BurpSuite更新之后,以前的License Key全部失效,必须再次注册,这时网上传出了神器,详细的安装教程点击这个,这个注册机制实测可用,但是我在安装的时候还是出现了一点问题, 点击run的时候,输入license key 的...
  • Burp Suite 实战指南

    2019-10-02 21:16:30
    第一部分 Burp Suite 基础Burp Suite 安装和环境配置Burp Suite代理和浏览器设置如何使用Burp Suite 代理SSL和Proxy高级选项如何使用Burp Target如何使用Burp Spider如何使用Burp Scanner如何使用Burp Intruder如何...
  • burpsuite pro 1.6

    2018-04-08 12:18:56
    Burp Proxy 把所有通过的请求和响应解析为连接和形式,同时站点地图也相应地更新。由于完全的控制了每一个请求,你就可以以一种非入侵的方式来探测敏感的应用程序。 当你浏览网页(这取决于定义的目标范围)时,通过...
  • Burpsuite使用

    2019-04-22 23:36:03
    Burpsuite使用 下载JDK配置Java环境 工具安装Burpsuite(破解版) 1.7安装 2.0安装 需要和浏览器配置好代理 proxy 驱动测试流程功能的核心,通过代理模式,拦截,查看,修改所有在客户端和服务器之间的数据。 ...
  • burpsuite 实战指南

    2020-04-19 07:24:58
    第一章 Burp Suite 安装和环境配置 Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,我们使用Burp Suite将使得...
  • Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、...
  • Burp Suite 界面介绍

    千次阅读 2017-12-17 18:35:21
    Burp Suite 界面介绍Burp Suite 是用于web攻击应用程序的集成平台。——————-导航栏①Burp BurpSuit Search搜索 Save state保存状态 Restore state恢复状态 Remember settings记住设置 Restore defauits...
  • 0×00 带有token 保护的应用 有这样的一个应用(自己写的一个, 后面会附上代码),你手动去注入的时候,...Burpsuite 重放失败 查看页面源代码 ,发现有个隐藏的token字段 说明后端对token进行了校
  • Burp Suite安装配置

    2020-07-30 11:52:52
    Burp Suite安装配置详解1.Java 安装与环境配置详解1.0 下载Java SDK 1.8 最新版2.0 配置Java 环境变量2.Burp Suite...
  • BurpSuite使用大全(详解)

    千次阅读 多人点赞 2020-06-12 20:31:24
    #BurpSuite使用大全(详解) 十八章系列第一章 Burp Suite 安装和环境配置第二章 Burp Suite代理和浏览器设置IE设置FireFox设置Google Chrome设置第三章 如何使用Burp Suite代理Burp Proxy基本使用数据拦截与控制...
  • Kali 配置BurpSuite Professional 教程

    千次阅读 热门讨论 2020-11-08 14:45:53
    Kali 配置BurpSuite Professional相关环境准备在Kali中配置JDK13的环境破解BurpSuite Professional设置快捷启动方式 相关环境准备 由于使用的是新版的BurpSuite Professional 所以需要下载大于JDK8的版本 下载地址...
  • Burp Suite 初级使用

    2021-01-05 21:31:31
    什么是Burp Suite Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些...
  • BurpSuite最详细教程

    2018-01-09 13:03:35
    Burp Suite是用于攻击 web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个...
  • BurpSuite是进行Web应用安全测试集成平台。它将各种安全工具无缝地融合在一起,以支持整个测试过程中,从最初的映射和应用程序的攻击面分析,到发现和利用安全漏洞。Burpsuite结合先进的手工技术与先进的自动化,使...
  • burpsuite1.7 安装及简单介绍

    万次阅读 多人点赞 2018-03-19 21:15:19
    这个版本是 burpsuite_pro_v1.7.30 ##### 我 # 是 # 没 # 有 # 感 # 情 # 的 # 分 # 界 # 线 ##### 更新: 看评论有不少人反映BP貌似用不了 所以我再附上几个链接哇 大家也可以试试 (亲测我的电脑都可以用........
  • Burp Suite简介简介Burp Suite中的一些工具SpiderProxyIntruderRepeaterSequencerDecoderExtenderScanner如何使用Burp Suite 简介 BurpBurp Suite是Java内置的多个工具的集合,用于对Web应用程序进行渗透测试。 它...
  • Burp Suite使用介绍

    千次阅读 2019-07-23 15:36:19
    Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个...
  • burpsuite入门,实用教程

    万次阅读 多人点赞 2017-08-04 22:40:44
    渗透测试综合工具——burpsuite 基本使用详细教程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,354
精华内容 941
关键字:

burpsuite更新