编程技术分享平台

网站首页 > 技术教程 正文

学习笔记-身份认证攻击漏洞,文件上传漏洞

xnh888 2024-09-10 22:58:26 技术教程 19 ℃ 0 评论

身份认证攻击漏洞

身份认证机制:

基于会话的验证

使用基于会话的身份验证(或会话cookie身份验证或基于 cookie 的身份验证),用户的状态存储在服务器上。它不需要用户在每个请求中都提供用户名或密码。相反,在登录后,服务器会验证凭据。如果有效,它会生成一个会话,将其存储在会话存储中,然后将会话ID发送回浏览器。

HTTP基本认证(HTTP Basic Auth)

HTTP 协议中内置的基本身份验证是最基本的身份验证形式。有了它,登录凭据会随 每个请求发送到请求标头中。这种认证在路由器、Tomcat、Apache Http、Nginx 等基础认证比较常见。

用户名和密码未加密。相反,用户名和密码使用一个: 符号连接在一起形成一个字符串:username:password。 然后使用 base64 对该字符串进行编码。

常见攻击方式:

弱口令爆破

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。

暴力破解本质上就是一种高速发包的攻击方式,可供选择的工具有:

1. 网络抓包工具Burp Suite中的Intrude模块

2. Python中的request库

重放攻击

重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

Web的Basic认证爆破:

Tomcat 认证爆破

Tomcat访问后台的控制台页面时需要进行Basic认证。Basic认证的特征就是在HTTP请求包中会携带 Authorization请求头,那么这个请求头中所包含的值就是用户名和密码经过Base64加密后的值。

防御方法:

1. 从攻击视角来看,弱口令还是最大隐患。其次,社工库可能会存在撞库的风险。那么可以实现密码的生命周期、密码字符串复杂度等从而避免根本问题。

2. 从认证方式上来看,选择OAuth、SSO方式,可避免大部分攻击。

3. 另外还存在验证码重放攻击,通过代码逻辑、程序时序修复漏洞,即可。

4. 同时还可以,设置登入密码错误策略问题。五次自动锁账号,向管理员预警等操作。

概念解释:

OAUTH

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。

SSO

单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的。

文件上传漏洞

简介:

大部分站点都具有文件上传功能,例如头像更改,文章编辑,附件上传等等。文件上传漏洞就是利用文件上传功能去上传可执行的脚本文件,并通过此脚本文件获得一定的服务器权限。

webshell

最常见利用文件上传漏洞的方法就是上传网站木马(webshell)文件,WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马、JSP木马等,该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能,一旦上传到服务器被脚本引擎解析,攻击者就可以实现对服务器的控制。

一句话木马

功能:功能简单,需要配合客户端使用

大小:代码量通常在一行左右,不超过10行

隐蔽性:强,容易通过变形隐藏特征,绕过过滤

PHP:<?php eval($_POST['x']);?>

漏洞利用前提

1、上传的文件能够被 Web 容器解释执行。所以文件上传后所在的目录要是Web 容器所覆盖到的路径。

2、用户能够从 Web 上访问这个文件。如果文件上传了,但用户无法通过Web 访问,或者无法使得 Web容器解释这个脚本,那么也不能称之为漏洞。

3、用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。

文件上传漏洞绕过技巧:

JavaScript验证绕过

直接发送请求包

通过Burp抓到正常上传的请求报文后,修改报文的内容,在直接通过Burp发送,便跳过了网页中JS的验证过程。

修改JavaScript

去修改其中关键的检测函数,或者直接通过noscript插件禁用JavaScript。

服务端MIME类型验证绕过,MIME类型是描述消息内容类型的因特网标准

MIMIE验证常见绕过方式:

利用Burp抓包,将报文中的Content-Type改成允许的类型

Content-Type: image/gif

Content-Type: image/jpg

Content-Type: image/png

服务端文件扩展名验证-黑名单

后缀名改变大小写,例如pHp

以下文件同样会被解析

php | php3| php5| php7| phtml| pht

目标中间件开启了对此文件的解析条件:httpd.conf AddType application/x-httpd-php .php .phtml .php3 .php5

服务端文件扩展名验证—双写后缀

部分网站对于后缀的检测只是将黑名单中的内容替换成空字符。 例如php中可能使用str_replace()进行字符串替换。所以我们可以使用双写后缀的方式进行绕过

服务器文件内容验证-文件头

图片格式往往不是根据文件后缀名去做判断的。

文件头是文件开头的一段二进 制,不同的图片类型,文件头是不同的。文件头又称文件幻数。

常见文件幻数

JPG:FF D8 FF E0 00 10 4A 46 49 46

GIF:47 49 46 38 39 61 (GIF89a)

PNG:89 50 4E 47

文件头检查只对文件头进行基本的校验,我们可以直接在上传的木马前面加上图片的文件头进行伪造绕过,例如在木马前面直接加上GIF89a。

文件上传漏洞常规防御手段:

1) 、对上传的文件在服务器上存储时进行重命名。

2) 、检查上传文件的类型和大小,如果业务运行的情况下可以进行内容的检查。

3)、禁止上传危险的文件类型,如jsp jar war等。

4) 、白名单校验。

5)、使用Web应用防火墙(WAF)。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表