csrf和ssrf总结

Posted young青年生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csrf和ssrf总结相关的知识,希望对你有一定的参考价值。

1.csrf跨站请求伪造

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

在没有关闭相关网页的情况下,点击其他人发来的CSRF链接,利用客户端的cookie直接向服务器发送请求。

原理:

攻击者通过盗用用户身份悄悄发送一个请求,或执行某些恶意操作。 

CSRF 漏洞产生的主要原因:

1、请求所有的参数均可确定

2、请求的审核不严格,如:只验证了 Cookie

我们知道,当我们使用 img 等标签时,通过设置标签的 src 等属性引入外部资源,是可以被浏览器认为是合法的跨域请求,也就是说是可以带上 Cookie 访问的。 

CSRF的攻击流程如下

1.受害者登录了目标网站

2.攻击者向受害者发送恶意链接

3.受害者点击链接, 链接中的js代码执行, 向目标网站发送某个请求

4.由于用户已登录, 请求会被成功执行


GET型的csrf

试想一下,如果我们在 a.com 上放置一个 img 标签。当 b.com 的用户在 cookie 为过期的情况下访问 a.com,此时浏览器会向 b.com 发送一个指向http://b.com/del?id=1的GET请求,并且这个请求是带上 Cookie 的,而 b.com 的服务器仅仅是通过 cookie 进行权限判断,那么服务器就会进行相应的操作,比如假设此处为删除某个文章,用户在不知情的情况下便已完成操作。

POST型的csrf

 /coures/use/test/1111/buy.php

通过提交表单,buy.php处理购买的信息,这⾥的25532为视频ID。那么攻击者现在构造⼀个链接,链接中包含以下内容。

<form action=/coures/user/handler/25332/buy method=POST>
<input type="text" name="xx" value="xx" />
</form>
<script> document.forms[0].submit(); </script>

当⽤户访问该⻚⾯后,表单会⾃动提交,相当于模拟⽤户完成了⼀次POST操作,⾃动购买了id为11111的视频,从⽽导致受害者余额扣除。


csrf造成的危害

1、篡改目标网站上的用户数据;

2、盗取用户隐私数据;

3、作为其他攻击向量的辅助攻击手法;

4、传播 CSRF 蠕虫。


csrf的利用方式

1、通过 html 标签发送合法的跨域请求

2、通过 Ajax 发送请求(由于 CORS 机制的存在,一般不使用)

这里涉及到同源策略,如果不是很清楚可以先去了解一下。


其实csrf的主要还是和xss连接在一起,但这并不是意味着csrf不能单独进行攻击,我在学习的过程中在一个靶场中成功通过csrf获得了管理员账户,这里我放到之后的实战中进行详细解释

csrf总结

csrf怎么找

黑盒

打开非静态操作的页面,抓包查看是否存在token,如果没有token,直接请求这个页面,不带referer,如果返回的数据是一样的话,那说明很有可能有CSRF漏洞了。

白盒

读代码的时候看看核心文件里有没有验证token和referer相关的代码。可以直接搜索token关键字。


csrf怎么防御

  1. 加验证码

  2. 尽量使用POST,少用GET

  3. 验证HTTP Referer字段


csrf怎么攻击

攻击方法在上面阐释了,如果浏览器或者服务器进行了访问以及跳转控制,csrf就比较难进行攻击了,所以这也是为什么csrf在2017年的owa top10中落选的原因。

个人操作的话是本人找到相同的网站,找到一些请求的报文,通过报文分析出对应链接,让受害者点击这个链接(这个方法是比较简单的,但是限制很大),或者自己搭建一个平台,构造合适的url请求,当用户进行这个请求时,获取对应的cookie,这样可以通过cookie进行一些操作,不过这些攻击方式对于现在的网络环境来说是很难有施展的,瓶颈较大。


2.ssrf

因SSRF通常被用来进行端口扫描,所以这个漏洞也叫XSPA,全称cross site port attack,跨站点端口攻击。

漏洞危害

1.读取或更新内部资源,造成本地文件泄露;

2.扫描内网主机端口并获取服务器上运行的服务版本,不得不提的案例是Weblogic SSRF探测内网Redis端口并结合CRLF写shell

3.将含有漏洞防主机用作代理/跳板攻击内网主机,绕过防火墙等;

ssrf查找

以下业务场景容易出现这种漏洞:

指定URL获取图片:加载/下载/上传

预览:预览图片文章等

文件下载:通过URL进行资源下载

远程加载资源:discuz的upload from url;web blog的import & expost rss feed;wordpress的xmlrpc.php

在线翻译:通过URL进行网页翻译

文章分享/收藏:从分享的URL中读取其原文的标题等

编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等

爬虫:某些网站可以对输入的URL进行信息爬取,而且有些爬虫会对爬到的内容进行渲染,在渲染的时候也可能造成ssrf

未公开的api:share、wap、url、link、src、source、target、display、sourceURl、imageURL等

数据库内置功能

mongodb: db.copyDatabase
oracle:UTL_HTTP,UTL_TCP,UTL_SMTP
postgressql:dblink_send_query
MSSQL:OpenRowset,OpenDatasource


利用方式

ssrf 主要还是作用于内网,比如探测主机,扫描端口,读取文件等

接下来的内容为了方便区分把数据库内置功能的部分单独列出来

让服务端去访问相应的网页、探测内网服务

可以使用file、dict、gopher、ftp等伪协议进行请求访问相应的文件

例如

127.0.0.1/ssrf.php?url=dict://team.wishsec.com:22

泄露了软件的版本

伪协议:

file:读取服务器上任意文件内容*
ssrf.php?url=file:///etc/password*
dict:dict://@:/d:可以用来操作内网Redis等服务*
ssrf.php?url=dict://attacker:11111/*
ftp、ftps:FTP匿名访问、爆破*
tftp:UDP协议扩展*
imap/imaps/pop3/pop3s/smtp/smtps:爆破邮件用户名密码*
phar://协议来触发反序列化漏洞*
telnet:SSH/Telnet匿名访问及爆破*
smb/smbs:SMB匿名访问及爆破*
LDAP:ldap:// or ldaps:// or ldapi://代表轻量级目录访问协议
Gopher:gopher://:/_后接TCP数据流在,SSRF中属于万金油,可以攻击内网的 FTP、Telnet、Redis、Memcache,也可以进行 GET、POST 请求,还可以攻击内网未授权mysql。*

ssrf绕过

1.http://baidu.com@www.baidu.com与http://www.baidu.com`请求时是相同的

2.各种IP地址的进制转换
例如:192.168.0.1
(1)、8进制格式:0300.0250.0.1
(2)、16进制格式:0xC0.0xA8.0.1
(3)、10进制整数格式:3232235521
(4)、16进制整数格式:0xC0A80001
(5)、特殊写法(0可省略,在linux中127.0.0.1可以写成0.0.0.0)
http://0/
http://127.1/
利用ipv6绕过,http://[::1]/
 http://127.0.0.1./

 3.302跳转
可以使用 xip.io或者是xip.name 进行302跳转

4.短网址绕过 http://t.cn/RwbLKDx

5.限制了子网段,可以加 :80 端口绕过。http://tieba.baidu.com/f/commit/share/openShareApi?url=http://10.42.7.78:80

6.dns解析
如果目标对域名或者IP进行了限制,那么可以使用dns服务器将自己的域名解析到内网ip

ssrf总结

ssrf怎么找

1.分享
通过URL地址分享网页内容

2.转码服务
通过URL地址把源地址的网页内容调优使其适合手机屏幕浏览

3.在线翻译
通过URL地址翻译对应文本的内容,例如有道、百度等

4.图片的加载或下载
通过URL地址加载或者下载图片,查看图片来源是否是同源的url

5.图片、文章的收藏功能(这个本人没有尝试过)

6.未公开的api

7.从url的关键字寻找
存在share、url、wap、display等可能存在

ssrf怎么防御

1.禁用其他协议,允许http、https
2.统一错误回显信息
3.过滤返回的信息
4.限制请求的端口
5.对内网的IP做白名单

ssrf怎么攻击

攻击方式上面以及说了,这里说一下绕过的技巧

添加端口号
短网址绕过
指向任意IP的域名xip.io:
10.0.0.1.xip.io   resolves to   10.0.0.1
www.10.0.0.1.xip.io   resolves to   10.0.0.1
mysite.10.0.0.1.xip.io   resolves to   10.0.0.1
foo.bar.10.0.0.1.xip.io   resolves to   10.0.0.1

IP限制绕过:
十进制转换 八进制转换 十六进制转换 不同进制组合转换

协议限制绕过:
当url协议限定只为http(s)时,可以利用follow redirect 特性
构造302跳转服务,
结合dict:// file:// gopher://

DNS重绑定
1.特定域名实现TTL=0
2.域名绑定两条记录(ceye.io即可)
3.自己搭建DNS服务器



以上是关于csrf和ssrf总结的主要内容,如果未能解决你的问题,请参考以下文章

ruby Ruby片段

markdown 使用ruby代替grep / awk / sed就像perl一样

ruby 方便的片段

ruby serverspec片段

ruby 片段

ruby Codiing片段