大多数渗透人员在对一个系统做渗透测试的时候,最大的痛点是无法获得一个全面的测试思路和流程,以至于遗漏真正存在的漏洞或在不存在漏洞的点上浪费太多时间。
实际上渗透技能的研习是一个持续更新的过程,对于每个漏洞的理解程度不同,测试结果会有很大差距。要做的就是对每个漏洞都形成自己的一个印象库和姿势库:漏洞的形成本质、有几种可能的发生场景、有哪些防护是可以绕过的等等。清楚自己当下的测试水准,界限好水平在哪里,以一个漏洞开始挖深挖全,随着自己挖掘经验的积累和阅读其他人的Writeup/Blog,对每个漏洞的心得会从0到1,从1到100,逐渐形成自己独特的知识储备和渗透技能树,比如讲到JWT:
篇幅有限,这里只涉及企业级内网手工渗透测试,即在手握web环境信息及测试账号前提下的渗透测试,不涉及挖掘现网环境/挖掘SRC漏洞/现网攻击等情形。区别在于后者多了一个很重要的信息探测过程(网络空间/搜索引擎、子域挖掘、IP段/版本号等)和WAF绕过、后攻击过程,另开专题讲解。
对于渗透思路,个人总结的主要有两条主线,即:
1、按系统功能:每个功能(如查询)可能存在的漏洞;
2、按漏洞类型:先前总结的漏洞可能出现的场景,一一对应;
举个例子,按思路1,发现web系统存在上传文件功能,则可尝试的思路就有:直接上传脚本、绕过校验、畸形后缀、文件名XSS、上传HTML/svg进行HTMLi、上传xlsx、docx进行XXE、上传超大文件进行DOS、跨目录上传/解压等,这是看到上传功能就应该出现的渗透思路,通过探测过程猜测出后台代码逻辑是最好的。
另一种,思路2,对着CheckList回找功能,比如看到下面CheckList中第四项重定向漏洞,便可以遍历系统功能或查看Burp Suite的history页签,筛选出302状态码和存在url跳转参数的包,进行探测、绕过等等。
1)官方漏洞
确定自己漏洞库的范围,最权威的当属OWASP top10,最新漏洞列表为:
2)个人漏洞CheckList
个人在测试过程总结的Checklist,具体测试思路点后续可能补充,大部分都在之前的漏洞系列中详细讲解,点击传送。
前端漏洞:
1、 XSS(HTML、css注入)
2、 CSRF
3、 CORS配置不当
4、 ClickJacking
后端漏洞:
1、 SQL注入
2、 XXE注入
3、 文件上传/下载/包含
4、 开放重定向
5、 会话攻击
6、 DOS攻击
7、 反序列化
8、 命令注入
9、 第三方组件安全(CVE)
10、敏感信息泄露
11、SSRF
12、CRLF
13、web缓存欺骗
14、json劫持
15、SSTI
16、越权漏洞(IDOR)
17、账户劫持ATO
18、DDE注入
19、条件竞争
20、命令OS注入
21、参数污染
22、其他注入(LDAP、表达式、RCE)
23、目录遍历
24、业务逻辑漏洞
25、安全设计问题
26、服务器配置不当
对于每种漏洞,应该在看到漏洞名字或类型时,应该展现出对于这个漏洞的全景图。
1)https://github.com/Voorivex/pentest-guide
包含了各漏洞的原理及典型案例:
2)https://github.com/swisskyrepo/PayloadsAllTheThings
主要集合各漏洞的攻击、绕过方法和对应payload,姿势较齐全:
3)https://github.com/OWASP/CheatSheetSeries/tree/master/cheatsheets
OWASP对于各漏洞的cheatsheets,补充了几个维度的漏洞:
4)https://github.com/1N3/IntruderPayloads/tree/master/FuzzLists
对各漏洞FUZZ的攻击payloads,可作为速查表:
纯手工挖掘漏洞时使用的核心工具是Burp Suite,有时候使用一些扩展就可能得到意外收获,实战中比较好用的几个Exrtender:
依靠自动化手段可能发现一些特征不明显的漏洞:
此外,储备一些特定功能的脚本对于提升挖掘效率也有大帮助,多看多学多总结。