• Pikachu靶场——XSS漏洞(Cross-Site Scripting)


    1. XSS(Cross-Site Scripting)

    跨站点脚本(Cross Site Scripting,XSS)是指客户端代码注入攻击,攻击者可以在合法网站或Web应用程序中执行恶意脚本。当wb应用程序在其生成的输出中使用未经验证或未编码的用户输入时,就会发生XSS。

    跨站脚本攻击,XSS(Cross Site Scripting)。由于与CSS(Cascading Style Sheet)重名,所以就更名为XSS。

    XSS作为OWASP TOP10(2017)内容之一,主要使用JavaScript来完成恶意攻击的行为,JS可以非常灵活的操作HTML、CSS、浏览器,这就使得XSS攻击“想象”空间非常大。也就是说,JS强大的灵活性和功能,为XSS攻击提供了非常广阔的攻击面。

    1.1 反射型XSS(get)

    发现在输入代码的时候,输入到一定长度无法进行输入了。

    image-20230815215055165

    可以修改页面源代码。将最大值修改为100

    image-20230815215211048

    <script>alert('芜湖')script>
    
    • 1

    最后弹框如下:

    image-20230815215340239

    1.2 反射型XSS(post)

    输入密码进行登录

    image-20230815215842467

    <script>alert(document.cookie)script>
    
    • 1

    输入代码发现没有长度限制,弹框如下

    image-20230815215942274

    GET方式中, 攻击代码是直接暴露在URL中的

    image-20230815220304734

    POST方式参数内容不会出现在URL中

    image-20230815220557479

    image-20230815220636564

    1.3 存储型XSS

    存储型XSS:持久化,存储型XSS漏洞是指攻击者将恶意脚本代码存储在目标网站的数据库中,通常在用户提交的表单数据中注入恶意代码。当其他用户浏览到包含恶意代码的页面时,脚本代码会被执行,导致攻击者能够获取用户的敏感信息或执行恶意操作。

    发现是一个留言板,直接输入攻击代码

    <script>alert(document.cookie)script>
    
    • 1

    image-20230815220856827

    1.4 DOM型XSS

    XSS(DOM)是一种基于DOM树的一种代码注入攻击方式,可以是反射型的,也可以是存储型的,所以它一直被划分第三种XSS。与前两种XSS相比,它最大的特点就是不与后台服务器交互,只是通过浏览器的DOM树解析产生。除了js,flash等脚本语言也有可能存在XSS漏洞。

    <script>alert(document.cookie)script>
    
    • 1

    image-20230815221533134

    查看页面源代码

    image-20230815221803617

    输入的发现攻击代码被传入了一个a标签中。那么这里可以尝试将a标签进行闭合。

    修改攻击代码

    '> 芜湖')>
    
    • 1

    image-20230815222818892

    查看网页源代码

    image-20230815222854702

    1.5 DOM型XSS-X

    先直接点击按钮查看显示内容,弹出了一个链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”,点击该连接又弹出了一句话“就让往事都随风,都随风吧”

    image-20230816193921307

    查看源代码

    image-20230816194508196

    发现点击后跳转到了a标签,使得闭合a标签,输出我们的攻击代码

    '> 
    
    • 1

    image-20230816195051108

    页面显示内容

    image-20230816195134866

    1.6 XSS盲打

    <script>alert('芜湖')script>
    
    • 1

    输入攻击代码后发现没有任何弹框,查看源代码。

    image-20230816200827445

    发现该表单是post提交方式,现在我们查看提示。提示说需要登录后台。

    image-20230816201035808

    输入路径登录后台查看,发现我们之前的攻击代码生效了。

    http://127.0.0.1/pikachu/vul/xss/xssblind/admin.php?id=8
    
    • 1

    image-20230816201056089

    倘若注入xss,是无法得知是否xss被执行,但是管理员在后台查看时,当注入了xss代码,同时管理员又访问了后台,且后台把我们的内容输出,那么后台管理员可能遭受到XSS攻击。这也是称为XSS盲打的原因。

    1.7 XSS之过滤

    输入攻击代码

    <script>alert('芜湖')script>
    
    • 1

    发现没有弹窗

    image-20230816202815039

    猜测这里过滤了一些标签

    image-20230816203815414

    发现在输入**一个尝试,发现没有弹框。

    image-20230816214841863

    image-20230816221106040

    查看网页源代码,发现左右尖括号,双引号,单引号都被html编码了,这样的话,闭合标签或者闭合属性都行不通了。

    image-20230816223139951

    发现href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。

    所以这里可以输入:

    javascript:alert(document.cookie)
    
    • 1

    解析:

    • javascript: 这是一个伪协议,表示接下来的内容是 JavaScript 代码,可以在当前页面的上下文中执行。
    • alert(): 这是一个 JavaScript 函数,用于在浏览器中显示一个警告框,其中显示指定的消息。
    • document.cookie: 这是一个 JavaScript 表达式,用于获取当前页面的 Cookie 值。Cookie 是一种用于在客户端和服务器之间存储数据的机制,它可以用于标识和跟踪用户会话状态。

    image-20230816223317754

    1.10 XSS之JS输出

    还是先输入一段攻击代码,查看页面响应

    <script>alert('芜湖')script>
    
    • 1

    发现页面没有响应,查看页面源代码。发现输入的攻击代码被发送到了最外面的