阅读须知
本文的知识内容,仅供网络安全从业人员学习参考,用于已获得合法授权的网站测试,请勿用于其它用途。请勿使用本文中的工具、技术及资料,对任何未经授权的网站、系统进行测试,否则,所造成的直接或间接后果,均由您自行承担。
测试准备
本文不提供对应的靶场和环境,只提供对应的思路。
文中使用工具为:TangGo测试平台,也可以自行下载其他 HTTP抓包测试工具工具。
验证码复用
什么是验证码复用?
验证码(CAPTCHA)是一种用于区分人类用户和机器人的测试,通常以图像、音频或文字形式呈现给用户,要求用户根据提示进行识别或操作。验证码的目的是防止自动化程序(如恶意机器人)对系统进行恶意攻击或滥用。
验证码复用指的是在验证码在生成和被使用后,网站后端没有及时主动销毁或更新该验证码,导致该验证码可以被重复使用。恶意用户可以将重复利用同一验证码,绕过验证码的验证机制,直接访问后续业务。
实操演示
打开 HTTP抓包测试工具,打开内置浏览器,访问测试网站发现为一个登录页面:
在 HTTP抓包测试工具中,打开左上角拦截开关拦截数据,输入任意的账号(admin)、密码还有验证码,点击登录:
注意:拦截到验证码的验证数据包后,不要再做放行操作。某些网站销毁或更新验证码是由前端代码触发的,如果继续放行导致网站返回的响应数据在浏览器中执行,触发了验证码的更新或销毁操作,就无法判断是否存在验证码复用漏洞了。所以,我们将这个数据包发送到重放模块,在重放模块进行测试(重放模块接收到的响应代码不会被执行,不会导致验证码销毁或更新)
发送到数据重发模块进行接下来的验证码复用测试,可以看到右侧返回数据中显示成功发送数据,返回了 HTTP 为 200 的响应码,并且内容为“用户密码错误!”:
为什么用重放模块测试?
重放模块发送请求包后,接收到的响应代码不会被执行,不会触发到验证码销毁或更新的代码。
在并没有修改验证码的情况下,再次发送数据,可以看到右侧返回数据中显示成功发送数据,返回了 HTTP 为 200 的响应码,并且内容为“用户密码错误!”:
说明存在验证码复用漏洞。
测试总结
验证码复用漏洞是一种安全漏洞,通常出现在需要验证码验证的系统中。该漏洞允许攻击者利用同一验证码多次进行验证,从而绕过系统的验证码验证机制,执行恶意操作或绕过身份验证。
验证码复用漏洞执行会导致:
-
暴力破解登录凭证:通过多次尝试使用相同的验证码进行登录尝试,从而猜测用户的用户名和密码。
-
绕过验证码验证:利用已经获取到的有效验证码绕过系统的验证码验证机制,执行未经授权的操作,如注册新用户、修改账户信息等。
-
进行钓鱼攻击:攻击者可以利用验证码复用漏洞构造钓鱼网站,在网站上要求用户输入验证码并将其复制到攻击者控制的恶意站点上,以获取用户的敏感信息或执行恶意操作。
解决方案:
-
严格控制验证码有效期:确保每个验证码在一次验证后立即失效,并设置合理的有效期。一旦验证码过期,即使攻击者获取到也无法再次使用。
-
生成唯一验证码:每次生成验证码时都确保其唯一性,避免验证码被多次使用。可以使用时间戳、随机数或其他唯一标识符来生成验证码,确保每个验证码都是唯一的。
-
绑定验证码和用户会话:在验证用户输入的验证码时,严格检查验证码与用户会话或请求之间的关联性,确保同一个验证码只能被使用一次。可以将验证码与用户的会话ID或请求标识符进行绑定,确保验证码只能在特定的会话或请求中使用。
-
加强会话管理:实施严格的会话管理机制,确保用户会话的唯一性和安全性,防止会话劫持或重放攻击。可以使用安全的会话标识符和令牌来确保会话的唯一性,并对会话进行定期更新和验证,防止被攻击者利用。
-
记录和监控验证码使用情况:记录每个验证码的使用情况,包括生成时间、使用时间和使用次数等信息,并定期监控验证码的使用情况,及时发现和阻止异常或恶意的验证码使用行为。
密码重置漏洞
测试背景
王老板找到你,他说他的员工最近遇到了一些问题:员工反馈自己的账号的密码会被莫名奇妙修改,导致很多时候都登录不上去。王老板给你提供了测试账号(wiener)和密码,请你帮他找出员工(carlos)密码被修改的原因。
测试实操
打开 HTTP抓包测试工具,打开右上角内置浏览器,在浏览器中访问王老板提供的网站,加载后是一个登录界面:
使用提供的账号(wiener)登录进来,跳转到后台界面,该界面是一个邮箱更新的界面,并没有修改密码界面:
其余能够修改密码的地方就是登录页面的忘记密码了,回到登录界面:
修改密码需要填写认证邮箱,填写(wiener)的邮箱(wiener@**exploit-server.net):
输入完成后点击提交后,回到邮箱可以查看存在一条忘记密码修改链接:
进入页面后,输入新的密码(123456)和确认密码,随后点击提交:
密码修改完成后会跳转到登录首页,回到 HTTP抓包测试工具,选择页面,查看刚刚发送的数据包,其中有一条 302 跳转的数据包值得观察:
点击该数据包可以在下方查看到“原始请求数据”和“原始响应数据”:
单击右键发送到数据重放模块,等待页面自动跳转后,发现该数据包含登录账号“wiener”,如果修改账号名字字段为“carlos”是否也能请求成功呢?
修改对应数据名字后,后点击左上角发送,依然返回 302 跳转:
数据包返回并没有其他异常,很有可能表明修改成功,此时回到登录页面,如果成功修改“carlos” 的密码,则密码应该为“123456”,输入账号和密码后发现能够跳到对应的。
至此成功找到王老板所说的公司员工账号被莫名奇妙修改的原因。
测试总结
密码重置令牌漏洞是一种常见的安全漏洞,通常存在于Web应用程序的密码重置功能中。该漏洞的根本原因是未正确验证或保护重置密码时所使用的令牌,导致攻击者可以利用漏洞来重置其他用户的密码或者更改用户账户的权限。
解决方案:
-
生成安全的令牌:
- 使用足够长度和随机性的令牌,使其难以被猜测或者推测。
- 使用安全的随机数生成函数或加密算法来生成令牌,确保其随机性和唯一性。
-
传输令牌时采用安全措施:
- 在重置令牌传输的过程中,采用加密传输协议(如HTTPS)来保护令牌的安全性。
- 避免在URL参数中直接暴露重置令牌,而是通过安全的方式传输,如在请求头中或者通过POST请求传输。
-
严格验证令牌的有效性:
- 在处理密码重置请求时,严格验证重置令牌的有效性,包括其正确性、过期时间等。
- 确保令牌只能使用一次,并在使用后立即失效,防止令牌被复用。
- 在验证令牌时,应该避免使用可预测的信息或者算法,如用户ID或者简单的加密算法,以防止令牌被伪造或猜测。
-
额外的身份验证:
-
在处理密码重置请求时,除了验证重置令牌外,还应该进行额外的身份验证,以确保请求的合法性。
-
可以要求用户提供其他验证信息,如邮箱验证、手机验证码等,来进一步验证用户身份。
-
支付逻辑漏洞
测试场景
淘夕夕王老板找到您,说发现有黑客只花了1元就在他在线商城里买走了5000元的商品,他想知道怎么做到的,你能帮他找到原因吗?
测试案例
打开 HTTP抓包测试工具,点击右上角,启动内置浏览器,输入王老板给的在线商城网站:
为了搞清楚为什么可以使用1元就在他在线商城里买走了5000元的商品,这里使用 HTTP抓包测试工具对数据的流程进行逐步分析。
回到 HTTP抓包测试工具中,打开左上角拦截开关拦截数,回到内置浏览器中点击立即购买。发现 HTTP抓包测试工具中已经抓取到此次请求数据包数据:
该数据为一个 POST 类型的请求数据包,最后的一行包含了此次请求的发送的数据,"quantity=1&price=1688"中文含义理解为“数量=1&价格=1688”,可以得出此次请求中,提交了一个数据,其中表明购买的数量为 1,物品的价格为 1688。
王老板说黑客只花了1元就买走了5000元的商品,这里如果把购买的物品的价格设置为 1 元钱,是不是就可以花 1 元钱购买到这个物品呢?测试如下:
回到 HTTP抓包测试工具中,把“price=1688”修改为“price=1”,放行数据包,发现返回了一个 HTML 的页面,但是有很多内容,不知道具体内容:
为了看到具体页面的内容,点击“页面浏览”,根据页面显示的内容,可以发现已经成功修改了物品的价格:
关闭掉拦截请求,去内置浏览器查看一下结果:
点击结算按钮,如果可以结算成功说明黑客就是使用该方式进行的购买:
至此成功找到了黑客是如何花费 1 元钱购买到5000元的商品。
测试总结
测试漏洞:
支付数据篡改是一种严重的安全漏洞,可能会导致资金损失或数据泄露。其主要原因通常是缺乏输入验证和数据完整性检查,以及不安全的数据传输和存储方式。
解决方案:
-
输入验证:对于所有用户输入的支付数据进行验证,确保数据格式和内容符合预期。验证应该包括数据类型、范围、长度和格式等方面。
-
数据加密:在存储支付数据时,对敏感信息进行加密,确保数据在存储和传输过程中的安全性。可以使用加密算法如AES对数据进行加密。
-
数字签名:对于重要的支付数据,使用数字签名来验证数据的完整性和真实性。数字签名可以确保数据未被篡改,并验证数据的发送者。
-
安全审计和监控:定期审计和监控支付系统,检测异常活动并及时采取措施。记录所有的支付操作和变更,并对记录进行审计和监控,以及实时监控支付系统的安全状况。
拒绝服务漏洞
测试场景
张老板找到您,说发现他们的系统注册用户不多,但是对外短信发送的量特别大,甚至被人举报他们公司的短信骚扰了一些非他们的客户,并且导致公司的注册界面经常无法访问,张老板给予你他们公司的注册网站,你能帮他找到原因吗?
测试案例
打开 TangGO 测试工具,打开 HTTP抓包测试工具,点击右上角,启动内置浏览器,输入张老板给的公司注册网站:
为了搞清楚为什么会存在对外发送信息量大,需要模拟注册流程:到注册账号页面,填写好用户名(admin)、密码、确认密码、手机号码(18888888888):
回到 HTTP抓包测试工具中,打开左上角拦截开关拦截数,回到内置浏览器中点击获取短信校验码。
发现 HTTP抓包测试工具中已经抓取到此次请求数据包数据:
该数据是一个请求验证码的请求数据包,如果能重复使用该数据发送请求包就很可能造成张老板所说的情况,先使用 HTTP 重放模块来测试是否存在对应问题:
发送到数据重发页面,点击发送按钮,可以看到右侧返回数据中显示成功发送数据,返回了 HTTP 为 200 的响应码,并且内容为:
{"status":"success","message":"\u77ed\u4fe1\u53d1\u9001\u6210\u529f!"}
重复点击发送按钮,发现会一直发送请求短信校验码的数据包,并且都得到了相同的返回结果,很有可能是短时间大量点击造成的张老板所说情况,但是手动点击耗时耗力,所以这里使用 HTTP模糊测试工具来解决这个问题,发送到 HTTP模糊测试工具中。
启动 HTTP模糊测试工具需要设置对应的参数:
步骤 1- 设置请求参数
本次测试并没有涉及到对请求参数设置,所以左侧步骤 1 无需设置:
步骤 2-设置变体参数
重放模式:
选择重放模式为无值重放模式。
解释:选择无值重放模式,该模式不需要设置其他任何参数,只对请求的数据包进行重复发送,更多的模式可以点击“重放模式”后面的“问号图标”进行查看:
开始测试
设置完成后,点击“测试过程”模块,并点击右上角“启动测试”:
不同的响应包返回长度不一样,对长度进行排序,点击测试结果中的“长度”即可排序:
在CTF(Capture The Flag)比赛中,"flag"通常指的是一个字符串或者一段特定的信息,这个信息是玩家或者团队在解决某个具体任务或者挑战时所需要找到并获取的。这个字符串通常是隐藏在某个系统、应用程序、网络服务或者加密数据中的,玩家的目标就是通过解密、漏洞利用、逆向工程等技术手段找到这个flag并提交给比赛平台以获取分数。
至此成功找到对外发送信息量特别大的原因,该漏洞会导致服务器拒绝服务。
测试总结
测试漏洞:
拒绝服务(Denial of Service,DoS)攻击是一种旨在使目标系统无法提供正常服务的攻击形式。攻击者通过不断向目标系统发送大量的请求或者占用其资源,使得系统无法有效响应合法用户的请求,从而导致服务不可用。
解决方案:
-
限制请求频率:实施请求频率限制,限制单个用户或IP地址在一定时间内可以发送的请求次数。这可以通过在应用程序或网络层面设置访问速率限制来实现。
-
人机验证:引入人机验证机制,如图形验证码、滑块验证码等,以区分正常用户和恶意机器人。
-
短信验证码防刷策略:实施短信验证码防刷策略,监控并识别异常行为,如频繁请求验证码、使用相同的手机号发送大量请求等。
-
日志监控和分析:实施日志监控和分析,及时发现异常行为,采取相应的防御措施。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)