[TOC]
0x00 激励自己
@ringzero : 安全技术学习,承认自己的弱点不是丑事。
@ringzero : 学会如何学习,培养学习习惯,锻造学习力。
@ringzero : 为了能到远方,脚下的每一步都不能少。
Life is so short,Do something to make youself happy,such as coding;
0x01 杂谈与准备
知识面,决定看到的攻击面有多广。
知识链,决定发动的杀伤链有多深。
在进行学习基础知识的时候,只有对原理了然于心,才能更好的为以后所学打下坚实的基础;
学习方法
我是谁? 我来着哪里? 我要去往何处?
类似我们在学一门知识的时候,如何快速的掌握并且使用它?
它叫什么及它的发展历程和特点(介绍)? 它有什么作用(总结)? 如何使用它(案例演示)?
学习工具
Wiz笔记:为知笔记 Docker 服务器端用了 Moby 容器系统,构架在 Node.js、MySQL、Java、Redis、Nginx 之上,容器大小为 2.521 GB。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#第一次运行镜像,因为需要下载docker镜像,并且初始化数据,速度要慢一些请耐心等待。(根据网络状况,可能需要10分钟或者更长时间。)
mkdir /root/wizdata
docker run --name wiz -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -e SEARCH=true wiznote/wizserver
#修改启动参数,并重新启动服务,例如修改映射端口,或者设置是否启动搜索服务:
docker stop wiz
docker rm wiz
docker run --name wiz -it -d -v ~/wizdata:/wiz/storage -p 80:80 -e SEARCH=true wiznote/wizserver
#更新服务命令行:
docker stop wiz
docker rm wiz
docker pull wiznote/wizserver:latest
docker run --name wiz -it -d -v ~/wizdata:/wiz/storage -p 80:80 -e SEARCH=true wiznote/
#针对于时区不对的情况
docker run --name wiz -it -d -v ~/wizdata:/wiz/storage -p 8088:80 -v /etc/localtime:/etc/localtime -e SEARCH=true wiznote/wizserver
#系统重新启动后,重新启动服务
docker start wiz
在下载完成后,第一次启动镜像大概需要2-3分钟时间。然后打开浏览器,在地址栏里面输入:http://localhost,如果服务正常,则会出现下面的界面
0x02 年度学习计划
2020年
- JavaWeb
- MySQL8.0底层及优化
- Linux底层开发
0x03 升级打怪之路
基础课程
- 计算机组成原理 / 计算机系统结构
- 操作系统原理
- 通信技术原理
硬件(Hardware)
操作系统(OS)1
2
3
4
5
6
7
8
9
10
11Windows:
- Server
- xp / 7 / 8 / 10(主要是使用)
Linux:
- Redhat / CentOS
- Ubuntu / Debian / Kail / Deepin
Unix:
- Mac Pro(买不起)
网络通信(Network)
- TCP/IP详解
编程开发(Devlepment)1
2Servlet/JSP/反射机制
Spring4/Struts2/Hibernate5/MyBatis3
应用服务(Application)
数据(Database)1
2
3
4
5
6
7
8
9
10
11
12SQL(关系型)
• MySQL
• MSSQL
• Oracle
• PostgreSQL
NoSQL
• MongoDB
内存缓存
• Redis
• Memcache
重新理解WEB安全技术
注入漏洞
• SQL注入
- 本质原因:程序没有有效地区分代码和数据
- 防御手段:预编译(PHP的PDO库)/参数化查询, 存储过程, 白名单方式验证输入, 转义用户输入
• 命令注入
• 表达式/代码注入
• SSRF网络注入
1 | SQL 存储过程 ORM Hibernate |

WeiyiGeek.
文件
• XXE
• 文件包含
• 任意文件读取
• 任意文件上传
信息泄露
• 配置文件
• 测试文件
• 备份文件
• 接口暴露
• 心脏滴血
拒绝服务
暴力破解1
Session Fixation
二进制漏洞
• 缓冲区溢出
• 堆/栈溢出
• 内存泄露
逻辑漏洞
• 穷举遍历
• 水平越权
• 流程乱序
• 数据篡改
• 未授权访问
1 | XST:Cross Site Tracing(XST) |

WeiyiGeek.
• CSRF 跨站请求伪造:
- 原理: CSRF是一种Web应用攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作。本质原因:请求操作中所有参数都可被攻击者猜测到
WeiyiGeek.
- 防御:
- Token的生成一定要足够随机,需要使用安全的随机数生成器生成Token
- Token和Session绑定,用户A的Token只能用于A用户的Session
- Token应该有生命周期,需要有超时机制
- 不同的Form使用不同的Token值
- 所有敏感的操作,都使用POST方式
- 检查Referer值,拒绝来自其他域的请求
- 重要操作做二次认证,如短信认证,二次密码认证,验证码等
跨站请求伪造(CSRF) VS 跨站脚本攻击(XSS)
n XSS直接作用在客户端浏览器;CSRF直接作用在服务端;
n XSS可执行用户任何操作(获取到用户cookie后);CSRF只能执行特定操作;
n CSRF需在用户登陆情况下完成攻击;XSS可以在客户端做任何Js脚本可以做的事情,即使用户不在登陆状态;
1 | Jsonp |
• ClickJacking
自动化开发栈1
2
3
4
5
6
7
8
9
10
11
12Python
PHP
GoLang https://github.com/golang-china/gopl-zh / https://tour.golang.org/welcome/1
C/C++
MySQL
MongoDB
Redis
ElasticSearch
精通SQL查询
开发框架
分布式开发
正则表达式
横向知识栈1
2
3
4汇编ASM
调试技术 http://boolan.com/course/64 / http://boolan.com/course/11
移动开发
数据收集查询1
2
3
4ELK Stack
ElasticSearch
Logstash
Kibana
不安全的直接对象引用1
2
3
4目录穿越
本地文件包含
远程文件包含
越权
n使用危险的HTTP服务,如PUT, DELETE, TRACE
哈希长度拓展攻击
HSTS
CA
SSL/TSL
中间人攻击
PKI
功能级访问控制缺失
- 禁用JavaScript查看订单
安全开发:
消除直接对象引用
- 替换直接引用,并使用临时映射表,这样可避免直接引用数据源对象
- 使用ESAPI去生成 AccessReferenceMaps http://static.javadoc.io/org.owasp.esapi/esapi/2.1.0/org/owasp/esapi/AccessReferen
ceMap.htmlWeiyiGeek.
重定向和转发的区别
调用方式:
重定向-response.sendRedirect(“new.jsp”);
转发-request.getRequestDispatcher(“new.jsp”).forward(request, response);
本质区别:
重定向-客户端行为
通过重定向,客户端发起第二次请求
n响应码300-307,通常为302
危害:钓鱼攻击
转发-服务端行为
服务端内部转发,再将结果返回给客户端
危害:绕过控制访问检测,未授权访问页面 (SSRF)