Csrf,状态码,端口

1.

2.CSRF原理

程序员开发的时候,未对相关页面进行token和REFERER判断,造成攻击者可构造自己的URL地址欺骗目标用户进行点击,一个是没有对token和REFERER这俩个函数过滤,还有就是后台的管理员必须建立在会话连接的情况下才能攻击 。

CSRF漏洞的影响?  在成功执行的 CSRF 攻击中,攻击者会利用该漏洞导致受害用户无意中执行操作。例如,更改其帐户上的电子邮件地址、更改其密码或进行资金转移。根据操作的性质,攻击者可能完全控制用户的帐户。如果受害用户在应用程序中拥有特权角色,则攻击者可能能够完全控制应用程序的所有数据和功能。

如果要成功实施 CSRF 攻击,必须具备三个关键条件:

一个有意义操作。 应用程序中有攻击者想实施诱导的操作。这可能是特权操作(例如修改其他用户的权限)或对用户特定数据的任何操作(例如更改用户自己的密码)。

基于 Cookie 的会话处理。 执行该操作涉及发出一个或多个 HTTP 请求,应用程序仅依赖会话 cookie 来识别发出请求的用户。没有其他机制来跟踪会话或验证用户请求。

没有不可预测的请求参数。 执行操作的请求中没有任何攻击者无法确定或猜测出的参数值。例如,当诱使致用户更改密码时,如果需要攻击者知道当前密码,该功能就不会受到攻击。

如何构建CSRF攻击?

手动创建 CSRF 漏洞利用所需的 HTML 可能很麻烦,尤其是在所需请求包含大量参数或请求中有其他内容的情况下。构建 CSRF 漏洞的最简单方法是使用 Burp Suite Professional 内置的 CSRF PoC 生成器

Burp Suite 会生成一些 HTML 来触发选定的请求(减去 cookie,受害者的浏览器会自动添加这些 cookie)。

可以调整 CSRF PoC 生成器中的各种选项来微调攻击的各个方面。您可能需要在一些不寻常的情况下执行此操作以处理请求的奇怪功能。

将生成的 HTML 复制到网页中,在已登录目标网站的浏览器中打开,并测试预期的请求是否成功发出以及预期的操作是否发生。

防御 CSRF 攻击的最强大方法是在相关请求中添加 CSRF 令牌

不可预测的高随机性,像一般的会话令牌一样

跟用户会话绑定

在执行相关操作之前,在每种情况下都经过严格验证

注:XSSCSRF的不同

跨站点脚本(或 XSS)允许攻击者在受害用户的浏览器中执行任意 JavaScript

跨站点请求伪造(或 CSRF)允许攻击者诱使受害用户执行他们不打算执行的操作

XSS 漏洞的后果一般比 CSRF 漏洞更严重

CSRF 通常仅适用于用户能够执行的操作的子集。许多应用程序通常会采取 CSRF 防御,但可能忽略了一两个暴露的操作。相反,成功的 XSS 攻击通常可以诱使用户执行用户能够执行的任何操作,而不管漏洞出现的功能。

CSRF 可以被描述为“单向”漏洞,因为攻击者可以诱使受害者发出 HTTP 请求,但他们无法从该请求中获得响应。相反,XSS 是“双向”的,因为攻击者注入的脚本可以发出任意请求、读取响应并将数据泄露到攻击者选择的外部域。

什么是CSRF tokens?

CSRF 令牌是唯一的、秘密的、不可预测的值,它由服务器端应用程序生成并传输到客户端,使其包含在客户端后续发出的 HTTP 请求中。发出后一个请求时,服务器端应用程序会验证该请求是否包含预期的令牌,如果令牌丢失或无效,则拒绝该请求。

 CSRF 令牌可以让攻击者无法构建适合给受害用户点击的有效 HTTP 请求,从而防止 CSRF 攻击。由于攻击者无法确定或预测用户的 CSRF 令牌的值,因此他们无法构建请求所需的参数。

3.http状态码当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

常用的http状态码有

200 - 请求成功

301 - 资源(网页等)被永久转移到其它URL

401-请求要求用户的身份认证

403-服务器理解请求客户端的请求,但是拒绝执行此请求

404 - 请求的资源(网页等)不存在

408-服务器等待客户端发送的请求时间过长,超时

500-内部服务器错误

4常用端口

FTP 20 FTP服务器真正传输所用的端口,用于上传、下载
FTP 21 用于FTP的登陆认证
SSH、SFTP 、 22 加密的远程登录,文件传输
、Telnet 23 远程登录(在本地主机上使用此端口与远程服务器的22/3389端口连接)
SMTP 25 用于发送邮件
HTTP 80 用于网页浏览
POP3 110 SUN公司的RPC服务所有端口
Network News Transfer Protocol 119 NEWS新闻组传输协议,承载USENET通信
SMTP 161 Simple Network Management Protocol,简单网络管理协议
SNMP Trap 162 SNMP陷阱
HTTPS 443 加密的网页浏览端口
CIFS 445 公共Internet文件系统
sql server 1433 Microsoft的SQL服务开放的端口 数据库
Oracle 1521 数据库NFS 2049 通过网络,让不同的机器、不同的操作系统实现文件共享
MySQL 3306 数据库
WIN2003远程登录 3389 Windows 2000(2003) Server远程桌面的服务端口,本地服务器开放此端口,去连接到远程的服务器
QQ· 4000 腾讯QQ客户端开放此端口
WebLogic 7001 一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器
Wingate 8010 Wingate代理开放此端口
TOMCAT8080 WWW代理开放此端口

5.SSRF(Server-side Request Forge )服务器端请求伪造, 由于服务端提供了从其他服务器应⽤获取数据的功能,但没有对地址和协议等做过滤和限制。使得攻击者可以利⽤存在缺陷的web应⽤作为代理,攻击其远程和本地的服务器。

漏洞产生相关函数

file_get_contents()
fsockopen()
curl_exec()
fopen()
readfile()

要怎么发现哪里存在SSRF,发现了又怎么利用?

能够对外发起网络请求的地方,就可能存在SSRF漏洞

社交分享功能:获取超链接的标题等内容进行显示
转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
在线翻译:给网址翻译对应网页的内容
图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载
图片图片/文章收藏功能:主要网站会取URL地址中title以及文本的内容作为显示以求一个好的用户体验
云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行SSRF测试
网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
数据库内置功能:数据库的比如mongodb的copyDatabase函数
邮件系统:比如接收邮件服务器地址
编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞,一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……
从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)

漏洞验证

1.排除法:浏览器f12查看源代码看是否是在本地进行了请求

2.dnslog等工具进行测试,看是否被访问

可以在盲打后台用例中将当前准备请求的uri 和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求。

3.抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找存在HTTP服务的内网地址

从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址

通过二级域名暴力猜解工具模糊猜测内网地址

4.直接返回的Banner、title、content等信息

5.留意bool型SSRF

利用方式

让服务端去访问相应的网址
让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
攻击内网应用程序(利用跨协议通信技术)
判断内网主机是否存活:方法是访问看是否有端口开放
DoS攻击(请求大文件,始终保持连接keep-alive always)

SSRF漏洞利用的相关协议

file:在有回显的情况下,利用 file 协议可以读取任意内容
dict:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher:gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
http/s:探测内网主机存活

漏洞防御

1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

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

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

4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值