4,csrf原理(跨站请求伪造)+ssrf原理(服务器端请求伪造)

ssrf 和csrf 和重放攻击区别

    CSRF 是跨站请求伪造     由客户端发起 
    
    SSRF 是服务器端请求伪造   由服务器发起
    
    重放攻击是将截获的数据包进行重放,达到身份认证等目的
        什么是重放攻击
            入侵者从网络上截取主机A发送给主机B的报文,并把由A加密的报文发送给B,使主机B误以为入侵者就                是主机A,然后主机B向伪装成A的入侵者发送应当发送给A的报文。
        防御
            1. 加随机数
            2. 加时间戳

6.1 什么是SSRF    
    6.1.1 由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
6.2 造成漏洞的原因
    6.2.1 服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
6.3 SSRF漏洞相关函数和协议
    6.3.1 相关函数 
        file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile()等函数使用不当会造成SSRF漏洞
        file_get_content函数从用户指定的url获取内容,然后指定一个文件名j进行保存,并展示给用户。            file_put_content函数把一个字符串写入文件中。
        fsockopen函数实现对用户指定url数据的获取,该函数使用socket(端口)跟服务器建立tcp连接,传输数            据。
        curl_exec函数用于执行指定的cURL会话。
    6.3.2 注意
        1.一般情况下PHP不会开启fopen的gopher wrapper
        2.file_get_contents的gopher协议不能URL编码
        3.file_get_contents关于Gopher的302跳转会出现bug,导致利用失败
        4.curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用
        5.curl_exec() //默认不跟踪跳转,
        6.file_get_contents() // file_get_contents支持php://input协议
    6.3.3 协议
        (1)file:在有回显的情况下,利用 file 协议可以读取任意内容
        (2)dict:泄露安装软件版本信息,查看端口,操作内网redis服务等
        (3)gopher:gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
        (4)http/s:探测内网主机存活
    6.3.4 绕过
        1.@
        2.利用[::]来绕过localhost
        3.添加端口号
        4.利用短网址
        5.利用特殊域名(xip.io)
        6.利用DNS解析(在域名上设置A记录,指向127.0.0.1)
        7.利用进制转换
        8.句号
    6.3.5 SSRF危害
        1.内外网的端口和服务扫描
        2.攻击运行在内网或本地的应用程序
        3.对内网web应用进行指纹识别
        4.利用file协议读取本地敏感数据文件等
    6.3.6 防御
        1. 限制协议(仅允许http和https请求。)
        2. 限制IP(避免应用被用来获取内网数据,攻击内网。)
        3. 限制端口(限制请求的端口为http 常用的端口,例如80 443 8080 8090)
        4. 过滤返回信息(验证远程服务器对请求的响应是比较简单的方法。)
        5. 统一错误信息(避免用户可以根据错误信息来判断远端服务器的端口状态)

7.1 什么是CSRF
    挟制用户在当前已登录的web应用程序上执行非本意的操作的攻击方法
7.2 造成CSRF漏洞的原因
    网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。
7.3 CSRF危害
      信息被盗用,以你的名义发送恶意请求:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
7.4 防御
     1,验证码
     2,验证referer
     3,使用token(每一个表单都有他的唯一token令牌)
7.5 绕过CSRF防御
    1.点击劫持
        在同一个功能端点利用点击劫持会绕过所有CSRF防御。因为从技术上讲,只要是请求来自合法站点,如果易        受攻击的端点所在页面容易遭受点击劫持攻击,那么所有的CSRF保护将变得没有效果,攻击者可以任意执行        CSRF攻击。
    2.更改请求方法
        如果要伪造的敏感请求是通过POST方法发送的,那么尝试将其转换为GET请求。如果操作时通过GET方法发送        的,那么尝试转换为POST方法。应用程序可能仍然执行操作,且通常没有任何保护机制。
        例如,如下请求:
            POST /change_password
            POST body:
            new_password=qwerty
            可以被改写成
            GET /change_password?new_password=qwerty
    3.CSRF token的防御措施绕过
        因为一个站点使用了CSRF token不代表这个token是有效验证对应请求操作的,可以尝试如下方法绕过CSRF        的token保护。
        
        删除token参数或发送空token

        例如,合法请求如下
        POST /change_password
        POST body:
        new_password=qwerty &csrf_tok=871caef0757a4ac9691aceb9aad8b65b
        那么实施这种请求:
        POST /change_password
        POST body:
        new_password=qwerty
        或这种:
        POST /change_password
        POST body:
        new_password=qwerty&csrf_tok=
    4.Referer字段的CSRF防御绕过
        如果attack.com是一个可控的域名,baidu.com是一个要攻击的域名。这个站点没有使用CSRF token但是检        查了referer字段。你应该怎么做?
        
        移除referer字段

        和发送一个空token值相同,应用程序可能只是在发送后才会验证,有时候移除referer字段就可以绕过CSRF            防御。

        绕过正则表达式
            如果referer检查是基于白名单的,可以尝试绕过验证URL的正则表达式。例如,你可以尝试在                    referer的URL中将被攻击者域名置于二级域名区域或者URL目录区域。

            如果一个站点在referer字段检查“baidu.com”字段,那                    么“baidu.com.attacker.com"或”attakcer.com/baidu.com"可能可以绕过这种检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值