会员登录模块有哪些bug
、注入点及万能密码登录
2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误
3、查看登录页面源代码,看是否存在敏感信息泄露
4、不安全的验证码
5、在注册账号的时候,是否存在不安全的提示
6、不安全的密码,在注册账号的时候密码没有限制复杂度
7、任意无限注册账号
8、在暴力破解的时候不会限制ip,锁定用户
9、一个账号可以在多地登录,没有安全提示
10、账户登录之后,没有具备超时功能
11、OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码
12、逻辑漏洞,任意更改密码
13、越权漏洞,纵向、横向越权
14、数据包脊激坦含有风险信息泄露,比如COOKIE
15、不安全的数字传输,密码为明文,未使用https证书
16、任意文件下载
登陆页面渗透测试常见的几种思路与总结
我们在进行渗透测试的时候,常常会遇到许多网站站点,而有的网站仅仅是基于一个登陆接口进行处理的。尤其是在内网环境的渗透测试中,客户常常丢给你一个登陆网站页面,没有测试账号,让你自己进行渗透测试,一开始经验铅腔不足的话,可能会无从下手。今天就来简单说一下如何在只有一个登陆页面的情况下,来进行渗透测试。
1、在条件允许的情况下,我们可以拿在渗透测试的开始之前拿出我们的扫描器来进行扫描,目前我们最常用的就是AWVS和Nessus,除此之外,我们还可以使用一些别的自动化测试工具,例如Nikto扫描器,Appscan,W3af,以及最近长亭科技的Xray扫描器,都可以试试。尤其是Xray扫描器,据说有许多小伙伴靠它挖到了许多漏洞。
2、SQL注入
万能密码绕过
如果我们能够直接绕过登录,来直接访问系统内部资源,那自然是最好不过的了。万能密码就是其中一最好用的一种,虽然存在的可能性不大,但是偶尔也是存在的,稍微尝试一下也不会浪费太多时间。
例如admin'or 1=1 --
"or "a"="a
万能密码在网上非常多,随便搜一下就有
例如这样,就能直接访问后台
3、登录口SQL注入
有的系统在登录口就存在SQL注入,目前我遇到过比较多的是Oracle以及MySQL的登录口注入,我们可以在登录处先抓一个包,然后根据抓包信息来构造Payload。值得一提的是,有时候我们需要在Burp里修改一下发包格式(change body encoding),才能成功注入。
4、明文传输/用户名可枚举/爆破弱口令
明文传输
可能是我们做渗透测试中,最常见的一种漏洞,实际上它并不能算得上是一种漏洞,仅仅只能说是一种不足之处而已,明文传输在网站上随处可见,除了银行网站,很有可能每一个密码都是经过特殊加密然后再进行传输的。
用户名可枚举
此漏洞存在主要是因为页面对所输入的账号密码进行的判断所回显的数据不一样,我们可以通过这点来进行用户名的枚举,然后通过枚举后的账户名来进行弱口令的爆破。防御手段的话仅需要将用户名与密码出错的回显变成一样即可,例如用户名或密码出错。
爆破弱口令
弱口令可以说是渗透测试中,最最常见,也是危害“最大”的一种漏洞,因为毫无技术性,毫无新意,但是却充满了“破坏性”,尤其是在内网环境中,弱口令更是无处不在。Web页面最常用的爆破工具为Burp,我们通常使用Nmap扫描也可能扫出其他端口存在,例如3389,SSH等。
5、扫描
目录扫描
JS扫描
JS文件我们在渗透测试中也是经常用到的东西,有时候我们可以在JS文件中找到我们平时看不到的东西,例如重置密码的JS,发送短信的JS,都是有可能未授权可访问的。
nmap扫描
Nmap的强大功能能让我们第一时间获取网站的端口信息,而这些端口信息中常常可以给予我们非常大的帮助,例如开放了3389端口,或者一些敏感端口的探测,Nmap的使用方法相比不需要我再多说,每个安全工程师都必须要精通的一种工具,以下是我的一些端口小总结,希望可以给与大家一点儿帮助。
注册页面
注册页面批量注册
注册覆盖(重复注册樱桐他人账号)
短信邮件炸弹
手机验证码是否可爆破(老生常谈,Burpsuite抓包爆破四位验证码)
图片验证码是否可绕过(验证码缺失、验证码失效数据包重放、万能验证码0000、验证码空绕过、验证码前端获取(极少数情况))
登录页面
弱密码、无验证码爆破、万能密码(后台登录,用户登录次数限制)
手机验证码登录是否可以进行短信炸弹
url跳转漏洞(主要用来钓鱼,对于绕过和利用百度搜索已有大量文章,不赘述)
登录处是否可绕过(对于大多数没有cookie的网站)
用户名枚举(观察返回包提示或者返回包参数变化)
忘记密码
手机验证码是否可爆破
修改密码流程是否可跳过
任意用户密码重置
短信邮件炸弹
一个“登录框“引发的安全问题_zhangge3663的博客-CSDN博客_登录安全问题前言搞安全的小伙伴只有一个登录框你都能测试哪些漏洞?通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给你登录账号的。这个时候,考研你基础知识是否扎实的时刻来临了。用户名枚举漏洞描述:存在于系统登录页面,利用登录时输入系统存在的用户名错误密码和不存在的用户名错误密码,返回不同的出错信息可枚举出系统中存在的账号信息。测试方法:找到网站或者web系统登
登陆页面渗透测试常见的几种思路与总结! - linuxsec - 博客园
业务逻辑漏洞--注册-登录-改密码页面总结 - 求知鱼 - 博客园
登录界面-渗透测试 - 超人还可以飞 - 博客园由图展开思路: 登陆页面的渗透测试 首先 在进入登陆界面时,一般都是先用万能密码什么的测下输入框有没有注入(现在很少见了)。如果没有,那就先拿admin,123456什么的测试下弱口令,不求
登录页面渗透测试思路总结_gududeajun的博客-CSDN博客_登录页面渗透测试登录页面可能产生哪些漏洞呢?1、注入点及万能密码登录2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误3、查看登录页面源代码,看是否存在敏感信息泄露4、不安全的验证码5、在注册账号的时候,是否存在不安全的提示6、不安全的密码,在注册账号的时候密码没有限制复杂度7、任意无限注册账号8、在暴力破解的时候不会限制ip,锁定用户9、一个账号可以在多地登录,没有安全提示10、账户登录之后,没有具备超时功能11、OA,邮件,默认账号等相关系统
一个完整的渗透测试流程,分为那几块,每一块有哪些内容
包含以下几个流程:
信息收集
第一步做的就是信息收集,根据网站URL可以查出一系列关于该网站的信息。通过URL我们可以查到该网站的IP、该网站操作系统、脚本语言、在该服务器上是否还有其他网站等等一些列的信息。
漏洞探测
当我们收集到了足够多的信息之后,我们就要开始对网站进行漏洞探测了。探测网站是否存在一些常见的Web漏洞,比如:SQL注入 。
漏洞利用
探测到了该网站存在漏洞之后,就要对该漏洞进行利用腔清了。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的webshell,我们往往需要结合几个漏洞来拿webshell。
内网渗透
当我们能跟内网主机进行通信后,我们就要开始进行内网渗透了。可以先使用nmap对内网主机进行扫描,探测在线的主机,并且探测其使用的操乱圆亮作系统、开放的端口等信息。
内网中也有可能存在供内网使用的内网服务器,可以进一步渗透拿下其权限。
痕迹清除
达到了目的之后,有时候只是为了黑入网站挂黑页,炫耀一下;或者在网站留下一个后门,作为肉鸡,没事的时候上去溜达溜达;亦或者挂入挖矿木马。
撰写渗透测试保告
在完成了渗透测试之后,就需要对这次渗透测试撰写渗透测试报告了。明确的写出哪里存在漏洞,以及漏洞修补的方法哗宽。以便于网站管理员根据我们的渗透测试报告修补这些漏洞和风险,防止被黑客攻击。
什么是渗透测试?如何做渗透测试?
渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。
渗透测试一定要遵循软件测试基本流程,要知道测试过程和目标特殊,在具体实施步骤上主要包含以下几步:
1、明确目标
当测试人员拿到需要做渗透测试的项目时,首先确定测试需求,如测试是针对业务逻辑漏洞,还是针对人员管理权限漏洞等;然后确定客户要求渗透测试的范围,如ip段、域名、整站渗透或者部分模块渗透等;最后确定渗透测试规则,如能够渗透到什么程度,是确定漏洞为止还是继续利用漏洞进行更进一步的测试,是否允许破坏数据、是否能够提升权限等。
2、收集信息
在信息收集阶段要尽量收集关于项目软件的各种信息。比如:对于一个Web应用程序,要收集脚本类型、服务器类型、数据库类型以及项目所用到的框架、开源软件等。信息收集对于渗透测试来说非常重要,只要掌握目标程序足够多的信息,才能更好地进行漏洞检测。
信息收集的方式可分为以下2种:主动收集、被动收集。
3、扫描漏洞
在这个阶段,综合分析收集到的信息,借助扫描工具对目标程序进行扫描,查找存在的安全漏洞。
4、验证漏洞
在扫描漏洞阶段,测试人员会得到很多关于目标程序的安全漏洞,但这些漏洞有误报,需要测试人员结合实际情况,搭建模拟测试环境对这些安全漏洞进行验亮宽证。被确认的安全漏洞才能被利用执行攻击。
5、分析信息
经过验证的安全漏洞就可以被利用起来向目标程序发起攻击,但是不同的安全漏洞,攻击机制不同,针对不同的安全漏洞需敬枝亮要进一步分析,制定一个详细的攻击计划,这样才能保证测试顺利执行。
6、渗透攻击
渗透攻击实际是对目标程序进行的真正攻击,为了达到测试的目的,像是获取用户账号密码、截取目标程序传输数据等。渗透测试是一次性测试,在攻击完成后能够执行清理工作。搭茄
7、整理信息
渗透攻击完成后,整理攻击所获得的信息,为后边编写测试报告提供依据。
8、编写报告
测试完成之后要编写报告,阐述项目安全测试目标、信息收集方式、漏洞扫描工具以及漏洞情况、攻击计划、实际攻击结果等。此外,还要对目标程序存在的漏洞进行分析,提供安全有效的解决办法。
渗透测试应该怎么做呢?
01、信息收集
1、域名、IP、端口
域名信息查询:信息可用于后续渗透
IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常
端口信息查询:NMap扫描,确认开放端口
发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下
发现:是Windows Server 2003系统,OK,到此为止。
2、指纹识别
其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:
看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)
是否使用了存在漏洞的框架(如果没有现成的就自己挖)
02、漏洞扫描
1、主机扫描
Nessus
经典主机漏扫工具,看看有没有CVE漏洞:
2、Web扫描
AWVS(Acunetix | Website Security Scanner)扫描器
PS:扫描器可能会对网站构成伤害,小心谨慎使用。
03、渗透测试
1、弱口令漏洞
漏洞描述
目标网站念段桥管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。
渗透测试
① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
风险评级:高风险
安全建议
① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等
② 定期检查和更换网站管理口令
2、文件下载(目录浏览)漏洞
漏洞描述
一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
渗透测试
① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
② 看看有没有文件上传访问的功能
③ 采用…/来测试能否夸目录访问文件
风险评级:高风险
安全建议
① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)
② 过滤【./】等特殊字符
③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。
示例:tomcat,默认关闭路径浏览的功能:
param-namelistings/param-name
param-valuefalse/param-value
3、任意文件上传漏洞
漏洞描述
目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。
渗透测试
① 收集网站信息,判断使用的语言(PHP,ASP,JSP)
② 过滤规则绕过方法:文件上传绕过技巧
风险评级:高风险
安全建议
① 对上传文件做有效文件类型判断仔猛,采用白名单控制的方法,开放只允许上传的文件型式;
② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;
③ 禁止上传目录有执行权限;
④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。
4、命令注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用燃瞎系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。
渗透测试
风险评级:高风险
安全建议
① 拒绝使用拼接语句的方式进行参数传递;
② 尽量使用白名单的方式(首选方式);
③ 过滤危险方法、特殊字符,如:【|】【】【;】【’】【"】等
5、SQL注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息
渗透测试
① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
② 工具测试:使用sqlmap等工具进行辅助测试
风险评级:高风险
安全建议
① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
② 拒绝使用拼接SQL的方式
6、跨站脚本漏洞
漏洞描述
当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
三种XSS漏洞:
① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。
② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等
渗透测试
存储型,反射型,DOM型
风险评级:高风险
安全建议
① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【】【】【"】【’】【】等字符做过滤
② 任何内容返回到页面显示之前都必须加以html编码,即将【】【】【"】【’】【】进行转义。
7、跨站请求伪造漏洞
漏洞描述
CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。
渗透测试
风险评级:中风险(如果相关业务极其重要,则为高风险)
安全建议
① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;
② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;
③ 请求头Referer效验,url请求是否前部匹配Http(s)😕/ServerHost
④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入
⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;
8、内部后台地址暴露
漏洞描述
一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。
渗透测试
① 通过常用的地址进行探测,如login.html,manager.html,api.html等;
② 可以借用burpsuite和常规页面地址字典,进行扫描探测
风险评级:中风险
安全建议
① 禁止外网访问后台地址
② 使用非常规路径(如对md5加密)
9、信息泄露漏洞
漏洞描述
① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。
② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。
③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。
④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。
⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。
渗透测试
① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件
② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。
③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理
风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。
安全建议
① 备份信息泄露漏洞:删除相关备份信息,做好权限控制
② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制
③ 源码信息泄露漏洞:做好权限控制
④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因
⑤ 接口信息泄露漏洞:对接口访问权限严格控制
10、失效的身份认证
漏洞描述
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
渗透测试
① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie
② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证
风险评级:高风险
安全建议
① 使用强身份识别,不使用简单弱加密方式进行身份识别;
② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。
11、失效的访问控制
漏洞描述
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
渗透测试
① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。
② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。
风险评级:高风险
安全建议
① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;
② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;
③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;
④ 对每一个业务请求,都进行权限校验。
12、安全配置错误
漏洞描述
应用程序缺少适当的安全加固,或者云服务的权限配置错误。
① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。
② 默认帐户的密码仍然可用且没有更改。
③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。
④ 对于更新的系统,禁用或不安全地配置最新的安全功能。
⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。
渗透测试
先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;
风险评级:中风险
安全建议
搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。
13、使用含有已知漏洞的组件
漏洞描述
使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。
渗透测试
① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。
② Nmap等工具也可以用于获取操作系统版本信息
③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞
风险评级:按照存在漏洞的组件的安全风险值判定当前风险。
安全建议
① 移除不使用的依赖、不需要的功能、组件、文件和文档;
② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;
③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
详细学习可参考:
0条大神的评论