前言
哈喽,大家好,本篇主要分享网站漏洞思路,希望你看完有所收获。
一、登录框常见漏洞🎄
1、常规漏洞🍁
sql注入、万能密码
我们在用户名中输入 ‘or 1=1#,密码随意。就变成了select name.passwd from users where username= ‘’ or 1=1#’ and password=???。在SQL语法中 # 是注释符,所以后面的语句都会杯注释掉,那么上面的语句就等价于select name.passwd from users where username=’’ or 1=1。在or 连接中, username=’’ 和 1=1 中有一个为真就为真。所以1=1肯定为真。如果存在sql注入的漏洞,则可以直接登录进去。
url重定向
网站接受用户输入的链接,跳转到一个攻击者控制的网站,可能导致跳转过去的用户被黑客设置的钓鱼页面骗走自己的个人信息和登录口令。
未授权访问
未授权访问漏洞,是在攻击者没有获取到登录权限或未授权的情况下,不需要输入密码,即可通过输入网站控制台主页面地址或者不允许查看的连接便可进行访问,同时进行操作。
修改返回包
由于对登录的账号及口令校验存在逻辑缺陷,以再次使用服务器端返回的相关参数作为最终登录凭证,导致可绕过登录限制,如服务器返回一个参数作为登录是否成功的标准,由于代码最后登录是否成功是通过获取这个参数来作为最终的验证,所以。攻击者通过修改参数即可绕过登录的限制!
越权
登录框处同样存在越权:
-
平行越权:获得相同等级的其它用户的权限;
-
垂直越权:低权限用户获取高权限用户的权限,例如:用户权限获得管理员权限,或者超级管理员权限。
目录遍历、信息泄露
目录遍历漏洞是由于web中间件目录访问相关的配置错误造成的,该漏洞会泄露web应用程序的敏感路径、敏感的文件信息、网站的编辑器路径或测试接口、系统敏感目录等信息。
造成漏洞原因
程序在实现上没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
跨站脚本攻击
分三类:反射型、存储型、DOM型
利用:获取cookie,钓鱼
这里我就不细说了
2、用户相关🍁
明文传输、用户名遍历
在登录框BP抓包,发现用户名、密码是明文传输的,即客户端与服务器的数据传输未加密。
危害:攻击者可能通过劫持ARP欺骗、嗅探Sniffer、等手段截获敏感数据,若获取用户名和密码信息,可以进入到系统当中。
漏洞挖掘:
1、查看是否使用HTTPS协议
2、用户名、密码是否加密
任意用户注册
利用:在登录框处输入手机号,密码,验证码随便填,BP抓包,尝试验证码爆破
下图作用是可以抓到返回包并可修改返回值:
任意密码重置
任意账号密码重置的6种方法,这里深入讲一下:
- 短信验证码回传:通过手机找回密码,响应包中包含短信验证码。
修复建议:响应包中去掉短信验证码。
修改用户名、用户ID或手机号重置任意账号密码:
通过手机找回密码一般需要短信验证码验证。当我们输入正确的手机号和正确的短信验证码,然后进入重置密码的最后一步,也就是输入新的密码输入密码后提交到服务端的post数据包需要包含当前用户的身份信息。而一般网站是通过用户名或用户ID来标识用户身份的,如果这个用户名或用户ID没有和当前手机号、短信验证码进行绑定;也就是说服务端只验证用户名、ID是否存在,而不去验证用户和当前手机号是否匹配,那么我们就可以通过修改用户名、ID去修改其他用户的密码了。也可以修改的地方不限于找回密码的数据包,比如修改资料的地方也可能存在这样的漏洞。
修复建议:
用户操作个人信息时,服务端要对当前用户身份进行验证,防止越权操作;
用来标识用户身份的名称或ID可以使用自定义加密,也可以隐藏这些参数,直接从cookie中获取用户信息;
用户修改密码时应该先对旧密码进行验证,或者使用手机短信验证;
用户修改手机号时需要先对原手机号进行验证。
- 修改响应包重置任意账号密码:通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确。如果客户端收到true的信息,那么就会向带着true的信息向服务端请求进入下一步,而服务端收到true的信息,就会允许客户端进入下一步。反之,如果是false的信息,服务端就不会允许客户端进入下一步。所以我们进入下一步的关键是让服务端收到客户端的true信息。而通过Burpsuite,我们可以修改服务端返回到客户端的信息,这样一来,我们就可以输入任意短信验证码,然后将服务端返回的false信息改为true就可以绕过短信验证码的验证了。
修复建议:
服务端对验证码进行验证,结果为true时直接跳到下一步,无需向客户端单独返回验证结果;
输入新的密码,然后提交到服务端,服务端应对当前用户名、手机号、短信验证码进行二次匹配验证,都为true时,才可以修改成功。
- 跳过验证步骤重置任意账号密码:找回密码流程一般需要四个步骤:1、验证用户名;2、验证短信验证码;3、输入新密码;4、重置成功。
利用思路:第一步正常输入用户名,第二部输入任意验证码,直接访问输入新密码,重置密码。
原因:当我们输入新的密码后,提交到服务端,服务端并没有对当前用户身份进行二次验证,只是简单的获取到用户名或ID以及新密码,从而导致跳过短信验证码验证重置任意账号密码。
修复建议:
每一个步骤都要对前一个步骤进行验证;
最后提交新密码时应对当前用户名或ID、手机号、短信验证码进行二次匹配验证。
- 重置密码链接中token值未验证或不失效导致任意账号密码重置:使用邮箱重置密码时,服务端向邮箱发送一个重置密码的链接,链接中包含当前用户的身份信息和一个随机生成的token信息,如果未对token值进行验证或是验证后不失效,我们就可以通过修改用户名或用户ID来重置任意账号密码。
修复建议:
服务端对客户端提交的token值进行验证;
保证token值使用一次后即失效,防止重复使用;
对用户ID进行自定义加密;
使用根据用户ID生成的token值来标识用户,链接中不携带用户ID。
- 找回密码的短信验证码可被爆破导致任意账号密码重置:找回密码时使用位数较少的短信验证码,或者验证码没有设置有效时间限制,导致攻击者借助自动化工具(例如BP)进行爆破获得短信验证码,从而导致重置任意账号密码。
修复建议:
验证码满足一定复杂度,且限制验证码生效时间;
验证短信验证码的数据包使用token值并验证,防止自动化工具爆破
弱口令
短信相关漏洞
短信轰炸
短信炸弹是利用互联网第三方接口发送垃圾短信轰炸,只需输入手机号码就可以利用网络短信无限轰炸对方手机,具有恶意骚扰功能的软件。
短信验证码爆破
上面讲到过了,例如:用BurpSuite爆破。
验证码回显
思路:登录接收验证码时,BP抓包,可以看到验证码回显在返回包中。
万能验证码
类似于弱口令,程序员开发为了方便,设置比较简单,例如8888、0000等。
验证码失效、未与用户绑定
二、搜索框存在什么漏洞?🌲
-
SQL注入:SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行,从而导致数据库被增、删、改、查的危害。
-
xss漏洞
三、新增主题、添加用户处存在什么漏洞🌲
越权
sql注入
文件上传
未授权登录
csrf
四、导入、导出excel处存在什么漏洞🌲
任意文件读取、下载
任意文件上传漏洞
xxe
五、内容编辑处存在什么漏洞🌲
xss
sql注入
越权
文件上传
编辑器:fckeditor、ueditor
六、修改头像处🌲
文件上传:getshell、xss
越权
七、页面内容浏览处一般存在漏洞🌲
越权
sql注入
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
同时每个成长路线对应的板块都有配套的视频提供:
实战训练营
面试刷题
视频配套资料&国内外网安书籍、文档
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)