SSRF(服务器端请求伪造)

简介: SSRF(服务器端请求伪造)攻击,如何进行内网穿透

大部分初学者会把xss、xxe、csrf、ssrf、crlf搞混,这里说明一下各自的作用攻击类型和现象等,逻辑文字较多,可能比较枯燥,但是想要入门WEB安全这些理论知识是必须要掌握的,尽量写的简单点。

XSS(跨站脚本攻击)-Cross Site Scripting 。是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写u人恶意的脚本代码(HTML, JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。

常见的危害有:cookie窃取,sesssion劫持,钓鱼攻击,蠕虫,DDos

详细信息查看:手把手教你XSS漏洞常见类型挖掘方法

XML外部实体(XML External Entity, XXE),Web应用的脚本代码没有限制XML引入外部实体,从而导致测试者可以创建一个包含外部实体的XML,使得其中的内容会被服务器端执行

常见的危害有:当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害

详细信息查看:XXE 外部实体注入漏洞

CSRF (跨站站点请求伪造)。攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求时完全合法的,但是却完成了攻击者所期望的一个操作。

常见的危害有:比如以你的名义发送邮件,法消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

详细信息查看:CSRF(跨站请求伪造)攻击实战

SSRF(服务端请求伪造) Server-Side Request Forgery ,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。在一般情况下,SSRF攻击目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统

常见的危害有:利用该漏洞绕过防火墙等访问限制,进而将受感染或存在漏洞的服务器作为代理进行端口扫描,甚至是访问内部系统数据。

CRLF是Carriage-Return Line-Feed的缩写又称为HTTP响应拆分漏洞(HTTP Response Splitting),意思是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。

常见的危害有:内容较多可以查看CRLF(HTTP响应拆分漏洞)攻击实战

实战

1.攻击流:攻击者----->服务器---->目标地址(内网)

2.使用pikachu的靶机进行演示SSRF漏洞。

靶场搭建查看:中文版Pikachu web靶机平台搭建指南,英语小白的福音

image.png

3.查看页面中有一个url点击一下看看。

image.png

4.审查url可以看到有点不一样,如果是正常的url这里请求的127.0.0.1应该指的是本机,本机是又没有这些文件的,所以这里的127.0.0.1其实指的是服务器。所以这里就可以以服务器的身份去进行一些攻击,比如访问服务器上的文件,比如利用服务器做为内网探测等。

image.png

5.修改url探测22服务是否开启。

image.png

6.源码审查,可以看到后台使用curl_exec()函数进行处理。该函数如果使用不当就可以导致SSRF漏洞,可以探测内网服务。

image.png

7.源码审查,如果使用了file_get_contents()函数就会导致可以读取任意文件。

image.png

8.修改参数读取/etc/passwd文件

image.png

总结:上面的例子虽然看起来都和文件包含比较接近,但是还是有点区别的,文件包含是包含的是个文件,而SSRF根据函数的不一样,不仅可以调用远程文件,还可以执行目录或者探测端口等情况。

curl_exec(),PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证

file_get_contents()函数是用于将文件的内容读入到一个字符串中的首选方法。

fsockopen()函数打开一个网络连接或者一个Unix套接字连接,

相关文章
|
3月前
|
Swift iOS开发
iOS Swift使用Alamofire请求本地服务器报错-1002
iOS Swift使用Alamofire请求本地服务器报错-1002
95 1
|
3月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
208 0
|
29天前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
56 22
|
29天前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
53 4
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
53 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
5月前
|
Linux
【Linux】一条命令,转发所有请求到另一台服务器上 -高级技巧
【Linux】一条命令,转发所有请求到另一台服务器上 -高级技巧
83 0
|
2月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
31 1
|
3月前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
|
4月前
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
105 8
|
4月前
|
Shell Python
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。