草庐IT

渗透测试实战-BurpSuite 使用入门

流光D 2024-02-28 原文

前言

近期笔者在学习 web 渗透测试的相关内容,主要是为了公司之后的安全产品服务。渗透测试本身在学习过程中还是很有意思的,有一种学习到了之前想学但是没学的黑客技术的感觉,并且对笔者已掌握的许多知识做了有益的补充。要学习渗透测试,首先需要明白什么是渗透测试,以及如何进行渗透测试,这其中很多资料可以在网上找到。

什么是渗透测试

渗透测试是一项在计算机系统上进行的授权模拟攻击,旨在对其安全性进行评估。渗透测试人员使用与攻击者相同的工具、技术和流程,来查找和展示系统弱点对业务带来的影响。
渗透测试通常会模拟各种可能威胁您业务的攻击。渗透测试可以检查系统是否足够稳定,能否抵抗来自经过认证和未经认证的攻击,以及一系列系统角色发起的攻击。在合适的范围内,针对您需要评估的系统的任何方面,渗透测试都可以深入其中。

如何进行渗透测试

根据渗透测试的具体目标,组织针对目标系统向测试者提供不同级别的信息或访问权限。有时,渗透测试团队会在开始时设置一种方法并一直坚持下去。有时,测试团队会随着在渗透测试期间对系统认识的加深而改进其策略。在本行业中,我们讨论了三种类型的渗透测试:

  • 黑盒。 团队对目标系统的内部结构一无所知。他们充当黑客,探寻任何可从外部发起攻击的弱点。
  • 灰盒。 团队对一套或多套凭证有一定了解。他们还了解目标的内部数据结构、代码和算法。渗透测 试人员可以根据详细的设计文档(如目标系统的架构图),构建测试用例。
  • 白盒。 对于白盒测试,渗透测试人员可以访问系统和系统工件:源代码、二进制文件、容器,有时甚至是运行系统的服务器。白盒方法可在最短的时间内提供最高水平的安全保证。

渗透测试阶段

渗透测试人员意在模拟怀有动机的对手发起的攻击。为此,他们遵循的方案通常包含以下步骤:

  • 侦察。从公共和专用来源收集尽可能多的目标相关信息,以制定攻击策略。这些来源包括互联网搜索、域注册信息检索、社会工程、非侵入式网络扫描,有时甚至是搜索垃圾箱。这些信息有助于渗透测试人员破解出目标的攻击面和潜在漏洞。侦察可能因渗透测试的范围和目标不同而有所差异,可能简单到打个电话即可了解系统的功能。
  • 扫描。渗透测试人员使用工具检查目标网站或系统是否存在弱点,包括开放服务、应用安全问题和开源漏洞。渗透测试人员根据在侦察和测试期间的发现来使用各种工具。
  • 获得访问权限。攻击者可能怀有各种动机,可能是窃取、更改或删除数据,可能是转移资金,也可能仅仅是要损害您的声誉。在执行每个测试案例时,渗透测试人员都必须确定访问系统的最佳工具和技术,无论是利用弱点(如 SQL 注入),还是通过恶意软件、社会工程或其他方式。
  • 维护访问权限。一旦渗透测试人员取得目标的访问权限,其模拟攻击必须保持足够长时间的连接,以达成其目标:提取数据、修改数据或滥用功能。目标是展示潜在的影响。

渗透测试工具

渗透测试没有通用的解决方案。而是不同的目标需要使用不同的工具套件进行端口扫描、应用扫描、Wi-Fi 侵入或网络直接渗透。但一般而言,渗透测试工具的类型分为五个类别:

  • 用于发现网络主机和开放端口的侦察工具
  • 用于发现网络服务、Web 应用和 API 问题的漏洞扫描器
  • 代理工具(例如,专用网络代理或通用中间人代理)
  • 用于到达系统或访问资产的利用工具
  • 用于在利用之后与系统交互、维护和扩展访问权限以及实现攻击目标的工具

本文介绍的 BurpSuite 便是一款非常使用的渗透测试应用资产收集(所谓资产收集,主要就算收集目标站点有哪些接口、页面、静态资源等)工具。

BurpSuite 下载

BurpSuite 的版本很多,网上的很多资料介绍的版本都比较老旧,这边笔者推荐安装这个 2021 的汉化版本。另外因为 BurpSuite 是一款基于 Java 的工具,要安装使用需要电脑先安装 Java 环境。

BurpSuite 常用功能详解

BurpSuite 是一款基于 Java 的用于攻击Web应用程序的集合平台。常用来做渗透测试。BurpSuite 内置了很多实用的渗透测试工具。

  • 新版本的 BurpSuite (笔者使用的是 2021.12.1 版本的汉化版 BurpSuite)可不需要配置代理,直接访问内置的 chromuim 浏览器(chrome 浏览器的引擎,开源版本),在内置浏览器中访问目标网站即可进行抓包

  • 抓包功能,BurpSuite 的抓包功能在使用上其实和 WireShark 差不多,但是 WireShark 使用起来其实还要更麻烦一些,主要是因为现在的网站基本都是使用 https 协议进行数据传输,WireShark 在没有额外配置的情况下是读取不到 https 协议的内容的。旧版本的 BurpSuite 在抓包时也需要配置,但是新版本不需要了,只需要打开内置的浏览器对目标站点访问即可,然后在 Proxy -> HTTP history 中查看捕获的 http 请求


  • Proxy -> WebScokets history, 抓取 websocket 请求

  • 请求拦截功能,一般也是指 http 请求的拦截,这里需要注意的是查看 BurpSuite 目前的拦截状态

  • 关闭请求拦截不会有什么事情发生,而当打开了拦截请求后,默认所有的配置了 BurpSuite 代理的浏览器或其内置浏览器访问所有 web 站点时,请求都不会直接发送到服务端,需要点击“发送”按钮,http 请求才会发送

  • 重放器(Repeater),Repeater 在实际的渗透测试中非常常用,主要就是在抓取对应的 http 请求包后,将该请求发送到 Repeater 模块,在 Repeater 中可对原请求的请求头和请求内容进行修改,修改了之后重新发起该请求(所以被翻译为重放器)

  • web 站点资产收集。Target -> Site map 下列举了我们通过内置浏览器(配置了 BurpSuite 代理的浏览器,下同)访问的站点记录,另外我们可以通过鼠标右键选择“主动选择扫描此主机”,“被动扫描这台主机”来开启扫描任务。扫描任务可在 Dashboard 中查看到。

  • 任务面板 Dashboard 可以查看所有任务,包括未开始 已开始 已完成的任务。该 tab 记录了完整的任务执行日志和问题活动报告。

  • 主动扫描 web 站点和被动扫描 web 站点的区别:
    • 主动扫描(Active Scanning)

当使用主动扫描模式时,BurpSuite 会向应用发送新的请求并通过payload验证漏洞。这种模式下的操作,会产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:

  1. 客户端的漏洞,像XSS、Http头注入、操作重定向;
  2. 服务端的漏洞,像SQL注入、命令行注入、文件遍历。

对于第一类漏洞,BurpSuite 在检测时,会提交一下 input 域,然后根据应答的数据进行解析。在检测过程中,BurpSuite 会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。 对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说 SQL 注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。BurpSuite 在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改 Boolean 值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。

  • 被动扫描(Passive Scanning)

当使用被动扫描模式时,BurpSuite 不会重新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生成环境的检测。一般来说,下列这些漏洞在被动模式中容易被检测出来:

  1. 提交的密码为未加密的明文。
  2. 不安全的 Cookie 的属性,比如缺少的 HttpOnly 和安全标志。
  3. cookie 的范围缺失。
  4. 跨域脚本包含和站点引用泄漏。
  5. 表单值自动填充,尤其是密码。
  6. SSL 保护的内容缓存。
  7. 目录列表。
  8. 提交密码后应答延迟。
  9. session 令牌的不安全传输。
  10. 敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏。
  11. 不安全的 ViewState 的配置。
  12. 错误或者不规范的 Content-type 指令。

虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前文说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。

  • 一般笔者在进行资产收集的时候,回把两种扫描方式结合起来使用
  • 另外一个笔者使用到的功能是解码器,Decoder , 这个模块主要集成了一些编码的解码,比如 Base64, ASCII 码等

参考:

https://t0data.gitbooks.io/burpsuite/content/chapter7.html
https://github.com/ffffffff0x/1earn/blob/master/1earn/Security/%E5%AE%89%E5%85%A8%E5%B7%A5%E5%85%B7/BurpSuite.md
https://www.synopsys.com/zh-cn/glossary/what-is-penetration-testing.html#C

有关渗透测试实战-BurpSuite 使用入门的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐