• ssrf原理与实践


    原理

    1. SSRF简介

    ​ SSRF(Server-Side Request Forgery,服务端请求伪造),是攻击者让服务端发起构造的指定请求链接造成的漏洞。

    ​ 由于存在防火墙的防护,导致攻击者无法直接入侵内网;这时攻击者可以以服务器为跳板发起一些网络请求,从而攻击内网的应用及获取内网数据。

    1. SSRF形成原因

    ​ 大都是由于服务端提供了从其它服务器获取数据的功能,比如使用户从指定的URL web应用获取图片、下载文件、读取文件内容等。但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发送请求,并返回对该目标地址请求的数据。

    ​ 最常见的例子:攻击者传入一个未经验证的URL,后端代码直接请求这个URL,就会造成SSRF漏洞。

    1. SSRF与CSRF的区别

    ​ CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的cookie信息伪造用户请求发送至服务器;

    ​ SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或者其它服务器。

    1. SSRF的类型

    1)显示对攻击者的响应(basic):在服务器获取攻击者要求的URL后,把响应发送回攻击者。

    2)不显示响应(blind):在服务器获取攻击者要求的URL后,不会把响应内容发送给攻击者,需要通过抓包或查看服务器日志判断是否存在服务端请求伪造漏洞。

    1. 利用SSRF可以实现的攻击

    1)获取web应用可达服务器的banner信息(如软件开发商、软件名称等),以及收集内网web应用的指纹识别(如开放的端口、中间件版本等),根据这些信息再进行进一步的渗透;

    2)攻击运行在内网的系统或应用程序,获取内网系统弱口令进行内网漫游,对有漏洞的内网web应用实施攻击获取webshell(如Struts2命令执行,discuz!论坛SSRF通过Redis实施getshell等);

    3)利用有脆弱性的组件结合ftp://,file:///,gopher://,dict://等协议实施攻击(如FFmpeg任意文件读取,XXE攻击等)。

    1. 拓展攻击面

    结合gopher协议攻击内网FTP、Telnet、Redis、FastCGI、Memcache,也可以进行get、post请求。

    实验

    有回显的ssrf

    无回显的ssrf

    1. 在自己的服务器上开启apache服务 /etc/init.d/apache2 start

    这里 我们的攻击机器IP为10.1.1.200

    1. 无回显的框内输入http://10.1.1.200

    1. 查看apache日志可以看到请求,证明有ssrf

    tail -f /var/log/apache2/access.log

    无回显的ssrf也可以用 tcpdump抓包测试

    Kali机器打开一个终端,使用tcpdump抓包:

    tcpdump -nne -i eth0 port 6666

    -nne:不把端口和网络地址转换成名称,在输出行打印数据链路层的头部信息;

    -i:监视指定网络接口的数据包。

    dir协议探测端口

    通过dict协议获取服务器端口运行的服务

    输入 dict://127.0.0.1:22

    dict://127.0.0.1:80 探测端口

    file协议访问文件

    在‘有回显的SSRF’处输入:file:///etc/passwd

  • 相关阅读:
    C#中如何只保留小数点后面两位?
    Int16 Int32 Int64
    移动端重构系列3——重置样式
    移动端重构系列2——整体布局(转载)
    移动端重构系列1——新建空白页面(转载)
    八种创建等高列布局(转载)
    一个完整的Flexbox指南(转载)
    等高列布局、水平垂直居中与置顶页脚(转载)
    Block formatting context & Inline formatting context(BFC&IFC)的区别(转载)
    [转载]网页动画的十二原则
  • 原文地址:https://www.cnblogs.com/l0nmar/p/13288581.html
Copyright © 2020-2023  润新知