world wide web 万维网javascript
web1.0 我的网站、门户站点 静态页面php
web2.0 微博、博客交互式页面css
随之而来有一些安全问题:html
用户经过浏览器访问网站,浏览器对服务器请求资源前端
URL统一资源定位符java
http 超文本传输协议,web通讯使用的协议,web基础mysql
http请求方式:web
get请求不会返回数据体sql
postshell
语法,html dom
js动态效果,css图片
html不区分大小写
dom 文档对象模型 将文档转换为树形结构 更直观地了解页面元素,经过js能够对页面进行任意操做
dom 链接web和编程语言 js+dom访问和操做html文档的标准方法
bom 链接浏览器和编程语言
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 下,就能够访问到了
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 写入文件
超文本预处理器
导出:打开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导入
web后端开发语言大体介绍
发送伪造连接邮件,骗取受害者
经过伪造网址让咱们跳转到别人设置的页面,此页面可能会让咱们输入本身的我的信息
关键字
搜索引擎语法
攻破网站后植入第三方
入侵后添加连接,隐藏在网页的连接
放入暗链主要是提升在搜索引擎的排名,别人在搜索关键字时,这些暗链的网站能够排到前面
大马
小马:一句话木马
webshell主要是后门,控制的流量和正常的流量混合在一块儿,不易被发现
经过插入恶意脚本盗取用户信息、钓鱼、制造蠕虫等
分类:
因此直接查看源码查找的是后端源码,经过搜索xss没法定位
经过f12查看当前页面源码,查找xss能够看到经过JavaScript调用的语句,发现是经过hash调用,
经过本页面右击查看源码,查找hash,发现后端触发xss语句
概念:
利用用户已登录的身份,在用户绝不知情的状况下,以用户的名义完成非法操做
经过view-source查看url,发现用户构造了转帐的form表单,经过form表单提交会有明显的网页跳转状况
经过iframe嵌入,用户看到的是外层页面,感觉不到嵌入网页的跳转状况,才能使用户不知情的状况下完成操做
1.前置知识:
相信你们都见过俄罗斯套娃,一层嵌套一层,在打开以前,内部是不可见的。网站也能够实现相似的操做
iframe标签能够建立包含另外一个文档的内联框架
在浏览器中打开,便可打开到src中的网页
实例:
对网页进行透明度设置为0,则网页不可见。若在网页上可放上“点击我”的图片,当咱们点击时就会触发隐藏在图片之下的网页按钮
点击劫持:经过覆盖不可见的框架误导受害者点击而形成的攻击行为
特色:
实例:(这是视频中实例代码的,可是我不知道哪里错,等我知道了再回来改,欢迎指正)
<!Doctype html> <html> <meta http-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><img src="C:\Users\nihao\Desktop\222.jpg"></button> <iframe src="https://www.baidu.com/></iframe> </body> </html>
定义:借助未验证的URL跳转,将程序引用到第三方不安全的区域,从而致使安全问题
实现方式:
Header头跳转
javascript跳转
META标签跳转
能够访问和修改数据,或利用潜在的数据库漏洞进行攻击
例题:
流程:
必备条件:
能够控制输入的数据
服务器要执行的代码拼接了控制的数据
本质:数据和代码未分离,即数据看成了代码来执行
基本操做:
实例:
curl-I 请求网址并返回http响应头
实际中“&”在url中为参数分隔符,但咱们想让它作命令拼接符 就要进行转义 %26
过程介绍:
1.文件上传漏洞:
上传可执行脚本
2.任意文件下载
可能致使代码泄露、数据库配置文件泄露、系统文件泄露等
利用缘由:未验证下载文件格式
未验证请求的路径
3.文件包含漏洞
测试远程文件包含的漏洞中,下面两个内容要开启
类型:
实质:经过猜想文件名,根据返回的http状态码判断文件是否存在
扫描工具:御剑
扫描时所用的字典并非越大越好,因此经过判断目标网站可能的脚原本选择字典
综合性Web漏扫工具:AWVS,Netsparker,AppScan
使用漏洞扫描工具可能存在的问题:
1.对目标站点进行误伤:
如高流量,请求了危险的功能
2.盲区:逻辑漏洞
3.评级
4.漏扫工具的解读和应用
复习:
SQL注入主要是由于要执行的数据库代码拼接了用户的输入的数据
获取数据库敏感数据(拖库)
site:搜索特定的站点信息
info:站点的基本介绍
inurl:搜索URL中包含有指定字符串的网址
intitle:搜索网页标题中包含指定的字符串网址
intext:搜索站点页面内容中具备关键字内容的网址
filetype:搜索特定后缀名的文件
bing英文版直接输入ip:xxxxx,同ip站点查询,旁站
实例:
找到目标站点登录地址并暴力破解密码
像查看目标站点有没有泄露的数据库文件
site:http://testphp.vulnweb.com/ inurl:phpinfo.php
交互页面
若是目标站点关闭,能够查看浏览器的缓存:
万物互联:我的计算机和服务器、路由器、智能家居、手机、电脑等
如何把每个接入互联网的设备看做一个节点,就构成了咱们的网络空间
基本原理:探测/爬取--》识别/打标签--》存储拱检索
基本的站点信息探测:whatweb.net
ip查询:www,ipip.nwt
www.cmd5.com
tool.chinaz.com
安全导航站点:www.anquanquan.info/#tools
输入检查:
输出检查;
针对性防护:
WAF:
漏洞知识库
漏洞修复周期
漏洞复查
事件确认:
事件汇报:
事件处理:
归档和复盘:
(Security Development Lifecycle 安全开发生产周期)
旨在从源头下降风险,提高web安全应用的安全性
《互联网企业安全高级指南》 第三章
常见的安全漏洞提交平台:待补充--
FTP是File Transfer Protocol,文件传输协议;
HTTP是Hyper Text Transfer Protocol,超文本传输协议;
FILE是本地文件传输协议
FTP和HTTP同样都是Internet上普遍使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的缘由,是由于FTP协议要用到两个TCP链接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另外一个是数据链路,用来上传或下载数据。
PORT(主动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时,客户端在命令链上用PORT命令告诉服务器:“我打开了XXXX端口,你过来链接我”。因而服务器从20端口向客户端的XXXX端口发送链接请求,创建一条数据链路来传送数据。
PASV(被动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时,服务器在命令链上用PASV命令告诉客户端:“我打开了XXXX端口,你过来链接我”。因而客户端向服务器的XXXX端口发送链接请求,创建一条数据链路来传送数据。
从上面能够看出,两种方式的命令链路链接方法是同样的,而数据链路的创建方法就彻底不一样。而FTP的复杂性就在于此。
当咱们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就能够了,例如http://www.microsoft.com,可是在浏览...w.microsoft.com ,你知道为何会多出一个“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协议。
因为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协议主要用于访问本地计算机中的文件,就如同在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能够建立任何协议的链接,由于其它协议都是基于此的。