Burp / Burp Suite 是一个用于测试网络应用程序安全性的图形化工具,该工具使用 Java 编写,由 PortSwigger Web Security 开发,提供以下工具:
- Proxy — 位于浏览器和目标 Web 服务器之间的 HTTP 代理服务器,允许拦截、检查和修改在两个方向上通过的原始流量
- Intruder — 此工具可以对 Web 应用程序执行自动攻击。该工具提供了一种可配置的算法,可以生成恶意 HTTP 请求。Intruder 工具可以测试和检测 SQL 注入、跨站脚本、参数篡改和易受蛮力攻击的漏洞
- Repeater — 一个可以用来手动测试应用程序的简单工具。它可以用于修改对服务器的请求,重新发送它们并观察结果
- Sequencer — 一种分析数据项样本随机性的工具。它可以用于测试应用程序的会话令牌或其他重要的数据项,如反 CSRF 令牌、密码重置令牌等
- Decoder — 一种将已编码的数据转换为其规范形式,或将原始数据转换为各种编码和散列形式的工具。它能够利用启发式技术智能识别多种编码格式
- Comparer — 在任意两个数据项之间执行比较(一个可视化的“差异”)的工具
- Extender — 允许安全测试人员加载 Burp 扩展,使用安全测试人员自己的或第三方代码(BAppStore)扩展 Burp 的功能
- Scanner — 一个 Web 应用程序安全扫描器,用于执行 Web 应用程序的自动漏洞扫描
- Spider — 一个自动抓取 Web 应用程序的工具。它可以与手工映射技术一起使用,以加快映射应用程序内容和功能的过程
安装
下载地址:https://portswigger.net/burp/releases
推荐选择 jar 包
插件
学习
官方 Web Security Academy:https://portswigger.net/web-security/learning-path
Server-side topics(服务器端)
建议初学者从服务器端学起,因为只需要理解服务器发生了什么
SQL injection(SQL 注入)
示例1:Retrieving hidden data(检索隐藏数据)
一个购物程序,用户点击“礼品”类别时,浏览器会请求 URL:
https://insecure-website.com/products?category=Gifts
服务器端收到请求后会将 Gifts
拼接到 SQL 语句中进行检索:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
数据库会返回
- 商品详情
- 从 products 表
- 商品类别为 Gifts
- 已经发售
这个程序没有防 SQL 注入措施,所以攻击者可以构造这样的请求:
https://insecure-website.com/products?category=Gifts'--
SQL 语句就变成了:
SELECT * FROM products WHERE category = 'Gifts'--' AND released = 1
这里的关键字符 --
是 SQL 语句的注释符,后面 ' AND released = 1
将被注释掉,这样就能查询到所有的商品了,包括未发售的
更进一步,攻击者可以查询到未知类别的商品:
https://insecure-website.com/products?category=Gifts'+OR+1=1--
SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
上面的 +
也可以换成空格的 URL 编码 %20
示例2:Subverting application logic(破坏应用逻辑)
一个让用户使用用户名和密码登录的应用,通过以下 SQL 语句来检查凭据:
SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
如果查询返回用户的详细信息,则登录成功,否则登录失败
这里攻击者只需在 SQL 语句中删除密码检查,即提交用户名和空密码查询:
SELECT * FROM users WHERE username = 'administrator'--' AND password = ''
此查询返回用户的详细信息,攻击者将成功作为该用户登录