博主介绍
博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!
渗透方向的岗位,涉及到的知识点是很广泛的。
这里我总结了整个一系列的面试题,可能没有覆盖到全部的知识面,但是应该是比较全面的,本文主讲解web漏洞暴力破解方向的面试题。
如果整个系列的问题搞懂了大部分,那找个网安方向的工作基本上没什么问题了。
当然了,可能也不是说这些问题都会被问到,但这些题目都是和网安岗位相契合的。
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(一)SQL注入相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(二)XSS注入相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(三)CSRF相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(四)SSRF相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(五)文件上传相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(六)文件包含相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(七)逻辑漏洞相关面试题
暴力破解是指采用反复试错的方法并希望最终猜对,以尝试破解密码或用户名或找到隐藏的网页,或者找到用于加密消息的密钥。这是一种较老的攻击方法,但仍然有效,并深受黑客追捧。
根据密码的长度和复杂性,破解所需的时间从几秒钟到很多年不等。有些黑客每天针对的目标实际上都是相同的系统,持续时间达到几个月甚至是几年。
暴力破解不会造成直接的入侵,但攻击者通过暴力破解获得了系统/用户的账号和密码,以此为后续的入侵做准备。
对于个人而言,直接从用户那里窃取金钱,或者窃取其身份,身份盗用可能导致进一步的财务损失。
对于企业而言,通过暴力破解可以登录Telnet服务、POP3服务和MySQL服务等,登录成功将会导致用户信息泄露、文件共享、邮件泄露或无法正常发送邮件等高危事件。
1、穷举法是指根据输入密码的设定长度、选定的字符集生成可能的密码全集,进行地毯式搜索。
2、例如:已知某验证码为四位纯数字,其可能共有10000种组合,因此最多尝试10000次就能找到正确的密码。理论上利用这种方法可以破解任何一种密码,但随着密码复杂度增加,破解密码的时间会指数级延长。
3、穷举法适用于猜解随机生成的短信验证码等,因为各种随机生成密码出现的概率是一样的,不受人的记忆影响。
1、字典式攻击是将出现频率最高的密码保存到文件中,这文件就是字典,暴破时使用字典中的这些密码去猜解。
2、字典式攻击适用于猜解人为设定的口令,因为人为设定受人方便记忆影响不同密码出现的概率是不一样的,12345678、password作为密码的概率比drtdfjhlkh作为密码的概率要高得多。
3、与穷举法相比,命中率少有降低,但节省了较多的时间。
1、彩虹表攻击也属于字典式攻击,但它是一种高效地破解哈希算法(MD5、SHA1、SHA256/512等)的攻击方式。
2、网站为了增加安全性,不会直接将用户密码存储在数据库中,而是将密码进行哈希,变成一长串毫无意义的字符,并且哈希算法是不可逆的,没有解密算法可以还原成原来的密码。
3、面对哈希后的密码,破解的方法有两个:
一是用穷举法组合出所有的密码可能,然后经哈希加密算法计算,将结果与目标哈希值进行比对,但边计算边比对会耗费海量的时间;
二是提前生成可能密码与对应哈希串的对照表,但是对照表将占据海量的磁盘空间,以14位字母和数字的组合密码为例,生成的密码32位哈希串的对照表将占用5.7×10^14 TB的存储空间。
说白了就是简单的密码。
例如使用电话号码、出生日期、亲人或宠物的名字作为密码,或者在不同网站使用相同密码,这些行为导致密码很容易被破解。
例如使用频率最高的123456、123456789、password、12345678、111111、123123、12345、1234567890、1234567、000000、1234 ……这些纯数字或者纯字母。
又例如:qwerty、abc123 和 picture1 等常见的组合和键位。
1、提升密码长度和复杂度。
密码应由数字、大小写字母和特殊符号混合组成,且密码越长,破解密码的时间就会成指数增加,一旦密码超过了某个长度,基本上就不能用暴力破解了。
2、在不同的地方使用不同的密码
重复使用电子邮件、银行和社交媒体帐户的密码更可能导致身份被盗用。可以将网站的缩写作为密码的后缀,例如登陆微信的密码是Hl9tysY.wx,登陆QQ的密码是Hl9tysY.qq,这样每个网站都有独立的密码且不容易忘记。
3、避免使用字典单词、数字组合、相邻键盘组合、重复的字符串。
例如 password 、12345678、asdfg 、aaaa 或 123abc。
4、避免使用名字或者非机密的个人信息(电话号码、出生日期等)作为密码,或者是亲人、孩子、宠物的名字。因为当我们单击一些网站中的“忘记密码”链接时,系统有时会要求回答一系列问题。而答案通常可以在我们的社交媒体资料中找到,从而使帐户更易被破解。
5、定期修改密码
1、锁定策略
输错密码几次就锁定一段时间。
2、验证码技术
3、要求用户完成简单的任务才能登录到系统,用户可以轻松完成,但暴力工具无法完成。例如图形验证码、短信等。
3、密码复杂度限制
强制用户设置长而复杂的密码,并强制定期更改密码。
4、多因子认证
结合多种不同的认证因素对用户进行认证的方法。例如密码、身份证、安全令牌、指纹、面部识别、地理信息等。
我知道有burp suite、Brutus、Medusa、Hydra、Ncrack、John the Ripper、Aircrack-ng 和 Rainbow等工具,最常用的就是burp suite、Hydra了。
1、做信息收集优化字典
2、确认用户名在确认密码
3、提高线程数
4、GPU 加快暴力破解尝试
通过将 CPU 和图形处理单元 GPU相结合,可使 GPU 中数以千计的计算核心加入到处理当中,使系统能够同时处理多项任务,从而加快计算性能。GPU 处理可用于分析、工程和其他计算密集型应用程序,其破解密码的速度比单独使用 CPU 要快 250 倍。
对目标站点进行注册,搞清楚账号密码的一些限制,比如目标站点要求密码必须是6位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码。
如爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的机率比较高,可以使用这三个账号+随便一个密码,尝试登录,观看返回的结果。
做信息收集获取可能存在的用户名、邮箱、密码等信息做简单处理做成字典。
确认目标是否存在暴力破解的漏洞。( 确认被暴力破解的“可能性”)
比如:尝试登录—抓包—观察验证元素和response信息,判断否存在被暴力破解的可能。
根据实际的情况对字典进行优化,提高爆破过程的效率。
配置自动化工具(比如线程、超时时间、重试次数等),进行自动化操作。
设置攻击目标,可以通过proxy发送;
指定需要暴力破解的参数并设置成变量,同时选择攻击模式;
Sniper:设置一个payload,先将第一个变量使用字典进行测试,然后在将第二个变量使用字典进行测试;
Battering ram:设置一个payload ,所有的变量-起用字典内容被替换,然后一起尝试;
Ptichfork:每个变量设置一个payload ,分别使用对应的字典对变量进行同时替换;
Cluster bomb:需要为每个变量设置一个payload ,分别使用字典内容组合对变量进行替换。
设置字典,并可以对字典进行统一的策略处理; 设置字典,并可以对字典进行统一的策略处理;
对扫描的线程、失败重试等进行配置;
对结果设置匹配的flag:通过一个标识符来区别结果,并在结果栏中flag出来;
1、使用前端js实现验证码(纸老虎);
2、将验证码在cookie中泄露,容易被获取;
3、将验证码在前端源代码中泄露,容易被获取;
1、验证码在后台不过期,导致可以长期被使用;
2、验证码校验不严格,逻辑出现问题;
3、验证码设计的太过简单和有规律,容易被猜解。
1、可以提高安全性,但不能防止暴力破解漏洞。一般来说Token在防止CSRF上会有比较好的功效。
2、一般来说token是以type= ‘hidden’ 的形式输出在表单中,在提交的认证的时候一起提交,并在后台对其进行校验。但是,由于其token值输出在了前端源码中,容易被获取,就无法防止暴力破解。
子域名暴力破解
目录扫描爆破
登录暴力破解
验证码暴力破解
用户名+生日
用户名@生日
用户名+特定字符
用户名@年份
姓名全拼+生日
姓名全拼@生日
姓名全拼@特定字符
用户名@domain
用户名@domain+特定字符
domain@特 定字符
键盘固定顺序及变形
各种系统的初始口令
ftp弱口令
Ssh弱口令
Telnet弱口令
Mysql弱口令
RDP弱口令
Ridis弱口令
······