CSRF与SSRF

发布时间 2023-07-18 20:37:33作者: i苏沐辰

CSRF与SSRF

CSRF(跨站请求伪造)

跨站请求伪造(Cross-site request forgery,CSRF),它强制终端用户在当前对其进行身份

验证后的Web应用程序上执行非本意的操作。CSRF攻击的着重点在伪造更改状态的请求,而不是盗取数据,因为攻击者无法查看对伪造请求的响应。

借助社工的一些帮助(例例如通过电子邮件或聊天发送链接),攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF攻击可以强制用户执行状态更改的请求,例如转移资金。如果受害者是管理帐户,CSRF可能会危及整个Web应用程序。

【<img src="http://119.3.229.83/vulnerabilities/csrf/password_new=123&password_conf=123&Change=Change#" border="8" style="display:none;"/>】

环境:

DVWA内:

输入修改密码,但是没有进行验证,明显很不符合常情

image

image

image

SSRF(服务器端请求伪造)

互联网上的很多Web 应用提供了从其他服务器(也可以是本地)获取数据的功能。使用用户指定的URL,Web 应用可以获取图片、文件资源(下载或读取)。

用户可以从本地或者URL 的方式获取图片资源,交给百度识图处理。如果提交的是URL 地址,该应用就会通过URL 寻找图片资源。如果Web 应用开放了类似于百度识图这样的功能,并且对用户提供的URL和远端服务器返回的信息没有进行合适的验证或者过滤,就可能存在“请求伪造”的缺陷。请求伪造,顾名思义就是攻击者伪造正常的请求,以达到攻击的目的,是常见的Web 安全漏洞之一。如果“请求伪造”发生在服务器端,那么这个漏洞就叫做“服务器端请求伪造”,英文名字为Server-Side RequestForgery,简称SSRF。SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种攻击者发起的伪造由服务器端发起请求的一种攻击,也是常见Web 安全漏洞(缺陷或者风险)之一。

image

相关函数(php)

file_get_contenes()

fsockopen()

curl_exec()

fopen()

危害

端口扫描

内网Web 应用指纹识别

攻击内网Web 应用

读取本地文件

利用

常见利用协议

file://

dict://

gopher://

image

端口扫描

当访问未开放端口,脚本会显示空白或者报错。提交参数?url=dict://127.0.0.1:1234

提交参数?url=dict://127.0.0.1:3306

image

?url=http://127.0.0.1:3306

image

读取本地文件

?url=file://c:\windows\system32\drivers\etc\hosts

image

内网web应用指纹识别

识别内网应用使用的框架,平台,模块以及cms 可以为后续的渗透测试提供很多帮助。大多数web 应用框架都有一些独特的文件和目录。通过这些文件可以识别出应用的类型,甚至详细的版本。根据这些信息就可以针对性的搜集漏洞进行攻击。比如可以通过访问下列列文件来判断phpMyAdmin是否安装以及详细版本。

?url=http://localhost/phpmyadmin/README

配合redis实现写入webshell

挖掘

从远程服务器请求资源(头像允许使用远程地址)

转码服务

在线翻译

调用url的功能

利用bp抓包,产看数据包中存在的诸如url=www.xxx.com的位置

防御

限制协议

仅允许http和https请求。

限制IP

避免应用被用来获取内网数据,攻击内网。

限制端口

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

过滤返回信息

验证远程服务器对请求的响应是比较简单的方法。

统一错误信息

避免用户可以根据错误信息来判断远端服务器的端口状态

白名单限制

image