记一下CSRF和SSRF的笔记~~
CSRF
什么是CSRF
跨站请求伪造,是一种对网站的恶意利用。XSS利用站点内地信任用户,而CSRF通过伪装来自信任用户的请求来利用受信任的网站。与XSS相比,CSRF攻击往往不大流行(因此对其防范的资源也相对较少)和难以防范,所以被认为比XSS更具危险性。一个场景,跨域发出了一个请求,可以无JavaScript参加,请求是身份认证后的。一般分为HTML CSRF,JOSN HiJacking攻击和Flash CSRF。
原理总结
一个CSRF漏洞攻击的实现,需要由“三个部分”构成:
- 有一个漏洞存在(无需验证,任意修改后台数据,新增请求);
- 伪装数据操纵请求的恶意链接或页面;
- 诱使用户主动访问或登录恶意链接,触发非法操作。
- 第一部分 漏洞的存在
关键字:跨站请求漏洞(CSR:Cross Site Request)
如果需要CSRF攻击能够成功,首先就需要目标站点或系统存在一个可以进行数据修改或新增操作,且此操作被提交后台之后的过程中,其未提供任何身份识别和校验的参数。后台只要收到请求,就立即下发数据修改或新增的操作。
以上漏洞情况的存在,出现场景比较多的用户密码的修改、购物地址的修改或后台管理账户的新增等操作过程中。
- 第二部分 漏洞利用的伪装
关键字:伪装请求(F:Forgery)
CSRF漏洞存在了,如果需要真正的被利用,还需要对“修改或新增”数据操作请求的伪装,此时恶意攻击者只要将伪装好的“数据修改或新增”的请求发送给被攻击者,或者通过社工的方式诱使被攻击者在其cookie还生效的情况下点击该请求链接,即可触发CSRF漏洞,成功修改或新增当前用户的数据信息,如修改当前用户的密码,又或者是当前用户为后台管理员,触发漏洞后又新增了一个后台管理员。
- 第三部分 用户非本意的操作
关键字:非本意的操作
当前用户在不知情的情况下,访问了黑客恶意构造的页面或链接,即在非本意的情况下完成黑客想完成的非法操作,实现了对当前用户个人信息的恶意操作。后台审计只能审计到用户的信息,并不能审计到黑客的信息。
简单实验
首先需要一个简单的登录来实现基于session的会话访问控制
登录页面:没有用到数据库,账号密码固定
登出界面:logout.php,session_destroy()
1 | |
管理员的界面:模拟一个添加管理员的功能,通过if判断和echo实现
1 | |
实验开始:
首先将login.php,manage.php,logout.php放入本机的php环境,假设本机是管理员使用的机器。本机的ip 127.0.0.1就当作是我们要攻击的服务器的ip,虚拟机的192.168.123.211当作一个管理员和攻击者都可以访问的外网服务器地址。
现在本机登录管理员界面manage.php,尝试添加管理员,使用的url如下:http://127.0.0.1/test/session/csrf/manage.php?user=123(这里url需要和自己搭建的路径一致)此时去读admin.txt,会发现里面成功增加了123。
现在攻击者在虚拟机中写一个html页面,这个页面的url是:http://192.168.123.211/123/1.html
1 | |
你看到这个页面并不知道里面是什么内容,如果攻击者给它加上伪装,例如点击链接可以获得优惠券或红包,可能有些用户就会上当了。这时实际上,就会在用户的admin.txt里面添加一个新管理员,于是,用户就受到了csrf攻击。
小结
构造一个恶意链接或者html页面
CSRF漏洞的目的:利用一个已存在的漏洞,构造一个“恶意链接”或者“html页面”,然后诱使用户点击触发此漏洞。
目标站点存在一个漏洞(CSRF),攻击者利用此类漏洞伪装了一个“恶意链接”或者“html页面”,诱使被攻击者在登录的情况下(即当前cookie有用的情况下)点击了此伪装请求,随后在用户不知情的情况下完成了对当前用户数据的修改或新增操作,而被修改的信息可能是用户的密码、关键信息又或者是新增后台管理员等。
- 如何防范?
二次验证(验证cookie)。还有不仅验证cookie,还有验证referer字段、增加token机制等。
进行修改或新增操作时,会有相应的信息提示。
SSRF
SSRF简介
SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种以攻击者构造形成,由服务器端发起请求的一个安全漏洞。一般情况下,SSRF漏洞攻击的对象是从外网无法访问的内部系统,正因为它是由服务器端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。
SSRF形成的原因大都是由于服务端提供了从其他服务器获取数据的功能,且没有对目标地址做过滤和限制,比如从指定url地址获取网页文本内容,加载指定地址的图片,下载等。我们外网通过web服务器去访问内网的数据库,web服务器帮我们去获取数据,相当于一个跳板,然后返回数据给我们。
比如加载指定地址的图片,web服务器访问内部的图片服务器,有可能会把所有的图片都泄露。
SSRF常见危害
- 可以对外网,服务器所在内网,本地进行端口扫描,获取一些服务的Banner信息等
- 攻击运行在内网或本地的应用程序,如内网的OA,ERP系统等外网拿不到的,但是通过SSRF攻击可以攻击到这些系统
- 对内网web应用程序进行指纹识别,通过访问默认文件实现(如Readme文件)
- 攻击内外网web应用,主要是使用GET就可以实现的攻击(比如Struts2,SQLI等)
- 利用File协议读取本地文件等
SSRF常见应用场景
- 分享
一些分享应用中,web应用在分享功能中,通常会获取目标url地址网页内容中的<title></title> 标签的文本内容作为显示来提供更好的体验,如果在此功能中没有对目标地址范围做过滤与限制就存在SSRF漏洞。如360的页面有一些其他网站的超链接。
- 在线翻译
通过url地址翻译对应文本的内容
提供此功能的国内公司有百度、有道等
- 图片加载与下载
图片加载远程图片地址此功能用到的地方很多,但大多比较隐秘,比如在有些公司中,加载自家图片服务器上的图片用于展示,开发者通常对图片做些微小调整例如加水印、压缩等,很大可能造成SSRF漏洞。
- 图片、文章收藏功能
- 未公开的API实现以及其他调用URL的功能
如何防范?
对网站的ip地址进行严格的过滤,需要严格限定可以访问的地址,或者过滤掉内网IP地址,或者规定只能请求哪些URL,其他的一律不能请求,白名单。
以上来自360网络安全学院授课内容,侵权删