知识点

  • CRLF注入漏洞

    • 属于轻微漏洞,更改数据包解构

    • 配合xss等进行检测

    • 是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。

    • 攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞。

      GET /fd/ls/l?IG=xxx HTTP/2
      Host: www.sywsec.com # 使用这个host来重定向host
      Host: www.bing.com
      Cookie: #######
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
      Accept: image/avif,image/webp,*/*
      Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
      Accept-Encoding: gzip, deflate
      Referer: https://www.bing.com/search?q=DefaultCreds-cheat-sheet&qs=n&sp=-1&lq=0&pq=defaultcreds-cheat-sheet&sc=3-24&sk=&cvid=1264F964901B44D0BB739CDC34555431&ghsh=0&ghacc=0&ghpl=&FPIG=A4F03951A7764E769DB6E6A41DD87A6C&first=10&FORM=PORE
      Sec-Fetch-Dest: image
      Sec-Fetch-Mode: no-cors
      Sec-Fetch-Site: same-origin
      Te: trailers
    • 如何检测安全问题:CRLFuzz

  • URL重定向跳转(需要配合利用,某些有重赏)

    • 写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
    • 写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
    • 对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
    • 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
    • 原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;
  • Web拒绝服务

    • 现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险,导致服务器处理不过来或占用资源去处理。

实例

案例1-CRLF注入原理&检测&利用

vulhub nginx
两种回显控制,插入xss:
强制给回显的页面插入xss(插入回显页面并且换几行)
%0aSet-cookie:JSPSESSID%3Ddrops
url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>/

CRLFuzz:
测试工具
https://github.com/dwisiswant0/crlfuzz/releases
扫单个网址
crlfuzz -u "http://8.217.94.64:8080/"
当返回值带上了 [VLN] 标志时,则代表这个地方存在此类漏洞

案例2-URL重定向&原理&检测&利用

# 形式:
http://xxx/zb_system/login.php?url=http://www.xiaodi8.com/zb_system/login.php

# 包含网址:风险在于网址可能是钓鱼网站,可能被攻击者窃取账密

钓鱼:把目标网站下载下来,并且将文件的东西不断修改,把接收账户的东西改为自己的网站,就能实现截取目标站点的账密了。
有一个前提条件,就是别人上钩,并且输入了正确的账密。
还有一个条件,目标站点包含你的钓鱼站点
  • 大概意思是讲重定向漏洞的危害:

    • 网站接受用户输入的链接,跳转到一个攻击者控制的网站,可能导致跳转过去的用户被精心设置的钓鱼页面骗走自己的个人信息和登录口令。
    • 国外大厂的一个任意URL跳转都500$、1000$了,国内看运气~
  • 业务:

    • __用户登录、统一身份认证处__,认证完后会 跳转
    • 用户 分享、收藏内容 过后,会 跳转
    • 跨站点认证、授权 后,会 跳转
    • 站内点击其它网址链接 时,会 跳转
  • 黑盒看参数名:

    redirect
    redirect_to
    redirect_url
    url
    jump
    jump_to
    target
    to
    link
    linkto
    domain
  • 白盒看代码块:

    Java:response.sendRedirect(request.getParameter("url"))
    PHP:
    $redirect_url = $_GET['url'];
    header("Location: " . $redirect_url)
    .NET:
    string redirect_url = request.QueryString["url"];
    Response.Redirect(redirect_url);
    Django:
    redirect_url = request.GET.get("url")
    HttpResponseRedirect(redirect_url)
    Flask:
    redirect_url = request.form['url']
    redirect(redirect_url)
    Rails:
    redirect_to params[:url]

    1. 单斜线"/"绕过 https://www.landgrey.me/redirect.php?url=/www.evil.com
    2. 缺少协议绕过 https://www.landgrey.me/redirect.php?url=//www.evil.com
    3. 多斜线"/"前缀绕过 https://www.landgrey.me/redirect.php?url=///www.evil.com https://www.landgrey.me/redirect.php?url=www.evil.com
    4. 利用"@"符号绕过 https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
    5. 利用反斜线"\"绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
    6. 利用"## "符号绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com## www.landgrey.me
    7. 利用"?"号绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
    8. 利用"\\"绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
    9. 利用"."绕过 https://www.landgrey.me/redirect.php?url=.evil           
    (可能会跳转到www.landgrey.me.evil域名)
    https://www.landgrey.me/redirect.php?url=.evil.com       
    (可能会跳转到evil.com域名)
    10.重复特殊字符绕过 https://www.landgrey.me/redirect.php?url=///www.evil.com//.. https://www.landgrey.me/redirect.php?url=www.evil.com//..

案例3-WEB拒绝服务-原理&检测&利用

利用网站功能使网站服务宕机

网站接收数据并且提供服务的时候,使用拒绝服务攻击使得服务宕机

  • 验证码或图片显示自定义大小
    • 导致资源拉满导致服务宕机
  • 上传压缩包解压循环资源占用
    • 网站自动解压文件
    • 压缩包里面带压缩包里面带压缩包里面带压缩包……(完全解压出来占用资源40TB!)