网络安全进阶学习第四课——SSRF服务器请求伪造

这篇具有很好参考价值的文章主要介绍了网络安全进阶学习第四课——SSRF服务器请求伪造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、什么是SSRF?

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击。
一般情况下,SSRF攻击的目标是从外网无法访问的内部系统,也就是内网。

利用一个可以发起网络请求的服务,当做跳板来攻击其它服务


二、SSRF成因

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。ssrf是利用存在缺陷的web应用作为代理去攻击远程和本地的服务器。

也就是说,对于为服务器提供服务的其他应用没有对访问进行限制,如果我构造好我的访问包,那我就有可能利用目标服务对他的其他服务器应用进行调用。


三、SSRF简析

SSRF漏洞就是通过篡改获取资源的请求发送给服务器;

但是服务器并没有检测这个请求是否合法的;

然后服务器以他的身份来访问其他服务器的资源。


四、PHP存在SSRF的风险函数

以下函数可以通过网络协议访问目标服务器上的资源:

  1. file_get_ contents()
    file_get_ contents函数可以读取本地和远程的文件,支持多种协议,如ftp,http,https还可以读取php源码;
    如:php://filter/read=convert.base64-encode/resource=ssrf.php,就可以将后台当前目录下的ssrf.php文件的bs64编码返回。

  2. fsockopen()
    fsockopen函数是文件指针

  3. curl_exec()
    curl_exec函数将访问前端提交的url参数的网址。


五、后台源码获取方式

  1. 网上寻找开源的源码
  2. 利用漏洞攻击,获取源码

六、SSRF危害

  1. 可以对服务器所在内网、本地进行端口扫描,获取一些服务的信息等。例如:可以不断尝试对服务器的内网端口进行探测。
  2. 目标网站本地敏感数据的读取。例如:能读取服务器根目录下的敏感文件。
  3. 内外网主机应用程序漏洞的利用
  4. 内外网Web站点漏洞的利用

七、SSRF漏洞挖掘

从WEB功能上寻找,

  1. 分享功能。网站能进行超链接的标题等内容进行显示;
  2. 在线翻译,例如:通过URL地址翻译对应文本的内容;
  3. 图片加载与下载。加载远程图片地址此功能用到的地方很多,很大可能造成SSRF问题。例如:编辑器处,就会有远程文件加载。某些地方会进行远程加载头像。
  4. 转码服务。通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览。
  5. 未公开的API。API (应用程序编程接口)实现以及其他调用URL的功能等。此处类似的功能有360提供的网站评分,以及有些网站通过应用程序编程接口获取远程地址文件来加载内容。

SSRF通过远程加载来实现攻击。

从URL关键字中寻找

在对功能上存在SSRF漏洞中URL地址特征的观察,通过收集,大致有以下关键字:
网络安全进阶学习第四课——SSRF服务器请求伪造
如果利用google 语法加上这些关键字去寻找SSRF漏洞,耐心的验证,现在还是可以找到存在的SSRF漏洞。

一切要你输入网址的地方和可以输入ip的地方,都是ssrf的天下。


八、SSRF具体利用

ssrf常利用的相关协议

  • http://:探测内网主机存活、端口开放情况
  • gopher://:发送GET或POST请求;攻击内网应用
  • dict://:泄露安装软件版本信息,查看端口,操作内网远程访问等
  • file://:读取本地文件

#使用方法
内网访问:
使用http协议对内网的Web应用进行访问
?url=http://127.0.0.1/flag.php

PHP伪协议读取文件

PHP支持的伪协议:

  • file:// — 访问本地文件系统
  • http:// — 访问 HTTP(s) 网址
  • ftp:// — 访问 FTP(s) URLs
  • php:// — 访问各个输入/输出流(I/O streams)
  • zlib:// — 压缩流
  • data:// — 数据(RFC 2397)
  • glob:// — 查找匹配的文件路径模式
  • phar:// — PHP 归档
  • ssh2:// — Secure Shell 2
  • rar:// — RAR
  • ogg:// — 音频流
  • expect:// — 处理交互式的

在php.ini里有两个重要的参数allow_url_fopen、allow_url_include。

allow_url_fopen:默认值是ON。允许url里的封装伪协议访问文件;

allow_url_include:默认值是OFF。不允许包含url里的封装伪协议包含文件;

端口扫描

在SSRF中,dict协议与http协议可以用来探测内网主机存活与端口开放情况。

例如:
?url=dict://127.0.0.1:8000
?url=http://127.0.0.1:8080


九、SSRF存在的必要条件

  1. 必须要有交互;
  2. 请求资源没有做限制。

以下例子是不存在SSRF漏洞的,举例:

http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png

假如通过抓包,发现服务器请求地址是:www.baidu.com

或者右键查看图片的存放地址是:http://www.baidu.com/img/bd_logo1.png,这两种情况,是不存在SSRF漏洞的。

因为请求的地址都是baidu的服务器,而URL里面的拼接地址也是baidu的地址。SSRF存在的前提是A让B帮忙访问C,现在这相当于是B发脾气,直接告诉A,C在哪里,让A直接访问C,这样子就不存在SSRF漏洞了。


十、SSRF防御

通常有一下 5 个思路:

  • 过滤返回信息,验证远程服务器对请求的相应,是比较容易的方法。如果 Web 应用获取某种类型的文件,那么可以在把返回结果展示给用户之前先验证返回信息是否符合标准。
  • 统一错误信息,避免用户根据错误信息来判断远程服务器端口状态。
  • 限制请求的端口为 HTTP 常用端口,比如 80、443、8080、8090
  • 黑名单内网 IP,避免应用被用来获取内网数据,攻击内网。
  • 禁用不需要的协议。仅仅允许HTTP和HTTPS请求。可以防止类似于file://、ftp://等引起的问题

十一、SSRF绕过技巧

利用@符号

SSRF绕过中我们通常使用@符号进行绕过
例如:http://example.com@127.0.0.1

添加端口号

SSRF绕过中我们通常使用添加端口号绕过
例如:http://127.0.0.1:8080

利用短地址

SSRF绕过中我们通常使用短地址进行绕过,把目标网页变成短地址。

利用特殊域名

SSRF绕过中我们通常使用特殊域名进行绕过

利用封闭式字母数字Enclosed Alphanumerics

例:ⓔ ⓧⓐ ⓜⓟ ⓛⓔ .ⓒ ⓞⓜ >>> example.com
清单:

①② ③ ④ ⑤ ⑥ ⑦⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵
Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ ℗ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ ⓍⓎ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦⓧ ⓨ ⓩ

利用。绕过

SSRF绕过中我们通常使用。进行绕过
例如:http://127。0。0。1

利用进制转换

把IP地址转换成八进制、二进制、十六进制

利用其它协议

Dict:// dict://<user-auth>@<host>:<port>/d:<word>
SFTP:// ssrf.php?url=sftp://example.com:11111/
TFTP:// ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP:// ssrf.php?url=ldap://localhost:11211/%0astats%0aquit

更加具体可以参考这个网页:https://www.secpulse.com/archives/65832.html

这里给出一个大牛的脚本,可以很方便的探测ssrf的网段以及每个网段的端口,甚至还有反弹shell的功能:

地址: https://github.com/NoneNotNull/SSRFX


十二、靶场参考

链接: pikache靶场通关——SSRF攻击
链接: ctfhub靶场练习——SSRF攻击文章来源地址https://www.toymoban.com/news/detail-514820.html


到了这里,关于网络安全进阶学习第四课——SSRF服务器请求伪造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全进阶学习第二十一课——XXE

    XXE(XML External Entity,XML) 外部实体 注入攻击。 — — 攻击者通过构造 恶意的外部实体 ,当解析器解析了包含“恶意”外部实体的XML类型文件时,便会导致被XXE攻击。XXE漏洞主要由于危险的外部实体引用并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍

    2024年02月06日
    浏览(61)
  • 网络安全进阶学习第九课——SQL注入介绍

    将 不受信任 的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在 没有适当授权 的情况下执行非预期命令或访问数据。 注入能导致 数据丢失、破坏 或 泄露给无授权方 ,缺乏可审

    2024年02月14日
    浏览(45)
  • 网络安全进阶学习第十课——MySQL手工注入

    重点库: information_schema PHP的网站,常用数据库为MYSQL、PostgreSQL 判断数据库类型: MYSQL:3306 PostgreSQL:5432 MSSQL:1433 使用场景:数据库在页面中存在显示位。 UNION操作符 用于连接两个以上的SELECT语句的结果组合到一个结果集合中。前提是两个select必有 相同列 。 1)首先判断

    2024年02月10日
    浏览(49)
  • 网络安全进阶学习第二十一课——XML介绍

    XML(eXtensible Markup Language),可扩展标记语言,是一种标记语言,使用简单标记描述数据;(另一种常见的标记语言是HTML) XML是一种非常灵活的语言, 没有固定的标签,所有标签都可以自定义 ; 通常 XML被用于信息的传递和记录 ,因此,xml经常被用于充当配置文件。如果把

    2024年02月06日
    浏览(47)
  • 网络安全进阶学习第六课——服务器解析漏洞

    解析漏洞主要是一些特殊文件被Apache、IIS、Nginx等Web服务器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞 影响范围:2.4.0~2.4.29版本 此漏洞形成的根本原因,在于 , 正则表达式中 , 正则表达式中 , 正则表达式中 不仅匹配字符串结尾位置,也可以匹配n 或 r ,在解

    2024年02月12日
    浏览(53)
  • 网络安全进阶学习第三课——CSRF跨站请求伪造

    会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。 Cookie是一个保存在客户机中的简单的文本文件,当我们使用自己的电脑,通过浏览器进行访问网页的时候,服务器就会生成一个证书然后返回给浏览器并写入我们的本地电脑,这

    2024年02月12日
    浏览(47)
  • 网络安全进阶学习第二课——XSS跨站脚本攻击

    首先了解什么是前端。前端从定义上来讲是指一个网站的前台部分,是展示给用户看的部分。它不需要关注任何业务之间的逻辑处理,只需要安安静静地做好自己,老老实实的把自己最美的一面展示给用户。 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的

    2024年02月11日
    浏览(46)
  • 网络安全进阶学习第十一课——MySQL手工注入(2)

    UA是 用户代理(User-Agent) 的缩写,里面含有客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正

    2024年02月14日
    浏览(59)
  • 网络安全进阶学习第十五课——Oracle SQL注入

    Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。 Oracle服务默认端口:1521 Oracle和MySQL数据库语法大致相同,结构不太相同。 最大的一

    2024年02月11日
    浏览(44)
  • solidity进阶第四课——在合约中创建新合约

    在以太坊上,用户(外部用户)可以创建智能合约,智能合约同样也可以创建新的智能合约。去中心化交易所uniswap就是利用工厂合约(Factory)创建了无数个币对合约(Pair)。这一讲将讲如何在合约中创建合约。 create和create2 有两种方法可以在合约中创建合约,create和create

    2024年02月01日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包