网易web白帽子学习笔记
部分转载他人
一、web基础知识
1.1.1web介绍
world wide web 万维网
web1.0 个人网站、门户站点 静态页面
web2.0 微博、博客交互式页面
随之而来有一些安全问题:
用户通过浏览器访问网站,浏览器对服务器请求资源
web工作流程:
浏览器工作流程:
- web是什么?
- web发展分为哪几个阶段?
- web安全问题的发展形式?
- web的工作流程?
- 浏览器是如何工作的?
1.1.2web通信
URL统一资源定位符
http 超文本传输协议,web通信使用的协议,web基础
http请求方式:
get请求不会返回数据体
post
- http referer 如用百度搜索点击到页面和直接输入url点击连接到页面(告知服务器该请求的来源,浏览器自动加上,防止盗链,csrf漏洞)
- url是什么?
- 描述一下url的格式?
- cookie和set-cookie(服务器要求浏览器设置cookie,比如用用户名、密码登陆后服务器就给浏览器颁发cookie)
- referer作用?
- 状态码301/302(跳转状态码)和location(跳转的地址)
1.2.1HTML
语法,html dom
js动态效果,css图片
html不区分大小写
dom 文档对象模型 将文档转换为树形结构 更直观地了解页面元素,通过js可以对页面进行任意操作
- html包含哪两部分 ?head,body
- html dom结构?
1.2.2javascript
dom 连接web和编程语言 js+dom访问和操作html文档的标准方法
bom 连接浏览器和编程语言
1.2.3web服务器环境
http://phpstudy.net/phpstudy/phpStudy.zip
下载安装windows下的集成环境,这里用Apache
Apache服务
URL:协议、服务器名称、路径、文件
通过记事本打开:C:\Windows\System32\drivers\etc\hosts
添加 test.123.com(192.168.58.1)
web服务器环境搭建,通过上面的文件夹可以自定义服务器域名
在搜索栏通过手动输入就可以打开
网站根目录,将html存放在 test.123.com 下,就可以访问到了
1.2.4后端开发基础--SQL
SQL概述:
建立数据库:
SQL对大小写不敏感
数据表介绍:
打开mysql命令行 其他选项菜单--mysql工具--mysql命令行
密码默认为root
create database websecurity;(创建一个名为websecuity的数据库)
show databases;(显示已有的数据库)
use websecurity; (使用数据库时就要切换到此处)
create table teacher(
-> id int(4) not null primary key auto_increment,
-> name char(20) not null,
-> sex char(10) not null,
-> addr char(20) not null
-> ); (创建一个名为teacher的标签)
show tables;
select * from teacher; (查询表中的数据)
INSERT INTO teacher(name,sex,addr) VALUES("Lee","male","beijing"); (插入数据,id为自增的,不用我们添加)
UPDATE TEACHER SET name = 'Amily' WHERE id = 1; (更新数据,将id为1的那行name值更改)
DELETE FROM teacher WHERE name='Amily';(删除其中一行)
对数据进行筛选:
select 你要的信息 from 数据表(或多个)where 满足的条件(条件判断)
select * from teacher where addr='beijing' and sex='male';
select name teacher where addr='beijing' and sex='male';
'*'代表所有符合数据
第二行语句显示出来的就只是name的那一行
where也可用于update或delete中
对数据进行排序:
select * from teacher order by name;(对name列进行排序 ASC(升)/DESC(降)默认升序排列)
select * from teacher order by 2; 结果同上,2表示对第二列进行操作
将两个表中的数据合并:
select 你想要的信息 from 数据表1 union select 你要的信息 from 数据表2
select name from teacher union select name from student
若有两个相同项,只显示一个
想要全部显示,用union all
注释:
单行:#... (...表示注释的内容)
--(此处一个空格)...
多行 :/*...*/
常见的内置函数
database();
current_user;
load_file() 文件要再次加反斜杠,因为会忽略了转义
version()
into+outfile 写入文件
1.2.5php
超文本预处理器
用php导出、导入数据库
导出:打开mysql命令行,查看数据表是否存在
打开cmd
>D:\phpStudy\MySQL\bin\mysqldump.exe -u root -p websecurity >C:\Users\nihao\Desktop\websecurity.sql
Enter password: ****
D:\phpStudy\MySQL\bin\mysqldump.exe 直接找到文件拖拽过来即可(mysqldump为导出)
-u root 用户名
-p 密码 输入后会显示出来,所以先放着,后面会提示要输入密码
数据库名称
>存储位置 如果没有,会新建;有的话,也可以直接拖拽
导入:
drop database websecurity; (之前导出的事例中已经把websecurity导出,此处为了实验,就先删掉)
source C:\Users\nihao\Desktop\websecurity.sql
此时在文件中手动添加了以下画红线的部分
要是没有在sql文件中加入上两行,就要在mysql命令行中先输入上两行,再用source导入
1.3.1web基础知识
web前端开发语言大致介绍
web后端开发语言大致介绍
web开发语言设计大盘点
在浏览器输入url后的web流程
二、web安全基础
常见的安全问题
钓鱼
发送伪造链接邮件,骗取受害者
通过伪造网址让我们跳转到别人设置的页面,此页面可能会让我们输入自己的个人信息
- 诱惑性标题
- 仿冒真实网站
- 骗取用户账号
- 骗取用户资料
篡改
关键字
- hacked by
搜索引擎语法
- Intitle:Keyword 标题中含有关键词的网页
- Intext:Keyword 正文中含有关键词的网页
- Site:domain 在某个域名和子域名下的网页
暗链
攻破网站后植入第三方
入侵后添加链接,隐藏在网页的链接
放入暗链主要是提高在搜索引擎的排名,别人在搜索关键字时,这些暗链的网站可以排到前面
webshell
大马
小马:一句话木马
webshell主要是后门,控制的流量和正常的流量混合在一起,不易被发现
常见的web漏洞
2.1.2XSS跨站脚本
通过插入恶意脚本盗取用户信息、钓鱼、制造蠕虫等
分类:
- 存储型xss,存储在服务器中
- 反射型xss,从url中触发xss脚本
- DOM型xss,通过前端JavaScript将脚本写到dom中触发,通过后端写到响应页面中,渲染时才会触发,在url的hash中
所以直接查看源码查找的是后端源码,通过搜索xss无法定位
通过f12查看当前页面源码,查找xss可以看到通过JavaScript调用的语句,发现是通过hash调用,
通过本页面右击查看源码,查找hash,发现后端触发xss语句
2.1.2CSRF跨站请求伪造
概念:
利用用户已登陆的身份,在用户毫不知情的情况下,以用户的名义完成非法操作
通过view-source查看url,发现用户构造了转账的form表单,通过form表单提交会有明显的网页跳转情况
通过iframe嵌入,用户看到的是外层页面,感受不到嵌入网页的跳转情况,才能使用户不知情的情况下完成操作
2.2.3点击劫持
1.前置知识:
相信大家都见过俄罗斯套娃,一层嵌套一层,在打开之前,内部是不可见的。网站也可以实现类似的操作
iframe标签可以创建包含另一个文档的内联框架
在浏览器中打开,即可打开到src中的网页
实例:
对网页进行透明度设置为0,则网页不可见。若在网页上可放上“点击我”的图片,当我们点击时就会触发隐藏在图片之下的网页按钮
点击劫持:通过覆盖不可见的框架误导受害者点击而造成的攻击行为
特点:
- 隐蔽性高
- 骗取用户操作
- UI-覆盖攻击
- 利用iframe或其它标签的属性
实例:(这是视频中实例代码的,但是我不知道哪里错,等我知道了再回来改,欢迎指正)
<!Doctype html> <html> <metahttp-equiv="Content-Type"content="text/html charset=utf-8" /> <head> <title> 点击劫持</title> <style>html,body,iframe(display:block;height:100%;width:100%;margin:0;padding:0;border:none;)/*被隐藏网页的设置*/iframe(opacity:0;filter:alpha(opacity=30);/*IE*/-moz-opacity:0.5;/*noz+fflush*/opacity:0.5;/*支持css的浏览器*/position:absolute;z-index:2;)/*调整网页可见度*//*设置多个opacity,提高不同网页的兼容性*/button(position:absolute;top:-5px;left:875px;z-index:1;/*图片与视觉的距离*/width:72px;height:26px;)</style> </head><body><button><imgsrc="C:\Users\nihao\Desktop\222.jpg"></button><iframesrc="https://www.baidu.com/></iframe></body> </html>
View Code
2.2.4URL跳转漏洞
定义:借助未验证的URL跳转,将程序引用到第三方不安全的区域,从而导致安全问题
实现方式:
Header头跳转
javascript跳转
META标签跳转
2.2..5SQL注入
可以访问和修改数据,或利用潜在的数据库漏洞进行攻击
例题:
流程:
- 获取用户请求参数
- 拼接到代码中
- SQL语句按照我们构造参数的语义执行
必备条件:
可以控制输入的数据
服务器要执行的代码拼接了控制的数据
本质:数据和代码未分离,即数据当作了代码来执行
2.2.6命令注入
基本操作:
- win+r 打开cmd
- 查看本地网络:ipconfig
- 查看系统用户:net user
- 查看当前目录:dir "./"
- 字符串查找:C:\Users\nihao>find "DELETE" C:\Users\nihao\Desktop\mysql.txt
- 结果如下:
- ---------- C:\USERS\NIHAO\DESKTOP\MYSQL.TXT
- DELETE FROM teacher WHERE name='Amily';(删除其中一行)
实例:
curl-I 请求网址并返回http响应头
实际中“&”在url中为参数分隔符,但我们想让它做命令拼接符 就要进行转义 %26
过程介绍:
2.2.7文件操作漏洞
- 文件上传漏洞
- 任意文件下载
- 文件包含漏洞
1.文件上传漏洞:
上传可执行脚本
2.任意文件下载
可能导致代码泄露、数据库配置文件泄露、系统文件泄露等
利用原因:未验证下载文件格式
未验证请求的路径
3.文件包含漏洞
- 本地文件包含
- 远程文件包含
测试远程文件包含的漏洞中,下面两个内容要开启
三、web漏洞扫描工具初级
3.1敏感文件探测
类型:
- 网站管理后台
- 数据文件
- 备份文件
- Webshell
实质:通过猜测文件名,根据返回的http状态码判断文件是否存在
HTTP状态码详解
扫描工具:御剑
扫描时所用的字典并不是越大越好,所以通过判断目标网站可能的脚本来选择字典
3.2漏洞扫描工具的入门
综合性Web漏扫工具:AWVS,Netsparker,AppScan
使用漏洞扫描工具可能存在的问题:
1.对目标站点进行误伤:
如高流量,请求了危险的功能
2.盲区:逻辑漏洞
3.评级
4.漏扫工具的解读和应用
- 测试用例可能需要调整,就是表面上看扫出来的结果没什么,但通过进一步查看可能发现漏洞
- 误报 与 漏报
- 将扫描结果作为人工测试的线索
3.3SQL注入
复习:
SQL注入主要是因为要执行的数据库代码拼接了用户的输入的数据
获取数据库敏感数据(拖库)
四、在线工具
搜索引擎的高级搜索语法
site:搜索特定的站点信息
info:站点的基本介绍
inurl:搜索URL中包含有指定字符串的网址
intitle:搜索网页标题中包含指定的字符串网址
intext:搜索站点页面内容中具有关键字内容的网址
filetype:搜索特定后缀名的文件
bing英文版直接输入ip:xxxxx,同ip站点查询,旁站
实例:
找到目标站点登陆地址并暴力破解密码
- site:testphp.vulnweb.com inurl:(login|admin)
像查看目标站点有没有泄露的数据库文件
- site:testphp.vulnweb.com filetype:sql
site:http://testphp.vulnweb.com/ inurl:phpinfo.php
交互页面
- site:http://testphp.vulnweb.com/ inurl:php?
如果目标站点关闭,可以查看浏览器的缓存:
- cache:http://testphp.vulnweb.com
网络空间搜索
万物互联:个人计算机和服务器、路由器、智能家居、手机、电脑等
如何把每一个接入互联网的设备看作一个节点,就构成了我们的网络空间
SHODAN
ZoomEye
FOFA
基本原理:探测/爬取--》识别/打标签--》存储拱检索
在线网络工具
基本的站点信息探测:whatweb.net
ip查询:www,ipip.nwt
www.cmd5.com
tool.chinaz.com
安全导航站点:www.anquanquan.info/#tools
五、Web安全体系建设
防御:
输入检查:
- 在服务器端检查
- 数据合法性校验:类型、范围、长度、
- 尽可能使用“白名单”
输出检查;
- 进行特定的过滤和转义,不让程序报错中显示暴露数据信息
针对性防御:
- 例如重要的cookie设置为httponly,这样xss就获取不到该cookie
WAF:
- 防火墙
修复
漏洞知识库
漏洞修复周期
漏洞复查
安全事件应急响应流程
事件确认:
- 由产品方、安全方确认事件的真实性
- 必要时和运维、公关、法务等其他团队共同确认
事件汇报:
- 根据时间等级额外通知对应的负责人
事件处理:
- 成立安全应急小组
- 应急方案确定
- 应急方案执行
- 事件恢复
归档和复盘:
- 进行总结
SDL
(Security Development Lifecycle 安全开发生产周期)
旨在从源头降低风险,提升web安全应用的安全性
模糊测试
《互联网企业安全高级指南》 第三章
常见的安全漏洞提交平台:待补充--
ftp、https、file三种协议:
FTP是File Transfer Protocol,文件传输协议;
HTTP是Hyper Text Transfer Protocol,超文本传输协议;
FILE是本地文件传输协议
FTP:
(1)FTP比HTTP复杂
FTP和HTTP一样都是Internet上广泛使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
(2)FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
HTTP
当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如http://www.microsoft.com,但是在浏览...w.microsoft.com ,你知道为什么会多出一个“http”吗?
(1)HTTP协议是什么
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如:http://www.microsoft.com/china/index.htm。它的含义如下:
1. http://:代表超文本传输协议,通知microsoft.com服务器显示Web页,通常不用输入;
2. www:代表一个Web(万维网)服务器;
3. Microsoft.com/:这是装有网页的服务器的域名,或站点服务器的名称;
4. China/:为该服务器上的子目录,就好像我们的文件夹;
5. Index.htm:index.htm是文件夹中的一个HTML文件(网页)。
我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。
HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以http://开头的原因。
自WWW诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。
(2)HTTP是怎样工作的
由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME(Multipurpose Internet Mail Extensions多用途互联网邮件扩展类型,设定某一拓展名的文件用特定方式打开)信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。
其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。
FILE
File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。
uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?
URI的结构为:
如果有host,前面需要加//,因此对于http或https等网络地址来说会写成:
https://blog.csdn.net/lishanleilixin/article/category/7191777
这样看上去很自然。如果是文件的话,文件没有host,所以中间的host部分就不要了,就变成了:
因为如果没有host的话,第一个[]的内容就不存在了,这种同意的写法有一个标准叫CURIE。
socket:
这是为了实现以上的通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。
socket只是一种连接模式,不是协议,socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),
通过Socket,我们才能使用TCP/IP协议。tcp、udp,简单的说(虽然不准确)是两个最基本的协议,
很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,
这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。
转载于:https://www.cnblogs.com/my-mind/p/9867313.html
网易web白帽子学习笔记相关推荐
- 【白帽子学习笔记11】DVWA Brute Force【暴力破解】
[白帽子学习笔记11]DVWA Brute Force Brute Force 就是暴力破解的意思,尝试常用的用户名和必然然后使用工具一个一个的去尝试 LOW级别 通过解析源码我们可以发现代码没有任何 ...
- 网易WEB白帽子 -WEB安全工具
网易WEB白帽子 03 WEB安全工具 1. 浏览器 内容设置 允许弹窗 可运行Javascript脚本 内容设置 www.hackthissite.org 插件 HackBar Advanced C ...
- 网易WEB白帽子-WEB安全体系建设
网易WEB白帽子 05 WEB安全体系建设 SDL 安全开发生产周期 提升WEB应用的安全性 减少WEB应用的的安全漏洞 降低安全漏洞的修复成本 SRC 安全应急响应中心 WAF WEB安全应用防火墙
- python白帽子学习笔记(整合)
python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...
- 网易WEB白帽子-WEB安全基础
网易WEB白帽子 02..WEB安全基础 1.钓鱼 诱惑性的标题,仿冒真实网址,骗取用户账户,骗取用户资料 2.网页'篡改' hacked by Intitle : keyword 标题中还有关键字的 ...
- 【白帽子学习笔记14】SQL注入常用语句
[白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...
- (白帽子学习笔记)前渗透——SQL注入
读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 注入详解 目录 注入详解 SQL注入 SQL注 ...
- (白帽子学习笔记)前渗透——文件上传upload labs
读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 第一关--前端验证 1.将浏览器中的JS代码禁 ...
- 价值2500元网易web白帽子黑客培训
下载地址:百度网盘
最新文章
- 前端Vue学习之路(五)插件的使用
- 7年增长16倍,清华AI+ML课程学生数暴增 | AI Index 2018
- 如何读论文才不至于发疯?
- NB-IoT,你真是太让我失望了
- 关于高阶导数的一个不等式估计
- Django-5.1 模型层 单表操作
- JS----JavaScript中的递归函数
- 作者:丁铖(1992-),男,华东师范大学计算机科学与软件工程学院硕士生。...
- 文件后缀可见的设置 强转文件类型
- 漫步数理统计三十二——中心极限定理
- 过磅系统_集团公司首个过磅计量及销售结算新系统上线试运行
- iphoneX 订单生成器 - 装 b 神器 - 生成虚拟 iphoneX 订单,满足你装 b 的愿望
- SpringBoot与SpringCloud版本对应信息
- Python学习第二章:变量和简单类型
- scipy.ndimage.measurements label理解
- 游戏美术设计中,最难的角色人物如何设计才能吸睛?
- 2019年CSDN博客排名前10名
- 如何使用prism进行统计分析(Analysis)?
- 伯克利创造出“可看到未来”的机器人,能帮助无人驾驶预测事故
- 方差分析与单因素方差分析