安全帮-零基础web安全学习终极攻略
字数 2643 2025-08-29 08:32:09
Web安全学习终极攻略
一、开始前的思考
在开始学习Web安全之前,请认真思考以下问题:
- 我真的喜欢搞安全吗?
- 我只是想通过安全赚钱吗?
- 我不知道做什么就是随便?
- 一辈子做信息安全吗?
这些问题想不清楚会对以后的发展很不利。与其盲目学习,不如先做一个长远计划。
二、学习原则
- 分阶段专注学习:研究某个漏洞类型时集中精力,如研究XSS时就专注于XSS
- 多看书和分析文章:阅读相关书籍和分析0day文章,照葫芦画瓢分析代码
- 整理笔记:总结和巩固学习的技术,形成自己的理解与创新
三、零基础Web安全学习计划
1. HTTP协议请求 (1周)
- 学习HTTP协议请求
- 了解HTTP状态码
- POST/GET区别
- 使用Chrome浏览器F12查看Network标签中的HTTP请求响应
2. 危险的HTTP头参数 (1周)
了解以下参数可能造成的安全问题:
- User-Agent
- X-Forwarded-For
- Referer
- Client-IP
- Cookie
3. 专业术语 (1天)
了解以下术语:
- Webshell
- 菜刀
- 0day
- SQL注入
- 上传漏洞
- XSS
- CSRF
- 一句话木马
4. 专业黑客工具使用 (10天)
掌握以下渗透测试工具:
- sqlmap:SQL注入工具
- Burpsuite:Web渗透测试套件
- nmap:网络扫描工具
- w3af:Web应用攻击和审计框架
- Nessus:漏洞扫描工具
- Appscan:Web应用安全测试工具
- AWVS:Web漏洞扫描工具
5. 脚本语言+代码审计入门 (10天)
- 学习PHP基本语法和危险函数(如open、exec等)
- 了解危险函数可能造成的漏洞
- 可举一反三应用到ASP、ASPX、Java等语言
- 进行Web漏洞代码审计
6. SQL注入 (3天)
- 数字型注入
- 字符型注入
- 搜索注入
- 盲注(sleep注入)
- sqlmap使用
- 宽字节注入
建议:
- 先用sqlmap工具进行注入
- 学习数据库基础(MySQL或SQL Server)
- 尝试自己写查询数据库的脚本理解手工注入原理
7. CSRF跨站点请求 (3天)
- GET型与POST型CSRF的区别
- 使用token防止CSRF
- CSRF防御机制
8. XSS (7天)
- 了解同源策略
- 学习JavaScript
- 了解HTML实体编码(10或16进制)
- JavaScript的8进制和16进制编码
9. 文件上传漏洞 (7天)
- 开源编辑器上传漏洞
- 绕过系统检测上传一句话木马的方法
10. PHP文件包含漏洞 (10天)
- 学习以下函数如何产生文件包含漏洞:
- include()
- include_once()
- require()
- require_once()
- fopen()
- readfile()
- 本地包含与远程包含的区别
- 利用技巧:截断、伪URL、超长字符截断等
11. PHP命令执行 (3天)
了解以下PHP函数的代码执行漏洞:
- eval()
- assert()
- preg_replace()
- call_user_func()
- call_user_func_array()
- create_function()
- array_map()
12. SSRF (3天)
- SSRF原理及危害
- SSRF能做什么:
- 端口扫描(外网、内网、本地)
- 攻击内网或本地应用程序
- 内网Web应用指纹识别
- 攻击内外网Web应用
- 利用file协议读取本地文件
13. 逻辑漏洞 (7天)
常见逻辑漏洞:
- 订单金额任意修改(购物站常见)
- 验证码回传
- 越权操作(未对ID参数做cookie验证)
- 找回密码设计缺陷
- 接口无限制枚举
14. XXE(XML外部实体注入) (5天)
- 当允许XML引入外部实体时,可导致:
- 文件读取
- 命令执行
- 内网探测
15. XPath注入 (5天)
- 原理与SQL注入类似
- 通过恶意查询字符串进行攻击
16. 服务器解析漏洞
- IIS解析漏洞
- Nginx解析漏洞
- Tomcat后台上传漏洞
- JBoss上传漏洞
四、加分项目-渗透信息搜集 (15天)
1. 子域名搜集
- 利用DNS域名传送漏洞搜集二级域名
- 使用工具:
- subDomainsBrute
- wydomain
- theHarvester.py
- Fierce
- Dig
- knock
- dnsspider
- SubDomainscollect
- SubBrute
- dirfuzz
2. 搜索引擎技巧
- Google高级搜索:
~:把可能忽略的字列入查询范围*:通配符"":精确查询
3. 代码托管泄漏信息搜索
- Google代码搜索
- GitHub代码搜索
4. 邮箱搜集
- 使用Metasploit等工具搜集邮箱
5. IP反查域名
- 使用在线工具如http://dns.aizhan.com/
6. 其他信息搜集
- 二级兄弟域名搜集
- 查询邮件服务器信息
- 目标IP地址范围搜集
- 扫描C段
- 获取CDN真实IP地址
- 社会工程学技巧
五、学习资源
在线学习平台
- 安全帮:http://www.secbang.com
- W3CSchool PHP教程:https://www.w3cschool.cn/php/
- W3CSchool MySQL教程:https://www.w3cschool.cn/mysql/
参考文章
- 盲注sleep函数执行SQL注入攻击
- CSRF详细学习笔记
- XSS学习资料
- 进制编码学习:http://su.xmd5.org/static/drops/tips-689.html
- 同源策略学习:Browser Security-同源策略
- 上传绕过学习
- SSRF实例
- 逻辑漏洞实例:http://www.freebuf.com/vuls/112339.html
- XXE学习:http://blog.sina.com.cn/s/blog_8194b04f0102wsoe.html
- XPath注入:https://blog.csdn.net/quiet_girl/article/details/50588130
六、总结
按照这个系统化的学习计划,掌握上述Web安全知识和技能后,找一份5k-8k的安全相关工作应该不成问题。关键在于:
- 分阶段专注学习
- 理论与实践结合
- 持续总结和笔记
- 工具熟练使用
- 保持对新技术的学习
记住:不要低估自己,不要高估别人。认真学习,坚持实践,你一定能成为优秀的Web安全专家。