xss和csrf总结学习

目录

前言:

区别:

XSS篇!!!!!

漏洞简介:

分类:

注入点:

绕过:

1.大小写混合

2.复写

3.标签测试

4.尝试使用错误的事件查看过滤

5.编码转换

6.加入混淆字符

7.代替空格

8.引号的使用

CSRF篇!!!!!

漏洞简介:

分类:

利用:


前言:

断更的原因是期末考试压身。本来我是想学CSRF,但是看到他和XSS很像,我就想到我XSS好像没学太好,只是做了做题。那正好就两个一起学对比一下,关于这两种漏洞做题记录,就再等等吧哈哈哈

区别:

这两种漏洞是有区别的。依我来看,csrf可谓是假传圣旨,利用盗取的账号做一些事情。xss是骗皇上下圣旨,得到你的小饼干,然后得到登陆你账号的权限或者记录你键盘鼠标的操作,换句话说,csrf是借用小饼干干坏事(本质上并没有得到小饼干),而xss是盗取小饼干干坏事。

如果还不李姐的话,那就比喻成xss:城门已破,黑客带着各种武器在城内为所欲为,为所欲为。而csrf:城门未破,黑客仅能通过借用户的通行令牌进入城内做些小偷小摸。

XSS篇!!!!!

漏洞简介:

XSS漏洞叫做跨站脚本攻击,是指攻击者向Web页面插入Script代码后,用户浏览该页时,嵌入其中的Web里面的Script代码会被执行,从而达到攻击用户的目的。

XSS漏洞通常是通过php的输出函数将JavaScript代码输出到HTML页面中,通过用户本地浏览器执行的,所以XSS漏洞关键就是寻找参数未被过滤的输出函数

常见的输出函数有: echo printf print print_r sprintf die var-dump var_export

分类:

xss攻击分成三类:反射型,存储型和DOM型。

反射型:反射型是不持久的,攻击者需要先构造好攻击链接,然后欺骗用户自己去点击链接触发xss代码(xss代码并没有存在于服务器中),一般容易出现在搜索页面。(浏览器->后端->浏览器)

存储型:存储型顾名思义,是可以储存在服务器中的持久化攻击。一般出现在,个人信息,发表文章和留言板等地方,如果过滤不严将这些代码储存到服务器中,每当有用户访问该页面,该代码都会被触发执行,所以存储型很危险。(浏览器->后端->数据库->后端->浏览器)

DOM型:他为什么叫DOM型,因为它是基于文档对象模型(Document Objeet Model,DOM)的漏洞。DOM是一个与平台和编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为页面显示的一部分。DOM中有很多对象,其中一些使用户可以操纵的,如uRI,location,refelter等,客户端的脚本程序可以通过DOM动态的检查和修改页面内容,它不依赖于提交数据到服务器端,而是从客户端获取DOM中的数据在本地执行。如果DOM中的数据没有经过探戈的确认,就会产生DOM XSS漏洞。(URL->浏览器)

注入点:

注入点示例
HTML元素内容<div>内容用户</div>
HTML元素属性<input value="用户内容">
URL请求参数http://server.com?search=用户内容
CSS值color:用户内容
JavaScriptvar name="用户内容"

案例:

某人搭建博客需要一个搜索功能,根据URL参数决定关键词的内容,他很快写好然后上线。代码如下:

<input type="text" value="<%= getParameter("keyword") %>">
<button>搜索</button>
<div>
  您搜索的关键词是:<%= getParameter("keyword") %>
</div>

然后第二天,他就收到了一个神秘链接:http://xxx/search?keyword="><script>alert('XSS');</script>;他打开了这个链接,网页弹出了“XSS”的对话框(请勿模仿,不明链接不要随意打开)。在这个攻击案例中,服务器端解析请求参数keyword并拼接到HTML中返回给浏览器,形成了这样的的HTML:

<input type="text" value=""><script>alert('XSS');</script>">
<button>搜索</button>
<div>
  您搜索的关键词是:"><script>alert('XSS');</script>
</div>

这个弹窗并没有什么实际的意义,但通过它我们知道输入javascript代码是可以被执行的,当我们输入一些其他函数,比如document.cookie就可以成功盗取用户的cookie信息,或者读取用户浏览器信息等,为我们进一步深入攻击做铺垫。聪明的程序员很快找到了解决方法,修复漏洞:

<input type="text" value="<%= escapeHTML(getParameter("keyword")) %>">
<button>搜索</button>
<div>
  您搜索的关键词是:<%= escapeHTML(getParameter("keyword")) %>
</div>

escapeHTML()按照如下规则进行转义:

字符转义后的字符
--
&&amp;
<&1t;
>&gt;
"&quot;
'&#x27;
/&#x2F;

经过转移函数的处理后,最终浏览器接收到的响应为:

<input type="text" value="&quot;&gt;&lt;script&gt;alert(&#x27;XSS&#x27;);&lt;&#x2F;script&gt;">
<button>搜索</button>
<div>
  您搜索的关键词是:&quot;&gt;&lt;script&gt;alert(&#x27;XSS&#x27;);&lt;&#x2F;script&gt;
</div>

这样就安全了?当然不!!No system is safe!不久后又有人发来了链接http://xxx/?redirect_to=javascript:alert('XSS')。打开页面后没有弹出xss,这样就安全了嘛?程序员查看源代码,发现多了以下内容

<fuck href="<%= escapeHTML(getParameter("redirect_to")) %>">跳转...</a>

虽然代码不会立即执行,但是当用户点击fuck标签时,浏览器就会弹出“XSS”。有些人会说这还不好解决?

// 禁止 URL 以 "javascript:" 开头
xss = getParameter("redirect_to").startsWith('javascript:');
if (!xss) {
  <fuck href="<%= escapeHTML(getParameter("redirect_to"))%>">
    跳转...
  </fuck>
} else {
  <fuck href="/404">
    跳转...
  </fuck>
}

只要url的开头不是JavaScript就安全了吧!没想到神秘人又发来了http://xxx/?redirect_to=jAvascRipt:alert('XSS')。好吧,我服了……

绕过:

1.大小写混合

<scRiPt>alert(1);</scrIPt>

2.复写

<scr<script>ipt>alert(1)</scr<script>ipt>

3.<a>标签测试

<a href="javascript:alert(1)">Clickme</a>

4.尝试使用错误的事件查看过滤

<a href="javascript:alert(1)" onclimbatree=alert(1)>ClickHere</a>

5.编码转换

8进制、10进制、16进制混合转换,组合越多,绕过方法越妙(sao)

6.加入混淆字符

比如Tab符、换行符、回车符,绕过关键字过滤,比如:

<a hREf="j
avas
c
r
i
p
t:alert(/xss/)">click</a>

7.代替空格

内联注释/**/可以代替空格

左斜线/可以代替空格

8.引号的使用

HTML 语言中对引号的使用不敏感,对于html可以使用双引号、单引号,或者不使用引号

左斜线可以代替引号比如"xss"可以用/xss/代替

CSRF篇!!!!!

漏洞简介:

CSRF(Cross-site request forgery),也被称为:one click attack/session riding,中文名称:跨站请求伪造,缩写为:CSRF/XSRF。

简单来讲就是你打开这恶意网站,然后再打开别的网页的时候你的小饼干会被盗取,举个栗子,你向别人转账十块钱如果是GET型传参是?money=10&name=hacker(当然现实中不会是GET型……),恶意代码得到了你的小饼干,然后可以通过改这个参数给他自己转钱,比如改为?money=10000&name=jiangxiaohai这样他就用你的账户给他转了一万块

分类:

CSRF攻击主要分为两种类型GET型和POST型

利用:

检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

burp里面有CSRF利用的工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)是两种常见的网络安全攻击方式,它们的目标和实现方式不同。 XSS攻击主要针对的是网页应用中存在的漏洞,攻击者通过注入恶意的脚本代码到网页中,使得用户在浏览网页时执行该恶意代码,从而达到攻击的目的。XSS攻击可以分为存储型、反射型和DOM型三种形式。存储型XSS攻击是将恶意代码存储到服务器端,当用户访问包含恶意代码的页面时,恶意代码会从服务器端获取并执行;反射型XSS攻击是将恶意代码作为URL参数或表单提交到服务器端,服务器端将恶意代码返回给浏览器并执行;DOM型XSS攻击则是通过修改网页的DOM结构来实现攻击。 CSRF攻击则是利用用户已经登录认证的状态下,诱使用户点击恶意链接或访问恶意网页,从而触发已登录用户的操作。攻击者通过伪造请求,使用户在不知情的情况下执行了非自愿的操作。例如,攻击者可以通过发送包含恶意请求的图片链接或者钓鱼网站来实施CSRF攻击。CSRF攻击的关键在于利用了用户的身份认证信息。 综上所述,XSSCSRF的主要区别在于攻击的目标和实现方式。XSS攻击主要针对网页应用中的漏洞,注入恶意脚本代码;而CSRF攻击则利用用户已登录认证的状态下,伪造请求进行非自愿的操作。为了防范这两种攻击,开发者需要在编写代码时注意输入验证、输出编码以及限制权限等安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜小孩.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值