SSRF浅析

36 篇文章 2 订阅
36 篇文章 1 订阅

CSRF与SSRF

首先来说一下这两个长得这么像的东西,分别是什么,它们有什么区别?

CSRF,全称为Cross-Site RequestForgery,也就是跨站请求伪造。
SSRF,全称为Server Side RequestForgery,也就是服务器端请求伪造。

XSS与CSRF

说到CSRF,不得不提一下XSS。从名字上来看,同为跨站攻击,XSS是跨站脚本攻击,CSRF是跨站请求伪造,也就是说,CSRF攻击本不是出自用户之手,而是经过第三方恶意攻击者的处理之后,伪装成了受信任用户的“亲历亲为”。

我们所能见到的大部分网站,都是通过cookie等方式记录、分辨出受信任用户的身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过XSS或链接引导等途径,让用户在本机发起自己所不知道的危险请求,使得恶意攻击有机可乘,获取用户cookie等信息,以达到身份伪装目的。看到这里不知您是否有所明白,XSS是实现CSRF的诸多途径中的一条,但并不是唯一的一条。

CSRF与SSRF

从字面上来看,SSRF与CSRF不同的是,它是服务器端发出的请求伪造,而非从用户一端发出的。作为受信任用户,服务器当然不可能做出危害用户的事情。它是一种由攻击者构造形成的,由服务端发起请求的一个安全漏洞。因为它是由服务端发起的,所以它能够请求到与它相连但与外网隔离的内部系统。由于服务端提供了从其他服务器应用获取数据的功能(例如分享等功能)且没有对目标地址做过滤与限制,从而给予了攻击者乘虚而入的机会。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载资源等等。SSRF是利用存在缺陷的web应用作为代理,攻击远程和本地的服务器。

总结

总的来说,CSRF是服务器端没有对用户提交的数据进行严格的把控,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。而SSRF是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
在这里插入图片描述

如何判断SSRF是否存在

首先要知道出现SSRF的函数基本就这几个file_get_contents()curl()fsocksopen()fopen(),如果获取到源码了,发现源码中存在这些函数,那么大致就可以判断是否有SSRF存在。

如果没有获取到源码,SSRF的入口一般是出现在调用外部资源的地方,比如有个url参数让你传入,或者是在html的输入框中,你可以使用http://file://dict://协议读取一下。

在这里插入图片描述

常见的SSRF探测内网的方法

脚本

# -*- coding: utf-8 -*-
import requests
import time
ports = ['80','6379','3306','8080','8000']
session = requests.Session();
for i in range(1, 255):
    ip = '192.168.0.%d' % i #内网ip地址
    for port in ports:
        url = 'http://ip/?url=http://%s:%s' %(ip,port)
        try:
            res = session.get(url,timeout=3)
            if len(res.text) != 0 :    #这里长度根据实际情况改
                print(ip,port,'is open')
        except:
            continue
print('Done')

这里的ports是指定一些端口,有的题目会给出端口范围,可以根据情况将ports改为range()表示的端口范围,同时也要把后面返回的长度len(res.text)更改一下。

burpsuite

使用burpsuite中的Intruder模块去爆破

nmap工具

nmap -sV ip
nmap -sV ip -p4000		//指定4000端口
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值