安全面试之WEB安全(一)

前言

作者简介:不知名白帽,网络安全学习者。

博客主页:https://blog.csdn.net/m0_63127854?type=blog

安全面试专栏:https://blog.csdn.net/m0_63127854/category_11869916.html

网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

目录

1.条件竞争漏洞原理与举例

2.如何验证存在XSS漏洞

3.如何验证存在任意文件下载的漏洞

4.Web短信重置密码可能存在哪几种绕过方式

5.XSS有哪几种类型

6.黑客可以通过XSS攻击做哪些事

7.XSS攻击如何进行防护

8.什么是CSRF攻击

9.CSRF攻击一般怎么实现

10.应该如何防范CSRF攻击


1.条件竞争漏洞原理与举例

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
举个例子,很多web程序都会有上传文件的功能,头像和图像等,服务器肯定会检查文件是否满足条件,不满足的要被删除。那么问题就在于,如果我们采用大量的并发请求,就传递一个生成恶意webshell的图像,访问它就可以生成webshell。
在上传完成和安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意shell的文件。
至此该文件的任务就已全部完成,至于后面发现它是一个不安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功地在服务器中植入了一个shell文件,后续的一切就都不是问题了。
参考链接1: https://blog.csdn.net/iamsongyu/article/details/83346260
参考链接2: https://seaii-blog.com/index.php/2017/04/26/49.html
参考链接3: https://www.cnblogs.com/0xJDchen/p/5988275.html

2.如何验证存在XSS漏洞

XSS漏洞的原理是:插入语句、改变结果、操纵数据
本质是:用户输入的html语句直接输出,包括了使用不正确的方法去验证挖掘XSS的第一步是找输入,也就是用户可以操控代码的位置;第二步是找输出,也就是找到第一步用户输入的代码在网页的何处地方进行了输出;第三步:构造payload,通过查看源代码,构建出payload。

如代码输出位置在<td>test</td>,即可构建出payload:test</td><svg/οnlοad=console. log(1)><td>, 最后输出结果为:<td>test</td><svg/οnlοad=console. log(1)><td></td>

3.如何验证存在任意文件下载的漏洞

一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
利用条件:存在读文件的函数;读取文件的路径用户可控且未校验或校验不严;输出了文件内容。
任意文件下载和任意文件读取有着相似的地方:就是都需要路径,例如index. php?f=file:///etc/passwd, index. php?f=./index. php
参考链接: https://www.cnblogs.com/zhaijiahui/p/8459661.html

4.Web短信重置密码可能存在哪几种绕过方式

1)短信验证码可爆破
2)短信验证码显示在获取验证码请求的回显甲
3)注册手机号及短信验证码未进行匹配性验证
4)用户名、手机号码、短信验证码三者没有进行匹配性验证
5)短信验证码的验证在本地客户端进行验证
6)重置步骤未进行校验
7)重置请求未验证身份
8)登录成功修改密码功能平行越权
9)未校验身份信息的唯一标识cookie信息
参考链接1: https://www.cnblogs.com/peterpan0707007/p/8721094.html
参考链接2: http://www.nxadmin.com/web/1642.html

5.XSS有哪几种类型

反射型XSS(也叫非持久型):恶意JavaScript脚本属于用户发送给网站请求中的一部分,随后网站又将这部分返回给用户,恶意脚本在页面中被执行。一般发生在前后端一体的应用中,服务端逻辑会改变最终的网页代码。

基于DOM的XSS:这种攻击不需要经过服务器,网页本身的JavaScript也是可以改变HTML的,黑客正是利用这一点来实现插入恶意脚本。

存储型XSS(也叫持久型XSS):黑客将恶意JavaScript脚本长期保存在服务端数据库中,用户一旦访问相关页面数据,恶意脚本就会被执行。常见于搜索、微博、社区贴吧评论等。

区别:反射型的XSS的恶意脚本存在URL里,存储型XSS的恶意代码存在数据库里。而基于DOM型的XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞,其他两种XSS都属于服务端的安全漏洞。

6.黑客可以通过XSS攻击做哪些事

盗取用户Cookie、未授权操作、修改DOM、刷浮窗广告、发动XSS蠕虫攻击劫持用户行为,进一步渗透内网。

7.XSS攻击如何进行防护

1)将HTML元素内容、属性以及URL请求参数、CSS值进行编码
2)当编码影响业务时,使用白名单规则进行检测和过滤
3)使用W3C提出的CSP(Content Security Policy,内容安全策略),定义域名白名单
4)设置cookie的HttpOnly属性

8.什么是CSRF攻击

CSRF英文全称是Cross-site request forgery,又称为“跨站请求伪造”,就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。
降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

9.CSRF攻击一般怎么实现

1)最容易实现的是Get请求,一般进入黑客网站后,可以通过设置img的src属性来自动发起请求
2)在黑客的网站中,构造隐藏表单来自动发起Post请求
3)通过引诱链接诱惑用户点击触发请求,利用a标签的href

10.应该如何防范CSRF攻击

1)针对实际情况,设置关键Cookie的SameSite属性为Strict或Lax
2)服务端验证请求来源站点(Referer、Origin)
3)使用CSRF Token,服务端随机生成返回给浏览器的Token,每一次请求都会携带不同的CSRF Token

4)加入二次验证(独立的支付密码)

猜你喜欢

转载自blog.csdn.net/m0_63127854/article/details/127490062