csrf与ssrf

csrf与ssrf
xiuCSRF(跨站请求伪造)
跨站请求伪造(Cross-site request forgery,CSRF),它强制终端用户在当前对其进行身份
验证后的Web应用程序上执行非本意的操作。CSRF攻击的着重点在伪造更改状态的请求,而不是盗取数据,因为攻击者无法查看对伪造请求的响应。
借助社工的一些帮助(例例如通过电子邮件或聊天发送链接),攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF攻击可以强制用户执行状态更改的请求,例如转移资金。如果受害者是管理帐户,CSRF可能会危及整个Web应用程序。
【
】SSRF(服务器端请求伪造)
互联网上的很多Web 应用提供了从其他服务器(也可以是本地)获取数据的功能。使用用户指定的URL,Web 应用可以获取图片、文件资源(下载或读取)。
用户可以从本地或者URL 的方式获取图片资源,交给百度识图处理。如果提交的是URL 地址,该应用就会通过URL 寻找图片资源。如果Web 应用开放了类似于百度识图这样的功能,并且对用户提供的URL和远端服务器返回的信息没有进行合适的验证或者过滤,就可能存在“请求伪造”的缺陷。请求伪造,顾名思义就是攻击者伪造正常的请求,以达到攻击的目的,是常见的Web 安全漏洞之一。如果“请求伪造”发生在服务器端,那么这个漏洞就叫做“服务器端请求伪造”,英文名字为Server-Side RequestForgery,简称SSRF。SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种攻击者发起的伪造由服务器端发起请求的一种攻击,也是常见Web 安全漏洞(缺陷或者风险)之一。
相关函数(php)
file_get_contenes()
fsockopen()
curl_exec()
fopen()
危害
端口扫描
内网Web 应用指纹识别
攻击内网Web 应用
读取本地文件
1 |
|
利用
常见利用协议
file://
dict://
gopher://
端口扫描
当访问未开放端口,脚本会显示空白或者报错。提交参数?url=dict://127.0.0.1:1234
提交参数?url=dict://127.0.0.1:3306
读取本地文件
?url=file://c:\windows\system32\drivers\etc\hosts
内网web应用指纹识别
识别内网应用使用的框架,平台,模块以及cms 可以为后续的渗透测试提供很多帮助。大多数web 应用框架都有一些独特的文件和目录。通过这些文件可以识别出应用的类型,甚至详细的版本。根据这些信息就可以针对性的搜集漏洞进行攻击。比如可以通过访问下列列文件来判断phpMyAdmin是否安装以及详细版本。
?url=http://localhost/phpmyadmin/README
配合redis实现写入webshell
./redis-cli -h 127.0.0.1 flushall
./redis-cli -h 127.0.0.1 config set dir /var/www/html
./redis-cli -h 127.0.0.1 config set dbfilename shell.php
./redis-cli -h 127.0.0.1 set webshell ““
./redis-cli -h 127.0.0.1 save
挖掘
从远程服务器请求资源(头像允许使用远程地址)
转码服务
在线翻译
调用url的功能
利用bp抓包,产看数据包中存在的诸如url=www.xxx.com的位置
防御
限制协议
仅允许http和https请求。
限制IP
避免应用被用来获取内网数据,攻击内网。
限制端口
限制请求的端口为http常用的端口,比如,80,443,8080,8090。
过滤返回信息
验证远程服务器对请求的响应是比较简单的方法。
统一错误信息
避免用户可以根据错误信息来判断远端服务器的端口状态