本手册最终目的在于指导如何通过简单的操作发现常见应用安全漏洞,后续深入利用请参考各大安全论坛(或者等本手册中级更新)
如果把WEB/APP看成一个抽象意义上的程序,它们(程序)最基本也是最核心的功能,就是处理输入输出流。一个典型的程序输入输出流如下:
user_input=input()
program_output=code_exec(user_input)
screen_print(program_output)
一个经过初步安全防护的程序流程如下:
user_input=input()
user_input_after_filter=safe_func(user_input)
program_output=code_exec(user_input_after_filter)
screen_print(program_output)
衡量一个程序安全性的标准分以下两点:
1、有无safe_func()
2、功能接口常规输入可以变形成哪些有攻击性的输入?safe_func()过滤这些恶意字符串的能力如何?
对于普通站点而言,所有的输入流均来自不可信的用户,你永远无法预测用户的输入(即便是网站本身的参数也可以被用户恶意修改)但是你可以通过代码控制站点的输出(输出是指广义上的输出,调用其他模块功能也属于输出),所以掌握基本的Web安全测试能力对于提升网站整体安全性十分关键。
Web安全测试,原则上就是利用【精心构造】的user_input去测试能否得到【该功能存在漏洞】的program_output。
本手册除基础知识外,包含两个大的模块,服务端(backend)和用户端(frontend),模块中的每章结构均为:简介-原理-技巧
简介:符合直觉理解的图文【WHAT】
原理:概括类型漏洞的产生原因【WHY】
技巧:攻防两端的对抗升级【HOW】
#如果你对于HTTP协议及相关工具十分熟悉,可以跳过基础知识章节。
#否则,建议阅读过后再进入具体的漏洞类型
章节列表:
#基础知识
#服务端
#用户端
#致谢,本手册在编辑期间参考了如下网站及书籍,排名不分先后
xz.aliyun.com
paper.seebug.org
portswigger.net
freebuf.com
白帽子讲web安全
从0到1:ctfer成长之路
美团前端技术团队
阮一峰的网络日志
菜鸟教程