欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用Burp和自定义Sqlmap Tamper利用二次注入漏洞

来源:本站整理 作者:佚名 时间:2017-08-14 TAG: 我要投稿


Web应用程序已经从上世纪简单的脚本演变成了如今的单页应用。然而,随着Web应用程序的不断复杂化不同类型的安全漏洞也随之而来。其中有一种被称之为二次注入的漏洞,该漏洞是一种在Web应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。此外该漏洞不仅会发生在同一应用中,其他使用相同数据源的Web应用程序也会产生该漏洞。因此,想要使用自动扫描器来检测该类漏洞“几乎”是不可能的。在本文中我将向大家展示,我们最近一个有趣的渗透测试项目的SQLi漏洞。
我们的手动测试方法
对一个应用程序进行测试,我们必须首先要了解我们的测试目标。因此在正式测试之前,我都会花费一两天的时间来像普通用户一样使用该应用程序。我会单击并提交所有的表单,并遵循以下命名规范:
给主要模块编号(在导航栏看到的东西,例如发票,新闻,费用等)
假设你正在浏览“Ticket”模块,并且需要你提交一个包含名称和电子邮件的表单。
Username = johnticket1
Email = johnticket1@yopmail.com
这样有助于跟踪数据的来源,如果我们在渗透过程中看到johnticket1在其他地方出现,那么我们就知道了攻击的目标是哪个向量(通常一个APP的渗透需要5到6天时间)。
初始阶段:检测
在浏览我的目标时,我在Burp Suite日志中看到了以下请求和响应。
GET /wishlist/add/9 HTTP/1.1
Host: targetwebapp
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Referer: http://targetwebapp/
Cookie: XSRF-TOKEN=eyJpdiI6ImVmODhzTFRXV0wrdkRVV05MVTdyQ3c9PSIsInZhbHVlIjoiYWN1ZkkwRk1WMjZycTdDRjdSZFVuN3VKR3ZGQUpTWWZyYWNURmcyMzZtY1Zlc25vUDhvdk5xaFhHbXZidEUyalA2eUl4aDQzakhBQmNpWGtsN1lNXC9nPT0iLCJtYWMiOiIxZTAxOGU5YTVjZTY1NDdmNTFlNmMzZWRjNTM5M2Y3YTJiNTIyZjk0NThlZDgwYWExYjc1YjJmOWRiYWQyM2MxIn0%3D; session=eyJpdiI6ImdudzFVTGlNem1CYzlGUlY1aG1Xbnc9PSIsInZhbHVlIjoiMFZcL2ZHZTRDejlyUGlwbG5zNW5mNHpvYUZMdVFHUjVQVkpOZkI5M1UrazArMThDSzRiSURac0FmdTBpd0hXaFN5OVAxdytvMFhVNzhadzN1dU5NM013PT0iLCJtYWMiOiIyYWEzOWI5NWM4ZDBhNmQ1NzQ1NzA3ZjkwY2Q5NzI5NTc2MWU4NDk4YWY3OTkzMGM5ZmQ2YjBlYjFkMmNlZjIxIn0%3D
X-Forwarded-For: 127.0.0.1
True-Client-Ip: 127.0.0.1
Connection: close
Upgrade-Insecure-Requests: 1
----
HTTP/1.1 302 Found
Date: Tue, 01 Aug 2017 07:31:12 GMT
Server: Apache/2.4.18 (Ubuntu)
Cache-Control: no-cache, private
Location: http://targetwebapp/
Set-Cookie: XSRF-TOKEN=eyJpdiI6IjlVXC9XSWtobkdHT0tlZDNhKzZtUW5nPT0iLCJ2YWx1ZSI6Ijg3enBCSHorT1pcLzBKVVVsWDJ4akdEV1lwT2N0bUpzdDNwbmphM3VmQndheDRJZDQ3SWJLYzJ6blFQNHppYytPQzVZNGcxWVdQVlVpWm1MVDFNRklXQT09IiwibWFjIjoiZWRmYjAwYjgzYWQ1NWQyMWM1ZWQ2NjRjMThlZmI3NjQ4ODVkNWE0YWEyZTBhYzRkMjRkOWQ2MmQ4OTA0NDg3YyJ9; expires=Tue, 01-Aug-2017 09:31:12 GMT; Max-Age=7200; path=/
Set-Cookie: session=eyJpdiI6IkpMdzdJSEE3NndnUXI2NXh0enJYNXc9PSIsInZhbHVlIjoiMkNhek8wXC9FUHQ1bzhjbnMrbHpJWXBjTGhhQTFCM3kyQjI4bTFHRHZkKzZNK2NvSGtwQUZJcWxTeEFHREdEOFBiWVwvVFNyZTNEVlNyRTFlRGMrRlZKZz09IiwibWFjIjoiYTA2ZjlmZTVkYWM3MTc4ODE5Y2VmNmFkNTMzYjYyOTNmZjUxOGRkYjhkYzJmYThhYWM4OTNkNzg4MTliZjVkMSJ9; expires=Tue, 01-Aug-2017 09:31:12 GMT; Max-Age=7200; path=/; HttpOnly
Content-Length: 324
Connection: close
Content-Type: text/html; charset=UTF-8
html>
    head>
        meta charset="UTF-8" />
        meta http-equiv="refresh" content="1;url=http://targetwebapp/" />
        title>Redirecting to http://targetwebapp/title>
    head>
    body>
        Redirecting to a href="http://targetwebapp/">http://targetwebapp/a>.
    body>
html>
我正在向心愿单添加一个产品。如果该操作成功执行,那么应用程序将会把我重定向到主页。但是如果我浏览另一个模块(/wishlist/),则可以看到该产品的详细信息。
这里有个地方引起了我的注意,在HTTP响应中我看到了一个新的Set-Cookie参数?为了验证该参数,我又陆续尝试添加了几个不同产品的id到愿望单。而结果是我在每次的请求中都获取到了新的Set-Cookie指令。
我没有登录应用,但应用程序依旧能够跟踪我添加的产品。
每当我用不同的id重复上述请求时,都将获取到新的Set-Cookie指令。
显而易见,应用程序将产品的id值存储在我的cookie上,并在发送给我之前进行了加密。据此我判断目标应该是一个Laravel应用程序,因为默认情况下,Laravel框架的XSRF-TOKEN cookie名称和cookie加密。
重要的是要明白,无论如何通过/wishlist/add/端点提交,它都将存储在我的加密cookie中。如果我浏览 /whishlist/ 路径,那么以下步骤将在应用之后。
解密cookie
从Cookie数据获取wishlist数组。
在查询中使用该数组。
显示所需产品的详细信息。
Protip:如果你认为在一个sql查询中使用了多个值。它的语句可能是WHERE id IN()。像开发者一样思考!

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载