HTTP的GET/POST ,SSRF学习--20220315

文章详细介绍了HTTP中的GET和POST请求方式,包括它们的特点和使用场景。GET请求参数显示在URL中,适合数据量小且不敏感的情况,而POST请求则能传输更大、更安全的数据。此外,文章重点讨论了SSRF(服务端请求伪造)攻击,这是一种利用服务器发起攻击的漏洞,常见的攻击方式包括端口扫描和内网资源访问。防御SSRF的措施包括限制请求协议和端口、设置白名单以及统一错误信息。
摘要由CSDN通过智能技术生成

2023/03/15

背景学习1 .HTTP中请求方式GET/POST:

GET:从服务器请求数据后获取服务端数据

常见发起GET请求的方式有:URL,src/href,表单form

格式:

index.php?userName=jack&password=123 key=value&key=value,这种叫做查询字符串

特点:

参数名和参数值之间没有空格

参数值不需要使用单双引号

  • GET方式提交数据特点:

在url后面拼接参数,只能以文本的形式传递参数

传递的数据量小

安全性低,会将信息显示在地址栏中

POST:发送,提交,向服务器提交要被处理的数据

格式:查询字符串(名称/值)是在POST请求的HTTP消息主体中发送,不会出现在url

具体使用POST:对数据有变更的请求,请求的结果有持续性的副作用

特点:

安全性高

传递数据量大

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YhKqxCXT-1679149492920)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1bc1e674-a345-484e-9580-b8e70a96fcba/Untitled.png)]

浅析HTTP中请求GET/POST

4. SSRF服务端请求伪造

攻击者构造请求,在目标服务端执行的一个安全漏洞

以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。

1. 主要攻击方式:

攻击者借助服务器A发起SSRF攻击,通过服务器A向主机B发起请求,达到攻击内网的目的。

2. 漏洞形成原理:

很多网站提供了从其它服务器上获取数据的功能,SSRF利用存在缺陷的web站点作为代理攻击远程和本地的服务器。

形成原因大多是:服务端提供了从其它服务器获取数据的功能,但没有对目标地址做过滤和限制

  1. 对外网、服务器所在内网、本地进行端口扫描
  2. 向内部任意主机的任意端口发送payload来攻击内网服务
  3. DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
  4. 攻击内网的web应用,如直接SQL注入、XSS攻击等
  5. 利用file、gopher、dict协议读取本地文件、执行命令等
  6. 可以无视网站CDN

3. 漏洞检测:

  1. 漏洞验证:

抓包分析发送的请求是否是由服务器端发送的来判断是否存在SSRF漏洞

  1. 漏洞的可能出现点:
  • 分享功能:通过url地址分享文章,此功能中没有对目标地址的范围做过滤和限制就存在着SSRF漏洞。
  • 图片加载/下载
  • 图片/文章收藏功能
  • 转码服务
  • 在线翻译

需要从远程服务器请求资源的网站都可能存在SSRF漏洞。

  1. 绕过方法
  • 当网站限制只能访问http://www.xxx.com类型的域名时,采用http基本身份认证的方式绕过,利用@
  • 绕过限制请求IP不为内网地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FbQ2RHW-1679149492921)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/44d44410-40b7-4ab2-917c-d403fff64f12/Untitled.png)]

  • 限制请求只为http协议:1.采用302跳转 2. 采用短地址
  1. 漏洞利用

产生漏洞的函数

PHP中下面函数的使用不当导致SSRF:

file_get_conents()
fsockopen()     //将整个文件读入一个字符串中
curl_exec()     //执行给定的curl会话

可以通过url中的内容改成内网的其它服务器上的地址和端口,探测内网信息,端口开放情况

4. 如何防御SSRF

1、禁止跳转

2、禁用除http和https外的协议,如:file://、gopher://、dict://等。

ftp://协议,用来探测开放的端口

Gopher;//协议,任意的构造请求

Dict://协议,探测主机信息

3、限制请求的端口为http常用的端口,如 80、443、8080。

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

5、对请求地址设置白名单或者限制内网IP,以防止对内网进行攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSRF (Server Side Request Forgery) 测试是一个用于检测服务器端请求伪造漏洞的工具,它是一种常见的安全测试技术。为了安装 SSFRT 这一工具,你可以按照以下步骤操作: ### 安装依赖 首先,确保你的系统已安装 Python 和 pip(Python 的包管理器)。在命令行界面输入: ```bash pip install -r requirements.txt ``` 如果你是使用基于 Debian 或者 Ubuntu 的 Linux 发行版,则需要先安装 `libffi-dev`、`libssl-dev`、`python-dev` 等库,可以通过运行以下命令完成: ```bash sudo apt-get update sudo apt-get install libffi-dev libssl-dev python-dev ``` 接着,在你的项目目录中创建一个名为 `requirements.txt` 的文件,并添加所需的依赖(通常包括 `requests` 库),然后再次使用 `pip` 来安装: ```txt # requirements.txt 文件内容示例 requests==2.26.0 pip install -r requirements.txt ``` ### 安装 SSFRT 工具 使用 Git 克隆 SSFRT 的仓库到本地: ```bash git clone https://github.com/ssertool/ssftrt.git cd ssftrt pip install . ``` 或者从 PyPI 直接安装(如果已发布): ```bash pip install ssftrt ``` ### 使用 SSFRT 一旦 SSFRT 成功安装,你可以在 Python 脚本中导入并使用它来进行 SSRF 测试。典型的用法如下: ```python from ssertool.ssftrt import SSFRT ssf = SSFRT() results = ssf.scan('http://example.com', {'param': 'http://target.example.com'}) print(results) ``` 在这个例子中,我们尝试通过 `http://example.com` 的 URL 发起请求,其中 `param` 参数指向了目标 URL `http://target.example.com`。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值