集训第八天:XSS
杨涛学长今天给介绍了XSS。
基础知识(了解掌握)
HTML
一种超文本标记语言。其结构包括头部分(Head)和主体部分(Body),其中头部提供关于网页的信息,主体部分提供网页的具体内容。由HTML各类标签组成。
各类标签:
img:
插入图片
body:
文档的主体
iframe:
在网页显示网页
Javascript:
一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
cookie与session:
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
WAF
Web应用防护系统(也称:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。国际上公认的一种说法是:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
Javascript弹框操作
Javascript函数内嵌实现形式:
相关函数:
alert():用于提示
confirm():用于和用户交互确认
prompt():弹框让用户输入信息
XSS
跨站脚本攻击(cross site script execution),一种出现在web应用程序中的计算机安全漏洞。由于web应用对用户的输入过滤不严而产生。恶意攻击者通过HTML注入篡改网页,插入恶意脚本,从而控制用户浏览器行为的一种攻击方式。
危害
1、网络钓鱼,包括盗取各类的用户账号
2、窃取用户cookie
3、强制弹出广告页面,刷流量
4、页面挂马
5、提升用户权限,进一步渗透网站
6、传播扩展脚本蠕虫
相比于SQL注入,SQL注入是对后端的恶意篡改,而XSS是对前端的恶意攻击。
反射型XSS
也称为非持久性、参数型跨站脚本。主要用于将恶意的脚本附加到URL地址的参数中。
一般使用的已经构造好的恶意URL发送给受害者,诱使受害者点击触发,只执行一次。
杨涛学长的反射型XSS原理图
存储型XSS
比反射型跨站脚本更具威胁,并且可能影响到web服务器的自身安全。
攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。
绕过XSS限制
绕过magic_quotes_gpc(通过String.fromCharCode()函数)
HEX编码
改变大小写
关闭标签 (><script>slert('xss');</script>)
(闭合前面的标签)
相关PHP函数
str_replace():以其他字符替换字符串中的一些字符(区分大小写)
addslashes():在预定义字符(’、”、\、NULL)之前添加反斜杠
stripslashes():删除由addslashes()函数添加的反斜杠
trim():移除字符串两侧的空白字符或其他预定义字符
htmlspecialchars():把预定义的字符转换为HTML实体(&(和号)成为&;”(双引号)成为”;’(单引号)成为 ‘;<(小于)成为<;>(大于)成为>)
htmlspecialchars_decode():把预定义的HTML实体转换为字符
mysql_real_escape_string():对字符串中的特殊符号(\x00、\n、\r、\、‘、“、\x1a)进行转义
strip_tags():剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签