常见的安全测试漏洞_常见的漏洞检测(2)

(5)拦截请求的每一个参数,并将这个参数的非法字符转化,下面的为提交的参数中没有附件的,实现方式。首先在 web.xml 配置文件中添加这个类的 filter,继承类 HttpServletRequestWrapper,如图

在这里插入图片描述

(6)拦截请求的每一个参数,并将这个参数的非法字符转化,下面的为提交的参数中 有含附件的,实现方式。在 xml 中配置上传的时候,配置这个类.继承类 CommonsMultipartResolver 如图

在这里插入图片描述

(7)使用服务器安全狗,安装好网页安全狗和服务器安全狗,可以有效的避免 sql 被注入入侵的风险,如果有更高级的需求还可以联系安全狗可以提供更为强大的云安全服务,帮助用户抵御外来入侵。

二、CSRF跨站伪造请求

CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在用户毫不知情的情况下以用户自身的名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作。具体来讲,可以这样理解 CSRF 攻击:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的。

图片

CSRF攻击攻击原理及过程如下:

1.用户 C 打开浏览器,访问受信任网站 A,输入用户名和密码请求登录网站 A;

2.在用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器,此时用户登录网站 A 成功,可以正常发送请求到网站 A;

3.用户未退出网站 A 之前,在同一浏览器中,打开一个 TAB 页访问网站 B;

4.网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点 A;

5.浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携带 Cookie 信息,向网站 A 发出请求。网站 A 并不知道该请求其实是由 B 发起的,所以会根据用户 C 的 Cookie 信息以 C 的权限处理该请求,导致来自网站 B 的恶意代码被执行。

测试方法

同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功;

使用工具发送请求,在 http 请求头中不加入 referer 字段,检验返回消息的应答。

防御 CSRF 攻击

比如请求的 Referer 是指向黑客自己的网站 B 而不是网站 A。因此,要防御 CSRF 攻击,网站 A 只需要对于每一个请求验证其 Referer 值,如果是 A 网站的域名,则说明该请求是来自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。

Referer 的值是由浏览器提供的,并不能保证浏览器自身没有安全漏洞。对于某些浏览器,目前已经有一些方法可以篡改 Referer 值,黑客完全可以修改 Referer 值,这样就可以通过验证,从而进行 CSRF 攻击。可在请求中添加 token 并验证。

三、XSS跨站脚本攻击

由于 web 程序对用户的输入过滤不足,导致用户输入的恶意 HTML/Javascript 代码注入到网页中,混淆原有语义,产生新的恶意语句。在其他用户访问网页时,浏览器就会触发恶意的网页代码,从而达到 XSS 攻击的目的。

XSS(Cross Site Script),与 SQL 注入相似,XSS 是通过网页插入恶意脚本,主要用到的技术也是前端的 HTML 和 JavaScript 脚本。当用户浏览网页时,实现控制用户浏览器行为的攻击方式。一次成功的 XSS,可以获取到用户的 cookie,利用该 cookie 盗取用户对该网站的操作权限;也可以获取到用户联系人列表,利用被攻击者的身份向特定的目标群发送大量的垃圾信息,等等。

XSS 分为三类:存储型 (持久性 XSS)、反射型 (非持久性 XSS)、DOM 型。所造成的影响主要是窃取用户登录凭证(Cookies)、挂马攻击、页面访问挟持等。

1.持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。

攻击者把恶意脚本注入服务器并存储起来,等待受害者请求此脚本并在浏览器中自动运行。
使用场景:攻击者在评论区提交带有恶意脚本的评论,如果服务器检查不出恶意脚本,那么此恶意评论会被存入服务器数据库,下一个用户访问时,评论会被自动获取并展示,其中恶意脚本也被自动运行了。

在这里插入图片描述

2.非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器 - 跨站链接 - 返回跨站代码。

通过用户点击恶意链接,获取用户已登录的会话 cookie(黑客在留言板中插入恶意代码
受害者访问被植入恶意代码的页面,恶意代码将 cookie 发送给黑客的服务器,一般使用 xss 平台生成 payload,受害者执行之后 cookie 会被发送到 xss 平台)

在这里插入图片描述

3.DOM 跨站(DOM XSS):DOM(document object model 文档对象模型),客户端脚本处理逻辑导致的安全问题,在用户浏览的页面中直接注入代码。

实例:HTML 中有个锚的功能,也就是通过 #id 来实现当页面的跳转。

在这里插入图片描述

(1)测试方法

a.在数据输入界面,输入:alert(/123/),保存成功后如果弹出对话框,表明此处存在一个 XSS 漏洞。(或输入框中输入)

b.或把 url 请求中参数改为 alert(/123/),如果页面弹出对话框,表明此处存在一个 XSS 漏洞。(或 url 请求参数中值改为)

(2)怎么防止 XSS 攻击?

XSS 来源于用户提供的内容,只要过滤掉其中的恶意代码即可,Node.js 项目中推荐使用 xss 库来完成这个工作

在这里插入图片描述

四、URL跳转漏洞

URL 跳转漏洞,即未经验证的重定向漏洞,是指 Web 程序直接跳转到参数中的 URL,或者在页面中引入了任意开发者的 URL,将程序引导到不安全的第三方区域,从而导致安全问题。

图片

1.测试方法

(1)使用抓包工具抓取请求。

(2)抓取 302 的 url,修改目标地址,查看是否能跳转。

图片

ps:不过现在很多跳转都加了 referer 的校验导致攻击者跳转失败

2.绕过URL跳转限制

(1)利用?号绕过限制

比如:http://www.aaa.com/acb?Url=http://login.aaa.com
这是一个跳转链接,跳转到它的二级域名下,那么这个问号放哪里可以绕过呢?其实就是放到它自身的域名前面也就是你添加的想要跳转的域名的后面,如:http://www.aaa.com/acb?Url=http://test.com?login.aaa.com 。它其实是会跳转到这个 test.com 域名下,这个域名是我想要跳转的任意域名,而后面的它自身域名一定要带上,不带上就无法辅助用问号?这个特性来跳转到指定域名了,而跳转后,问号和问号后面的内容会变为这样:http://www.test.com/?login.aaa.com

(2)利用反斜杠和正斜杠绕过限制

比如:http://www.aaa.com/acb?Url=http://login.aaa.com/ 同样是在它本身域名钱加上正斜杠,然后正斜杠前面跟上你想跳转的域名地址
如:http://www.aaa.com/acb?Url=http://test.com/login.aaa.com

反斜杠有三种思路:

两个反斜杠绕过方法

比如:http://www.aaa.com/acb?Url=http://login.aaa.com/ 同样是在它本身域名前加上两个反斜杠,然后两个反斜杠前面跟上你想跳转的域名地址
如:http://www.aaa.com/acb?Url=http://test.comlogin.aaa.com\

一个反斜杠绕过方法

如:http://www.aaa.com/acb?Url=http://test.comlogin.aaa.com\

另一种思路,一个反斜杠一个点

利用.这样的格式,也就是一个反斜杠加一个点来跳过限制,

如:http://www.aaa.com/acb?Url=http://test.com.login.aaa.com\

(3)利用@绕过URL 限制

如果你用这方法在火狐里进行跳转,会有弹窗提示,在其它游览器则没有。

如:http://www.aaa.com/acb?Url=http//login.aaa.com@test.com 后面的 test.com 就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的:

(4)利用 # 号绕过

如:http://www.aaa.com/acb?Url=http://test.com#login.aaa.com

(5)利用白名单缺陷绕过

有的域名白名单限制是不全的,比如如果想利用一个跳转,而这个跳转是通用,在这个公司网站很多子域名等都可以跳转,那么你买个域名也不算贵对吧,为什么这么说呢,这个问题就是白名单限制不当,比如,当跳转的域名包含这个网站下的所有域名,比如:
http://www.aaa.com/acb?Url=http://login.aaa.comlogin.aaa.com 也可以改成 aaa.com 同样可以跳转对吧,因为白名单里只要有包含这个域名就直接成功跳转。那么当我在这个域名前面加上如 testaaa.com,白名单里会检查是否包含 aaa.com 这个域名,包含,然后直接跳转,而并没有检查这个域名的整个信息,然后可以利用这个问题,直接注册一个 testaaa.com 这个域名就可以利用这个跳转。

3.预防或修复漏洞方法

(1)若跳转的 URL 事先是可以确定的,包括 url 和参数的值,则可以在后台先配置好,url 参数只需传对应 url 的索引即可,通过索引找到对应具体 url 再进行跳转;

(2)若跳转的 URL 事先不确定,但其输入是由后台生成的(不是用户通过参数传入),则可以先生成好跳转链接然后进行签名,而跳转 cg 首先需要进行验证签名通过才能进行跳转;注:“签名 (sign):就是在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。签署者对该软件的安全性负责;

(3)若 1 和 2 都不满足,url 事先无法确定,只能通过前端参数传入,则必须在跳转的时候对 url 进行按规则校验:即控制 url 是否是你们公司授权的白名单或者是符合你们公司规则的 url:

(4)XSS 漏洞的注意事项 :跳转 url 检测中也加入了 CRLF 头部注入漏洞的检测逻辑, 具体就是在请求参数中加入了%0d%0a 这种测试代码,需要对这些参数进行删除处理 (事实上:在判断到一个参数中包含 %00 -> %1f 的控制字符时都是不合法的,需对其进行删除)。

(5)开源项目及时进行升级,如 Django 升级 pip install django --upgrade 比如中华 GIS 对 nacos、Log4j2、nginx 等进行升级,应中华要求对存在漏洞的服务进行升级。

五、任意文件上传

文件上传漏洞是 web 安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell 等到服务器执行,并最终获得网站控制权限的高危漏洞。

文件上传漏洞危害:上传漏洞与 SQL 注入或 XSS 相比 , 其风险更大 , 如果 Web 应用程序存在上传漏洞 , 攻击者上传的文件是 Web 脚本语言,服务器的 Web 容器解释并执行了用户上传的脚本,导致代码执行。如果上传的文件是 Flash 的策略文件 crossdomain.xml,黑客用以控制 Flash 在该域下的行为。如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个 webshell 到服务器上 完全控制系统或致使系统瘫痪。

1.常见的防护方法

网站常见的防护方法,知道了网站是如何防护该漏洞的,有利于我们更好地开展渗透测试。

对文件上传的防护大体上可以分为两类,一类是客户端检测,另一类是服务端检测。

(1)客户端检测

客户端检测是指依靠浏览器,用 JS 代码去检测。一般是在网页上写一段 Js 脚本,用 Js 去检测,在文件未上传时,校验文件的后缀名,检测的方式有白名单和黑名单两种。
那么如何判断是否为客户端检测?

在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png 后缀名的文件,而此时并没有发送数据包,所以可以通过抓包来判断,如果弹出不准上传,但是没有抓到数据包,那么就是采用了前端验证。

从安全的角度来看,前端验证非常不可靠,上传正常文件再改数据包就可以绕过,甚至关闭 JS 都可以尝试绕过。很多程序员使用 JavaScript 来拒绝非法文件的上传,这种验证方式对一些普通用户防止上传错误还可以,但是对专业的技术人员来说,这是非常低级的验证方式。攻击者可以用非常多的方法来突破客户端的验证。

由于前端代码对用户完全开放,因此很容易通过分析前端代码来绕过,所以相当于没有检测。可以用以下三种方式去绕过或者删除前端的检测:

用 burp 抓个返回包然后把前端代码里面文件检测的部分代码删掉 (这种方式也叫中间人攻击);

点检查,然后找到文件检测部分的 JS 代码,删掉即可,(但是最保险的办法还是抓包后再去删);

根据前端代码允许上传的类型,预先把木马文件后缀改成相应的后缀,比如 jpg,通过前端代码的检测以后,会自动往服务器发包,然后通过 burp 去拦截这个包,把后缀名改回来。

(2)服务端检测

服务端检测是先将文件上传到服务器,然后服务器依靠后端代码去检测上传的文件是否合规。服务器脚本一般会检测文件的 MIME 类型(文件的媒体类型)、扩展名是否合法,甚至可能会去检测文件中是否嵌入恶意代码。

服务端检测几个常见的手段有:检查 Content-Type(内容类型)、检查后缀 (检查后缀是主流,根据后缀来决定用什么方式来处理这个文件)、检查文件头等。

(3)白名单和黑名单的区别

黑名单:不允许某某类型的文件上传;

白名单:只允许某某类型的文件上传。

显然白名单的方式比黑名单更安全,黑名单很容易就会被绕过。

那么如何判断目标是黑名单还是白名单呢,其实很简单,只要上传一个莫名其妙的后缀,比如 1.czczxca,这个后缀的文件肯定不存在,所以如果能上传成功,说明目标是黑名单检测,如果上传失败,则目标是白名单检测。

2.文件上传漏洞绕过技巧

一般来说文件上传过程中检测部分由客户端 javascript 检测、服务端 Content-Type 类型检测、服务端 path 参数检测、服务端文件扩展名检测、服务端内容检测组成。但这些检测并不完善,且都有绕过方法。

客户端检测绕过(js 检测):

利用 firebug 禁用 js 或使用 burp 代理工具可轻易突破。

如果只对.jpg 后缀设置了白名单,我们可以先把后缀改为.jpg 绕过,再到 Burp Suite 抓包把后缀改回.php

➢服务端 MIME 检测绕过(Content-Type 检测):

使用 burpsuit 代理,修改 Content-Type 的参数

对于只允许指定 Content-Type(内容类型)这种防护手段,最简单的绕过方法是直接上传一个允许的文件类型再抓包修改后缀名。以上传 jpg 文件为例,先上传该文件,抓包修改后缀名为实际的后缀名.php,由于上传的时候是 jpg,所以浏览器发送的数据包中,Content-Type 的类型默认为 jpg,那么此时发送的文件就可以绕过后端的检测。

➢服务端扩展名检测绕过:

文件名大小写绕过,例如 Php,AsP 等类似的文件名

对于那种老版本的 WEB 容器,是区分大小写的,所以这种方法只对 WEB 容器非常古老的版本有效。原理很简单,在解析的时候,windows 的文件和文件夹都是不区分大小写的,而 WEB 容器区分大小写,因此上传的时候就有可能绕过该 WEB 容器,从而实现绕过后缀名检测。

后缀名字双写嵌套,例如 pphphp,asaspp 等

来看一段源代码:

f

i

l

e

n

a

m

e

=

s

t

r

i

r

e

p

l

a

c

e

(

file_name = str_ireplace(

filen​ame=stri​replace(deny_ext,“”, $file_name);

这里的意思就是把检测到的危险字符替换为空,php 被替换为空,那么假设上传的文件后缀名为 pphphp,被替换为空后就会变为 php,从而实现了绕过。

可以利用系统会对一些特殊文件名做默认修改的系统特性绕过

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-iEX9D7jb-1712903312625)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值