首页 > 其他分享 >ssrf-md

ssrf-md

时间:2022-10-02 10:59:35浏览次数:49  
标签:md ssrf 协议 ip gopher 攻击者 服务器


title: ssrf.md
date: 2022-07-02 08:20:45
tags:

ssrf基础知识

ssrf(server-side-request forgery,服务端请求伪造)是一种由攻击者构造请求,由服务器发起请求的安全漏洞,一般情况下,ssrf攻击的目标是外网无法访问的内网系统(因为是由于服务器发起的请求,所以服务器能够请求与自身相连而与外网隔绝的内部系统)。

ssrf的成因

ssrf漏洞形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能没有对目标地址进行限制

ssrf种类

显示对攻击者的响应(basic):它显示对攻击者的响应

因此在服务器获取攻击者要求的url后,它将把响应发送给攻击者

发送给客户端,如传送一个url地址 会发挥这个网站的界面或者对应的html代码。

不显示响应(blind):和上面正好相反,不会返回结果到客户端

未从初次请求中获有关目标服务的任何信息

要在这种情况下确认漏洞,攻击者必须使用burp等工具

这些工具可以通过强制服务器向攻击者控制的服务器发出DNS或HTTP请求来确认服务器是易受攻击的。这种ssrf通常易于验证,但难以利用。

semi-ssrf:与blind相似,这种ssrf不会返回相关结果请求的所有详情信息,但是会暴露一些数据。

这可能是部分数据或错误信息,他们为攻击者提供了更多的信息。

有时,关于请求的元数据(例如响应时间)也可以视为Semi-ssrf,因为它们允许攻击者验证请求是否成功。这种ssrf通常足以验证漏洞,但并不总是能够提取敏感数据。

常见的内网ip段

局域网地址范围分为三类,以下ip段为内网ip段

C类:192.168.0.0 - 192.168.255.255

B类:172.16.0.0 - 172.31.255.255

A类:10.0.0.0 - 10.255.255.255

一些知识点

url的格式如下

 scheme://user:pass@host:port/path?query=value#fragment 
 // 其中scheme 可以是gopher dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp

当我们发现ssrf漏洞的时候,我们首先要做的事情就是测试所有可用的url伪协议

一些常用的url伪协议

 file:///  -- 本地文件传输协议,主要用于访问本地计算机中的文件 

dict://   -- 字典服务器协议,dict是基于查询相应的TCP协议,服务器监听端口2628 

sftp://   -- SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol)

 ldap://   -- 轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议 

tftp://   -- 基于lockstep机制的文件传输协议,允许客户端从远程主机获取文件或将文件上传至远程主机

 gopher:// -- 互联网上使用的分布型的文件搜集获取网络协议,出现在http协议之前 

gopher协议

gopher协议是一个在http协议诞生前用来访问internet资源的协议,可以理解为http协议的前身或者简化版,虽然很古老但现在很多库还支持gopher协议而且gppher协议功能很强大

他可是实现多个数据包整合发送,然后gopher服务器将多个数据包捆绑这发送到客户端,这就是他的菜单相应,比如使用一条gopher协议的curl指令就能操作mysql或者完成对redis的攻击等等

gopher协议使用tcp可靠连接

gopher url格式

gopher://<host>:<port>/<gopher-path>

port默认是70

如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码

限制

gopher协议在各个编程语言中的限制

img

gopher协议格式

URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流

gopher协议在ssrf中的利用

出现ssrf的地方如果没有对协议,ip,端口这些东西做一些限制,则可以用来探测内网存活的ip及开放的端口、

读取任意文件、 利用phar 协议触发反序列化、攻击内网redis/memcache/mysql 及web 应用fastcgi 或其他服务等等。

这里gopher协议在其中占了很重要的角色

ssrf-lab basics

看一下导致产生ssrf的源码

<?php 
	// 创建一个新的curl资源
	$ch = curl_init(); 
// set 设置访问的url
curl_setopt($ch, CURLOPT_URL, $_POST["handler"]); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch);

echo $output;
?>
curl_init()函数

如果他没有对我们输入的url进行一些过滤那么我们就可以攻击一下我们访问不到并且这个服务器可以访问的到的网站

这一关没有对我们输入的url进行任何的过滤

先测试一下http://127.0.0.1

1656986029558

看到利用curl函数产生的ssrf漏洞把网页代码返回给我们了

这里可以用file伪协议来查看本文件

1656987071756

advanced1

<?php 
$handler = $_POST["handler"];
if (preg_match('#^https?://#i', $handler) !== 1) {
	echo "Wrong scheme! You can only use http or https!";
	die();
} else if(preg_match('#^https?://10.0.0.3#i', $handler) === 1) {
	echo "Restricted area!";
	die();
}

// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, $_POST["handler"]); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch);

echo $output;
?>

这里他进行了一些过滤

这里面他也过滤了10.0.0.3地址

来测试一下

Restricted area!

返回这个 就是被过滤了

但是ip地址有很多的表达方式,我们可以用那些表达方式来绕过。

我们先来看看ip地址的表达方式

众所周知ip地址是由四个字节组成的, 一旦包含了小数点,就必须考虑到大小端表示,因为这个会影响IP地址的解析。不过好在所有的网络地址都是大端表示法,只需要注意这一点即可,下面我们介绍IP地址的表达方式。

1 字符串:10.0.0.3

2二进制:00001010 . 00000000 . 00000000 . 00000011

3十六进制 :0A.00.00.03

4整数: 167772163

还可以用0x0A000003表示ip地址

其他常见绕过方法

DNS泛域名

xip.io和xip.name这两个dns泛域名,实现绕过对的方法是,你在你想访问的ip地址后面添加这两个泛域名,这两个域名会从发送的请求中提取真正想访问的ip地址,然后在响应报文中返回

标签:md,ssrf,协议,ip,gopher,攻击者,服务器
From: https://www.cnblogs.com/kkkkl/p/16748387.html

相关文章

  • buu-upload简单题-md
    title:buu-upload简单题.mddate:2022-07-0117:21:09tags:[ACTF2020新生赛]Upload打开之后尝试上传一个shell然后发现这个看起来像js前端验证我们可以f12f1......
  • phar-unserilze-md
    title:phar+unserilze.mddate:2022-08-2221:20:01tags:打开题目发现在查看文件的时候可以文件读取这里尝试读取flag.php文件不存在。。。查看index的源代码把......
  • buu刷题-md
    title:buu刷题.mddate:2022-08-2117:31:28tags:[RoarCTF2019]EasyCalc打开发现真的是个计算器因为当时学了ssti看到这个就第一时间想到了ssti不过看了......
  • DASCTF-X-CBCTF-2022九月挑战赛-md
    title:DASCTF-X-CBCTF-2022几月挑战赛.mddate:2022-09-1820:24:51tags:DASCTFXCBCTF2022九月挑战赛3d小恐龙这道题经过队友的提示才做出来的。。。。。不......
  • 2022第五空间网络安全初赛-md
    title:2022第五空间网络安全初赛.mddate:2022-09-2011:06:40tags:2022第五空间网络安全初赛5_web_BaliYun简单的文件上传刚开始别人出的很快就以为是不同的文件......
  • 2022中国工业互联网安全大赛北京市选拔赛全国线上预选赛-md
    title:2022中国工业互联网安全大赛北京市选拔赛全国线上预选赛.mddate:2022-09-2322:19:12tags:ezRead一眼看到上面可能是存在任意文件读应该是base64加密过后的......
  • DDCTF2019-HOMEBREW-EVENT-LOOP-md
    title:DDCTF2019HOMEBREWEVENTLOOP.mddate:2022-09-2711:42:22tags:[DDCTF2019]homebreweventloop代码审计fromflaskimportFlask,session,request,Re......
  • SWPUCTF2018SimplePHP-md
    title:SWPUCTF2018SimplePHP.mddate:2022-06-2508:06:23tags:登陆进去之后发现上传文件这里我们试着上传一个shell试试发现过滤了应该直接上传shell不可以这......
  • ciscn2019华北赛区Day1-Web1dropbox-md
    title:ciscn2019华北赛区Day1Web1dropbox.mddate:2022-06-2620:56:10tags:进去之后呢看到一个登录框然后注册一个账号进去看到有上传文件的东西然后试试上传一个......
  • BJDCTF2020Cookie-is-so-stable-md
    title:BJDCTF2020Cookieissostable.mddate:2022-07-0718:45:14tags:进去之后发现这个好像ssti我们输入{{1+2}}返回这个应该时ssti了然后我们输入{{"".__c......