安全帮-零基础web安全学习终极攻略
字数 2643 2025-08-29 08:32:09

Web安全学习终极攻略

一、开始前的思考

在开始学习Web安全之前,请认真思考以下问题:

  1. 我真的喜欢搞安全吗?
  2. 我只是想通过安全赚钱吗?
  3. 我不知道做什么就是随便?
  4. 一辈子做信息安全吗?

这些问题想不清楚会对以后的发展很不利。与其盲目学习,不如先做一个长远计划。

二、学习原则

  1. 分阶段专注学习:研究某个漏洞类型时集中精力,如研究XSS时就专注于XSS
  2. 多看书和分析文章:阅读相关书籍和分析0day文章,照葫芦画瓢分析代码
  3. 整理笔记:总结和巩固学习的技术,形成自己的理解与创新

三、零基础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使用
  • 宽字节注入

建议:

  1. 先用sqlmap工具进行注入
  2. 学习数据库基础(MySQL或SQL Server)
  3. 尝试自己写查询数据库的脚本理解手工注入原理

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能做什么:
    1. 端口扫描(外网、内网、本地)
    2. 攻击内网或本地应用程序
    3. 内网Web应用指纹识别
    4. 攻击内外网Web应用
    5. 利用file协议读取本地文件

13. 逻辑漏洞 (7天)

常见逻辑漏洞:

  1. 订单金额任意修改(购物站常见)
  2. 验证码回传
  3. 越权操作(未对ID参数做cookie验证)
  4. 找回密码设计缺陷
  5. 接口无限制枚举

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的安全相关工作应该不成问题。关键在于:

  1. 分阶段专注学习
  2. 理论与实践结合
  3. 持续总结和笔记
  4. 工具熟练使用
  5. 保持对新技术的学习

记住:不要低估自己,不要高估别人。认真学习,坚持实践,你一定能成为优秀的Web安全专家。

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安全专家。