初识网络安全
LYT
首页
分类
标签
项目
留言
友链
关于

初识网络安全

2022年5月18日15时44分
2022年5月21日10时39分
网络安全
网络安全
浏览量:
总浏览量:
0

一、常见名词

1、IP欺骗

什么是IP欺骗? IP欺骗就是使用其他计算机的IP来骗取连接,获得信息或者得到特权。通俗的说,就是攻击者将一台计算机的IP地址修改为其它主机的地址,以伪装冒充其他机器。

IP欺骗的原理 首先了解一个网络的具体配置及IP分布,然后改变自己的地址,以假冒身份发起与被攻击方的连接。这样做就可以使所有发送的数据包都带有假冒的源地址。

2、tcp控制位

URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。 ACK: 为确认标志位。如果为1,表示包中的确认号是有效的。否则,包中的确认号无效。 PSH: 如果置位,接收端应尽快把数据传送给应用层。 RST: 用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。 SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。 FIN: 表示发送端已经没有数据要求传输了,希望释放连接。

3、TCP FIN扫描

TCP FIN扫描技术使用FIN数据包探测端口: 当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,且返回一个RST数据包。 当一个FIN数据包到达一个打开的端口,数据包只是简单丢掉(不返回RST数据包)。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。 FIN数据包能通过监测SYN包的包过滤器——TCP FIN扫描又称作秘密扫描。 image-1652847749532 image-1652847759376

4、木马程序

在计算机系统中, “特洛伊木马”指系统中被植入的、人为设计的程序,目的包括通过网络远程控制其他用户的计算机系统,窃取信息资料,并可恶意致使计算机系统瘫痪。有“一经潜入,后患无穷”之意。

5、词典攻击

在破解密码或密钥时,逐一尝试用户自定义词典中的可能密码(单词或短语)的攻击方式。与暴力破解的区别是,暴力破解会逐一尝试所有可能的组合密码,而字典式攻击会使用一个预先定义好的单词列表(可能的密码)。 要素: 黑客了解认证方式(包括认证协议以及地址、端口等信息),如同小偷需要知道库房在哪儿,房门挂着的是大铜锁还是密码锁,甚至虹膜、指纹识别?拿着一串金属钥匙想打开生指纹识别锁显然不现实。 黑客拥有比较全面的口令集,包含着各类常见的弱口令,或者目标系统经常出现的组合口令,或者目标系统曾经泄露的口令集。这样才有更多的尝试机会。通常一次字典攻击的实施还是很耗费时间的,特别是目标系统的口令不那么常见。

6、ARP欺骗

是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。

7、拒绝服务攻击

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。

8、泪滴(Teardrop)攻击

泪滴攻击是拒绝服务攻击的一种。 泪滴是一个特殊构造的应用程序,通过发送伪造的相互重叠的IP分组数据包,使其难以被接收主机重新组合。他们通常会导致目标主机内核失措。 泪滴攻击利用IP分组数据包重叠造成TCP/ IP分片重组代码不能恰当处理IP包,该攻击可以通过TCP/IP协议栈中分片重组代码中的bug来瘫痪各种不同的操作系统

9、SYN Flood

Syn-Flood Attack是一种基于TCP/IP协议的拒绝服务攻击,它会造成服务器TCP连接数达到最大上限,从而不能为新的用户的正常访问请求建立TCP连接,以此达到攻击目的。

10、缓冲区溢出攻击

通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

11、PE文件格式

PE(Portable Executable)格式,是微软Win32环境可移植可执行文件(如exe、dll、vxd、sys和vdm等)的标准文件格式。PE格式衍生于早期建立在VAX(R)VMS(R)上的COFF(Common Object File Format)文件格式。

12、PHP序列化

serialize() 将对象转变成一个字符串便于之后的传递与使用。 序列化会保存对象所有的变量,但是不会保存对象的方法。

13、SQL盲注

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为注。

14、SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

15、反射型XSS

反射XSS攻击也称为非持久XSS攻击,反射型XSS脚本注入的攻击并不存储在应用程序中,而是存储在浏览器客户端,即非持久。只要不通过点击该特定url链接进行访问,就不会引起攻击。

16、文件上传漏洞成因

文件上传漏洞是由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

17、弱口令

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。

18、端口扫描的目的

收集信息,看看开放了哪些端口,扫描端口可以看到被扫描者的电脑上开启了哪些服务,然后从中选出可以利用的。

19、PHP文件上传漏洞

一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能够将这些文件传递给PIHIP解释器,就可以在远程服务器上执行任意PHP脚本

20、xss攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

21、暴力破解

暴力破解是指采用反复试错的方法并希望最终猜对,以尝试破解密码或用户名或找到隐藏的网页,或者找到用于加密消息的密钥。

22、0day

0day中的0表示zero,早期的0day表示在软件发行后的24小时内就出现破解版本,现在我们已经引申了这个含义,只要是在软件或者其他东西发布后,在最短时间内出现相关破解的,都可以叫0day。 0day是一个统称,所有的破解都可以叫0day。

23、1day

就是刚刚公布的漏洞(没有超过一天)。

24、shellcode

shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。

25、call与jmp

CALL调用一段代码,通常这段代码执行到最后有个ret指令,执行该指令就返回到CALL的下一条指令了。 JMP跳转到另一个地方运行,通常不会再转回来了。

call是子程序调用指令,和ret子程序返回配对使用。 jmp 是无条件转移指令,用做强行跳转。

26、栈溢出

栈溢出漏洞是由于使用了不安全的函数,如 C 中的 scanf, strcpy等,通过构造特定的数据使得栈溢出,从而导致程序的执行流程被控制。

27、脱壳

软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉。在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。

28、HOOK钩子

钩子(Hook)是Windows提供的一种消息处理机制平台,是指在程序正常运行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,(钩子)实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

29、端口反弹

反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。反弹窗口木马定时监测控制端的存在,发现控制端上线,立即弹出端口主动连结控制端打开的被动端口;

30、静态调试

静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试。 静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。

31、动态调试

动态调试是指软件作者利用集成环境(IDE)自带的调试器跟踪自己软件的运行,来协助解决自己软件的错误。

32、反序列化

反序列化就是将持久层的数据例如json格式的数据转化为编程语言的数据结构例如数组、对象。 序列化和反序列化本身没有问题,

但是反序列化内容用户可控,

且后台不正当的使用了PHP中的魔法函数,就会导致安全问题。

当传给unserialize()的参数可控时,可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。

二、网络安全常见问题

1、IP地址欺骗中“盲目飞行“的特点

利用这种方法进行欺骗攻击有一些限制,比如说无法建立完整的TCP连接; 但是,对于UDP这种面向无连接的传输协议就不会存在建立连接的问题,因此所有单独的UDP数据包都会被发送到受害者的系统中。

2、比较词典攻击、强行攻击和组合攻击的攻击速度及破解口令的数量

image-1652874391251

3、解释拒绝服务攻击的原理

攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

4、漏洞及漏洞的本质

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。

5、PE文件在硬盘上和在内存里有何不同?

PE文件在硬盘上和在内存里是不完全一样的,被加载到内存以后其占用的虚拟地址空间要比在硬盘上占用的空间大一些,这是因为各个节在硬盘上是连续的,而在内存中是按页对齐的。

6、如何判断一个文件是否PE文件?

DOS头的e_magic字段是否为0x5A4D; NT头的Signature字段是否为0x00004550;

7、HTTP协议与HTTPS协议的主要区别。

1. 安全角度: HTTP协议 属于“明文传输协议”,是以“明文”的方式在网络中传输数据的; 而 HTTPS协议 属于“加密传输协议”,HTTPS协议中传输的数据是需要经过TLS/SSL加密后才进行传输的,因此HTTPS在传输数据方面具有较高的安全性。 2. 端口角度: HTTP协议的端口是:80 HTTP协议的端口是:443 3. 加密与证书角度: HTTP协议 使用明文传输数据,不进行加密处理,不需要向服务端申请证书; HTTPS协议 在TCP三次握手阶段之后,需要进行SSL的handshake,协商加密使用的对称加密密钥,还需要向服务端申请证书,浏览器端安装对应的根证书。

8 是否所有Web应用均易受到SQL注入攻击?

不是,有些web应用有一些安全策略,比如弃用字符串拼接sql,前端传递参数时,做出一些判断再传递

9、说明以下PHP程序的功能,并标注输出结果的含义。

将对象转化成字符串,可以存到持久层中。 image-1652877955709

10、反射型XSS的原理

通过web站点漏洞,向客户端交付恶意脚本代码,实现对客户端 的攻击,主要是利用客户端浏览器来运行恶意脚本

11、比较存储型XSS与反射型XSS的特点(附带dom型)

| 类型 | 是否需要联网 | 脚本解析的位置 |攻击的对象| | --------- | ------------ | -------------- |-------------- | | 反射型xss | 需要 | 浏览器 |攻击者去寻找,发送特定url| | dom型xss | 不需要 | 浏览器 |攻击者去寻找,发送特定url| | 存储型xss | 需要 | 服务器 |只要服务器里面有存储型XSS,不论是不是官网,被攻击对象都会被攻击|

12、说明以下PHP代码中preg_repalce的作用,给出程序注释并写出运行结果。

<?php $str="*as2223adfsf0s4df0sdfsdf##"; echo preg_replace("/[0-9]/","",$str);//去除阿拉伯字数字 echo preg_replace("/[a-z]/","",$str); //去除小写字母 echo preg_replace("/[A-Z]/","",$str); //去除大写字母 echo preg_replace("/[a-z,A-Z]/","",$str); //去除大小写字母 echo preg_replace("/[a-z,A-Z,0-9]/","",$str); //去除大小写字母和阿拉伯数字 ?>

13、说明以下PHP代码中preg_repalce的作用,给出程序注释并写出运行结果

字符串的替代

<?php $str="*as2223adfsf0s4df0sdfsdf*"; echo preg_replace("/[0-9]/","",$str);//去除阿拉伯数字 echo preg_replace("/[a-z]/","",$str); //去除小写字母 echo preg_replace("/[A-Z]/","",$str); //去除大写字母 echo preg_replace("/[a-z,A-Z]/","",$str); //去除大小写字母 echo preg_replace("/[a-z,A-Z,0-9]/","",$str); //去除大小写字母、阿拉伯数字 ?>

14、会话保持攻击

是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。

15、端口反弹木马的原理

木马开发者在分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。 于是,与一般的普通木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。

16、cookie和session的区别与联系。

区别: 1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。 4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 联系: 当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。

17、PHP序列化与反序列化

我们可以把序列化之后的值保存起来,存在文件或者缓存里面。不推荐存在数据库里面,可读性查,而且不便于迁移维护,不便于查询。

unserialize()反序列化函数用于将单一的已序列化的变量转换回 PHP 的值。 如果传递的字符串不可解序列化,则返回 FALSE,并产生一个E_NOTICE 返回的是转换之后的值,可为integer,float、string、array或object 若被反序列化的变量是一个对象,在成功重新构造对象之后,PHP会自动地试图去调用__wakeup()成员函数(如果存在的话)

18 文件上传漏洞的几种绕过方法。

客户端 javascript 检测 (通常为检测文件扩展名) 这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码,最常见的就是检测扩展名是否合法 绕过方式: 1 前端修改允许的类型 2 burp抓包修改 3 禁用javascript(例如火狐浏览器就有禁用JS功能)

服务端检测绕过(MIME 类型检测) 主要是检测Content-Type: 字段 绕过方法: burp抓包修改Content-Type: 为允许的字段 服务端检测绕过(文件扩展名检测) 1 文件名大小写绕过 用像 AsP,pHp 之类的文件名绕过黑名单检测 2 名单列表绕过 用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类 3 特殊文件名绕过 比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。 4 htaccess 文件 配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测 5 写入方法 首先名字为1.php:jpg,会写入一个1.php的空文件,然后再上传一个文件,然后修改名字为3.<<< 这样就会把我们这个文件的内容写入到我们上传的那个1.php空文件中 参考:https://www.waitalone.cn/php-windows-upload.html 6 00截断绕过上传 1.php .jpg 空格二进制20改为00 还有一些图片木马之类的,需要结合文件包含漏洞来解析。

19xss绕过方法

改变大小写 在测试过程中,我们可以改变测试语句的大小写来绕过XSS规则:

比如:<script>alert(“xss”);</script>可以转换为:
<ScRipt>ALeRt(“XSS”);</sCRipT>

关闭标签 有时候我们需要关闭标签来使我们的XSS生效。

比如:“><script>alert(“Hi”);</script>

使用hex编码绕过 我们可以对我们的语句进行hex编码来绕过XSS规则

比如:<script>alert(“xss”);</script>可以转换为:
%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%78%73%73%22%29%3b%3c%2f%73%63%72%69%70%74%3e

利用<>标记注射Html/Javascript 如果用户能随心所欲引入<>标记,那他就能操作HTML标记,然后就能通过```

<script>标签插入JS恶意脚本了,例如:

<script>alert(‘XSS‘);</script>

当然如果对"<>"和script等进行了过滤,上面这个就无法执行了

利用HTML标签属性值执行XSS 很多HTML标记中的属性都支持javascript:[code]伪协议的形式,这就给了注入XSS可乘之机,例如:

<img src = "javascript:alert(‘xss‘);">

这里即便对传入的参数过滤了<>,XSS还是能发生(前提是该标签属性需要引用文件) 产生自己的事件 如果不能依靠属性进行跨站,那么还可以利用事件处理函数

<input type = "button"  value = "clickme" οnclick="alert(‘click me‘)" />

事件既能让JS脚本运行,自然也可以执行跨站,另外像onerror、onMouseover等都可利用的是事件处理函数

20sql注入绕过

大小写绕过 内联注释绕过 双关键字绕过 编码绕过 空格绕过 like绕过