01
如何学习WEB
WEB分为三类,分别是CTF、BugHunter、RedTeam
1-1 CTF中的WEB
CTF中的WEB题目类型:
* AWD
* AWD+ = 解题模式 + AWD
* 内网渗透
● CTF中的WEB—解题模式学习
1.技能栈:
* 编程基础:PHP,Java, Python
* 漏洞类型:SSTI(服务端模板注入)、XSS(跨站脚本攻击)、SQLI(SQL 注入)、XXE(XML 外部实体)、Unserialize(反序列化攻击)、nday 利用等等
2.如何补全技能栈:
①无论是什么语言,你都可以用 runoob 这个网站来速刷一遍基础概念!
②之后结合漏洞靶场(这里说的是漏洞代码片段案例,去学习漏洞类型对应的代码,就比如 DVWA)
③掌握了上述基础之后,你就可以去学习 ThinkPHP 这种 Web应用框架,并且去调试往年出现的漏洞。
3.当然经过了上述步骤对于CTF来说完全不够!这里再介绍三个刷题网站!
①攻防世界
②CTFHub
③BUUCTF
● CTF中的WEB—AWD模式学习
AWD技能栈:
1.防御技巧:
* 快速分析日志/流量,找出攻击流量复现对应的漏洞
* 备份数据+修改默认口令:数据库+网站源码
* 部署简单的 WAF + 文件监控 (如果允许的话)
* 应对不死马的处理方式
2.攻击技巧:
* 审计源代码发现漏洞
* 成功利用漏洞之后写计划任务
* 使用D盾扫描源代码发现隐藏的后门
* 自动化进行批量攻击的脚本/框架
3.参考资源:
CTF AWD模式攻防Note :https://zer0yu.github.io/2018/05/24/ctf-awd-note/
● CTF WEB参考资料
刷题的过程中可以看的一些资料:
1.CTF Wiki:Web 简介 -CTF Wiki (ctf-wiki.org)
2.SCU-CTF-Web:Web学习路线- SCU-CTF HomePage (scuctf.com)
3.当然你也可以看一些书:
■从0到1:CTFer成长之路
■CTF特训营:技术详解、解题方法与竞赛技巧
4.RSS订阅https://github.com/zer0yu/CyberSecurityRSS
1-2 BugHunter中的WEB
●BugHunter—web漏洞挖掘学习
1.基础:
* 网络基础知识:TCP/IP网络,HTTP协议,DNS协议
* 操作系统基础:Windows 的 bat 脚本是什么?Linux Bash是什么?macOS 选修
此时可以下载一个Kali Linux 从练习熟练使用这个系统开始
* 需要熟练使用的工具:BurpSuite,Metasploit , SqlMap , Nmap etc.
2.怎么学:
①选择一个目标:例如从HackerOne 上进行选择
②开始Recon(信息收集),这里面有很多方法论,最基础的就是进行子域名收集+端口扫描(subfinder)
③开始Hack!去在目标上寻找 SQLi 或者 XSS 等漏洞
3.初学资源:
①BUG HUNTING METHODOLOGY FOR BEGINNERS
https://infosecwriteups.com/bug-hunting-methodology-for-beginners-20b56f5e7d19
②Bug Bounty 101
https://github.com/1hack0/bug-bounty-101
③sasn如何成为一个漏洞赏金猎人 https://xz.aliyun.com/t/2701
④书籍:
■《白帽子讲Web安全》
■《Web 漏洞搜索》
1-3 RedTeam中的WEB
●RedTeam——红队攻防学习
1.红队是什么?
在红队中,你来仿真、模拟或以其他方式扮演某个、某组入侵者或理论上的假想敌。区别于传统的渗透测试,更偏向于实战,面对的场景也更加复杂技术繁多,以目的为导向,需要有能够解决突发问题的能力。
2.红队技术栈
* 网络杀伤链
* MITRE ATT&CK 攻击矩阵
3.初学资料:
■《How to Hack Like a Pornstar》https://github.com/zer0yu/How-to-Hack-Like-a-Pornstar
■《以攻促防:企业蓝军建设思考》https://mp.weixin.qq.com/s/8iJs2ON66NY1Jdbt7c-BTA
■《要想加入红队,需要做好哪些准备?》https://xz.aliyun.com/t/4952
■《红队的踩“坑”之路》 https://xz.aliyun.com/t/7103
■书籍
1-4 WEB漏洞类型
02
WEB学习心得
●一定要有小的目标才能驱使你坚持学下去:
1.目标:
* 渗透测试项目
* CTF 中某种类型的题目
2.例子:
①设定一个具体的目标,比如挖掘PHP反序列化漏洞。
②针对该目标搜集必要的信息(PHP教程,漏洞说明,漏洞案例,自动解决方案)
③给予前期的信息收集初期评估一下,我要学会挖掘PHP反序列化漏洞大概需要花费多长的时间,涉及的技能树有哪些,学习过程要划分为几个阶段, 每个阶段的产出大概是什么。
④如果设定的目标很大(比如你的终极目标是要造一个自动化挖掘PHP反序列化漏洞的工具出来),那么对于你学习过程划分的每个阶段都应该有一个最低技能要求,学到该技能要求之后就去尝试。尝试之后反思,反思之后继续学习,然后继续阶段性任务。
⑤多做笔记,只有你能把一个问题表述清楚了,你才算是学会了。
●学会复盘很重要
复盘是必不可少的一个部分,正如每场CTF比赛过后都应该有赛题的复盘记录(Writeup)
1.项目整个完成过程的记录,包括失败的尝试和成功的尝试,以及思考的过程
2.有没有副产物和存疑的地方,比如过程中学到一些新的技巧点,或者是某一块代码看起来有点问题以后可能用得到,这些都记录下来
3.技能树是否存在不足,哪些地方不足,这些不足强化的优先级如何,对于优先级高的强化点放入后续的学习计划之中
4.对成功的场景进行抽象总结,对抽象出来的场景进行泛化成为一种漏洞思维模型,后续的遇到类似的模式直接套用即可
5.对涉及到的项目文档进行细节整理和补充,因为我们在做项目时通常是边做边写会写的比较乱,复盘整理的时候需要把他们重新整理,文档结构越规范越清晰越好
●学习中注意的问题
在复盘完成后,我们会有很多新的体会和认知,尤其是对自身技能树的不足有一定的认知,那么我们应该进行反思性的学习,针对不足的地方进行针对性加固学习,不过学习的时候一定要遵守以下几个原则:
1. 不要焦虑,你在经历过一个项目后你肯定会发现自己好菜啥都不会,很正常,你本来就很菜,因此不要焦虑,你能完成项目就说明你有产出,这个产出就是你进步的证明
2. 对技能树加固要有取舍,你发现一个综合的项目涉及到方方面面,你各个方面可能都不太会,这时候你要对技能树进行梳理,哪些是需要舍去的,哪些是需要加固到最低要求的,哪些是自己主要方向需要不断强化的
3. 设置学习的时长,不能一直陷入学习中,学习是学不完的,反思性学习可以认为是进行下一个项目前的准备期,这个时间不宜过长,般建议两星期左右。
原文始发于微信公众号(ipasslab):WEB安全入门指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论