身份认证种类及攻击

身份认证

认证类型

http认证机制

http协议支持两种认证方式:基本认证和摘要认证。

基本认证

客户端发起请求服务端认证会让客户端在弹框中输入用户名密码,然后用户名密码会在请求头中以下面这种格式发送给服务端

Authorization: Basic (username:passwd)经过bese64加密

下面以ctfhub的一道题为例

点击click弹出登录窗口

输入密码后burpsuit抓包观察请求与响应

虽然使用的是base64编码 但是很容易解码几乎跟裸奔一样

摘要认证

img

Digest认证是为了修复基本认证协议的严重缺陷而设计的,秉承“绝不通过明文在网络发送密码”的原则,通过“密码摘要”进行认证,大大提高了安全性。

key value 解释
WWW-Authenticate Digest、Basic 用来定义使用何种方式去进行认证以获取受保护的资源
nonce 服务端随机数 服务端向客户端发送质询时附带的一个随机数,这个数会经常发生变化。客户端计算密码摘要时将其附加上去,使得多次生成同一用户的密码摘要各不相同,用来防止重放攻击
response Request-Digest 经过运算后的密码

基于会话的认证

cookie、session那种

扩展:
用户登录一次就可以访问所有相互信任的应用的系统(用户登录了百度首页 进入百度文库不用再次登录),这种系统我们就管它叫多web应用单点登录(sso,Single Sign On)。相比传统的模式(进一个系统登录一次)这种技术引入了特定的鉴权、授权体系

基于令牌的身份认证 OAuth2

github、gitee、钟馗之眼

一次性密码

身份认证攻击

暴力破解

  • 可暴力破解的条件

    • 弱口令
    • 未限制访问次数
  • 如果存在验证码 可以使用python+selenium(模拟浏览器)+超级鹰打码平台(获取验证码的内容) 破解

from PIL import Image
from selenium import webdriver


def create_driver(cookies):
    # 实例化一个浏览器的对象(传入浏览器的驱动)
    driver = webdriver.Chrome()
    # 让浏览器对该url发起请求
    for cookie in cookies:
        driver.add_cookie(cookie)
    return driver


def get_code():
    # 超级鹰接口
    return 1


def get_pic(driver):
    driver.save_screenshot("original.png")
    ran = Image.open("original.png")
    box = (1, 1, 1, 1)  # 图片定位
    ran.crop(box).save("code.png")


def main(url, cookies):
    driver = create_driver(cookies)
    driver.get(url)
    passwd = []
    for p in passwd:
        driver.find_element_by_xpath('//*[@id="u"]').send_keys('username') #填充用户名密码
        driver.find_element_by_xpath('//*[@id="p"]').send_keys(p)
        # 获取图片
        get_pic(driver)
        # 获取验证码
        code = get_code()
        driver.find_element_by_xpath('//*[@id="code"]').send_keys(code)# 填充验证码
        driver.find_element_by_xpath('//*[@id="code"]').click()# 点击提交
        # 根据目标设置不同的判断条件
        # xxxxxxx


if __name__ == '__main__':
    url = ''  # 目标url
    cookies = [{'name': 'tmp', 'value': 'tmp'}, {'name': 'tmp', 'value': 'tmp'}, ]# 可能需要的cookies,一般不需要 因为压根还没登录
    main(url, cookies)

Cookie伪造

burp抓包 伪造请求头cookie尝试攻击

重放攻击

主机A给主机B发送的报文被攻击者C截获了,然后C伪装成A给B发送其截获来的报文,而B会误以为C就是A,就把回应报文发送给了C。

重放攻击也可以绕过验证码机制攻击。

posted @ 2022-03-19 14:40  beginner_z  阅读(542)  评论(0编辑  收藏  举报