渗透测试小练习(1)尝试一个图形验证码绕过的复现

admin 2024年12月28日22:09:51评论24 views字数 1302阅读4分20秒阅读模式
今天一起练习一个好玩简单的东东——尝试一下图形验证码绕过的复现。
图形验证码一般在登录处都会有,所以这招我感觉可以一招鲜吃遍天。
反正都快速试一下,说不定就挖个小低危,对于刚入行还未独立开始测试的工程师来说掌握一下也不错的。
这个测试点主要是看图形验证码是不是重复有效的,比如我们指定一个固定的弱口令12345678,可以遍历账户尝试,总有账户使用这个弱口令
渗透测试小练习(1)尝试一个图形验证码绕过的复现
上图中验证码是5003,我们使用BurpSuite抓包,然后使用用户名字典进行暴力破解。
渗透测试小练习(1)尝试一个图形验证码绕过的复现
然后发现这个验证码没有起到实际的作用,我们可以不断遍历账号。
发现能遍历就说明问题了,我们不需要真正遍历出来一个使用123456弱密码的账号。
那么,这种问题怎么解决呢?以下是一个修复建议。

1、判断SessionID为空的情况;确保每次用户请求时,服务器都能提供一个有效的SessionID,并且在图形验证码校验后,无论结果如何,都能强制刷新SessionID,防止会话固定攻击和验证码重用。

下面给伪代码看看:

def request_handler(request):    session_id = request.get_cookie('SessionID')    if not session_id or not is_valid_session_id(session_id):        session_id = generate_session_id()        request.set_cookie('SessionID', session_id, http_only=True)    # 其他业务逻辑...    if 'captcha' in request and request.captcha_valid:        session_id = generate_session_id()        request.set_cookie('SessionID', session_id, http_only=True)        return handle_request_with_captcha(request)    else:        return error_response('Invalid captcha')

2、图形验证码校验应与操作数据校验同时进行,不可以分步校验,确保图形验证码的校验与用户的操作数据(如登录信息)同时进行,防止分步校验导致的安全漏洞。

def login_request_handler(request):    user_data = request.get_user_data()    captcha = request.get_captcha()    if not validate_captcha(captcha) or not validate_user_data(user_data):        return error_response('Invalid credentials or captcha')    # 如果验证码和用户数据都有效,继续处理登录逻辑    return handle_login(user_data)

原文始发于微信公众号(透明魔方):渗透测试小练习(1)尝试一个图形验证码绕过的复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月28日22:09:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试小练习(1)尝试一个图形验证码绕过的复现https://cn-sec.com/archives/3497032.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息