网络安全领域部分内容简述及理论实现
网络安全领域部分内容简述及理论实现
1、X-Forwarded-For 伪造
原理:X-Forwarded-For 是一个 HTTP 扩展头部,用来表示HTTP请求端真实 IP。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
漏洞:X-Forwarded-For可被读写,修改。因此,客户端可以自行编辑请求头,查看,修改,或者伪造IP地址
使用工具:postman,Apifox
2、明文传输
原理:在客户端与服务器进行通信时,不对原始数据加密,直接封装成请求包传输。
漏洞:数据未加密,容易被他人通过抓包工具窃取敏感信息。
使用工具:burp、wireshark、filder(抓包工具)
3、不安全的 HTTP Methods
原理:http约定了通信通信的方式,在应用上体现为请求包与响应包的格式。同时协议也定义了一系列的请求方法(也称为HTTP方法),它们指示客户端向服务器发送什么样的操作。常见的HTTP方法包括:
- GET:用于从服务器获取资源。它是最常用的HTTP方法,不会改变服务器的状态,只是请求数据。
- POST:用于向服务器提交数据,通常用于创建、更新或删除资源。数据会包含在请求体中。
- PUT:用于替换指定资源的内容,如果该资源存在则更新,不存在则新建。
- PATCH:用于部分地修改指定资源,对资源的某个部分进行更新。
- DELETE:用于删除服务器上指定的资源。
- HEAD:类似于GET,但只返回头部信息,不返回响应内容,常用于验证URL的有效性。
- OPTIONS:请求服务器提供关于支持的HTTP方法和其他特性的信息。
- COPY:将指定资源复制到新的位置。
- MOVE:移动指定资源并将其永久移动到新位置,原位置可能会被移除。
LINK 和 UNLINK:分别用于关联和断开资源之间的链接关系。
漏洞:他人可通过抓包工具获取并拦截数据包,修改其中的 HTTP Methods,再次发送数据包,查看返回结果,可能会获取到服务器相关信息,会威胁通信安全。参考链接
使用工具:Fiddler等抓,改包工具。(工具使用参考)
4、任意文件探测
[参考链接](https://blog.csdn.net/weixin_62421736/article/details/130978945?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172103199616800188581959%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172103199616800188581959&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-130978945-null-null.142^v100^pc_search_result_base6&utm_term=%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E6%8E%A2%E6%B5%8B&spm=1018.2226.3001.4187)
原理:网站可以上传,且上传的文件可以被应用程序处理和访问。
漏洞:若由于网站存在配置缺陷,导致网站目录可以被任意浏览,这会导致网站很多隐私文件与目录泄露,比如[数据库备份](https://cloud.tencent.com/product/dbs?from_column=20065&from=20065)文件、配置文件等,攻击者可以直接访问敏感文件。或者攻击者可以上传一个包含恶意代码的文件,该文件通常伪装成合法文件,如图片或文档。Web应用程序处理上传的文件,可能是将其保存到服务器上的某个目录,或者是在服务器上执行该文件。由于应用程序的安全措施不完善,攻击者可以利用漏洞来访问和读取服务器上的任意文件,包括敏感文件,如配置文件、日志文件或数据库备份文件。攻击者通过读取敏感文件,获取服务器或应用程序的内部信息,如数据库凭据、用户列表、系统配置等。这会导致严重的信息泄露和安全问题。(可通过robots.txt得到网站可爬取的目录)
使用工具:包含恶意代码的文件(?)
5、加密方式不安全
[加密参考](https://hello-ctf.com/HC_Crypto/Encode/)
原理:客户端与服务器进行通信时,通过各类算法加密原始数据后,封装成请求包传输。
漏洞:加密方式不安全,被攻击者通过各种方式破解,如暴力枚举,获取密钥等,获取敏感信息。
使用工具:抓包工具,CyberChef,Ciphey等编码解码工具。
6、使用不安全的 telnet 协议
[参考链接](https://blog.csdn.net/aliven1/article/details/113415807?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172103256416800185860276%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172103256416800185860276&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-113415807-null-null.142^v100^pc_search_result_base6&utm_term=%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%AE%89%E5%85%A8%E7%9A%84%20telnet%20%E5%8D%8F%E8%AE%AE&spm=1018.2226.3001.4187)
原理:**[Telnet](https://baike.baidu.com/item/Telnet/810597)**协议简单、易用,它的功用就是在机器间传输简单信息。理论上,我们就可以使用 Telnet 来与远端机器通信,比如与我们的服务器通信。
漏洞:它太简单基础,因此传输的信息并没有经过加密,而是明文传输。转到第2点。
使用工具:抓包工具。
7、未授权访问
[参考链接](https://blog.csdn.net/A526847/article/details/138300539?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172103312516800180641331%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172103312516800180641331&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-6-138300539-null-null.142^v100^pc_search_result_base6&utm_term=%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE&spm=1018.2226.3001.4187)
原理:用户访问往往需要权限。
漏洞:未授权访问是系统对用户限制不全,或者无限制,可以让任意用户或者限制访问用户,访问到需要权限认证的地址。未授权访问通常是会泄露用户信息,系统信息。某些服务和系统中,未授权访问还可以执行系统命令,操作系统文件,导致系统的整体安全遭到破坏。就好比:未经过主人家授权偷偷进去这种方式就叫做未授权。该漏洞主要基于系统或资源的安全配置不当、认证机制的缺陷或者用户行为的疏忽。当系统未能正确实施访问控制策略,或者用户能够以某种方式绕过这些策略时,就可能发生未授权访问。
使用工具:无
8、验证码缺陷
[参考链接](https://blog.csdn.net/cnds123/article/details/137007614?ops_request_misc=&request_id=&biz_id=102&utm_term=%E9%AA%8C%E8%AF%81%E7%A0%81&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-137007614.142^v100^pc_search_result_base6&spm=1018.2226.3001.4187)
原理:验证码(Verification Code)是一种用于确认用户身份或操作有效性的安全机制。通常情况下,验证码是一串由数字、字母或符号组成的随机生成的字符串,用户需要输入正确的验证码才能继续进行操作。
涉及重要资产、高风险操作、特权认证的场景,都需要最严格的验证码防护,以保护系统、交易和账户的安全。适当的验证码设计,可以大幅降低系统风险。
验证码的作用是用于验证用户身份,防止恶意破解密码、刷票、论坛灌水、刷页。验证码通常用于注册账户、登录、重置密码等操作中,帮助确保用户的安全和隐私。
对于网站而言, 验证码的生成通常在服务器端完成, 而验证过程可以在前端和后端都进行。具体来说:
生成验证码: 服务器端生成验证码图像或字符串, 并将其存储在服务器端 (如 Session 或内存缓存中), 以便后续进行验证。这样可以避免客户端预测验证码的风险。
漏洞:程序设计产生的问题会给验证码造成缺陷,大致有以下几种:
1、无效验证
2、客户端验证绕过
3、短信轰炸
4、验证码爆破
5、验证码与手机号未绑定
使用工具:抓包工具等。
9、反序列化命令执行
原理:
- 序列化:将对象状态信息转换为可以存储或传输的形式(如字节流,字符串)的过程。
- 反序列化:将序列化后的数据恢复成原始对象状态的过程
漏洞:
- 攻击者创建一个对象,该对象在反序列化时将执行特定的命令。这通常涉及到寻找可以在反序列化时触发的特殊方法,如
__wakeup()
、__destruct()
在PHP中,或者类似的生命周期方法在其他编程语言中。 - 序列化恶意对象:攻击者将这个对象序列化为一个数据流,通常是二进制或字符串格式。
- 传输序列化数据:攻击者将序列化后的数据发送给目标应用程序,通常是通过Web请求、文件上传或其他数据传输方式。
- 反序列化过程:目标应用程序接收到数据后,会尝试将其反序列化为对象。
- 执行命令:如果应用程序没有正确地验证或限制了反序列化的数据,那么在反序列化过程中,恶意对象中的代码将被执行,从而可能在服务器上执行任意命令。
使用工具:PHP,恶意对象(雾)
10、用户名,用户密码枚举
原理:在登陆过程中,服务器会发送响应包返回结果。
漏洞:返回结果提供了有效信息,可帮助恶意用户通过暴力枚举排除错误的用户名和密码,得到正确的用户名和密码。
使用工具:BurpSuite
11、用户弱口令
原理:即用户的密码安全性低,容易被猜测或破解的一类口令,通常包括简单的数字、字母组合,如“123456”、“password”等。由于它们缺乏复杂性和唯一性,一旦网络上发生数据泄露,攻击者能够轻易尝试这类口令来访问用户的账户。参考第10点。
12、会话标志固定攻击
原理:
- Cookie介绍
Cookie的传递用到了两个字段: 请求头字段Cookie和响应头字段Set-Cookie。
当用户浏览器第一次访问服务器的时候,服务器肯定是不知道他的身份的。所以,就要创建一个独特的身份识别数据,格式是"key=value", 然后放进Set-Cookie字段里。随着响应报文一同发给浏览器。
浏览器收到响应报文,看到里面的Set-Cookie,知道这时服务器给的身份标识,于是就保存起来,下次再请求的时候 就自动把这个值放进Cookie字段里发给服务器。
因为第二次请求里面有了 Cookie 字段,服务器就知道这个用户不是新人,之前来过,就可以拿出 Cookie 里的值,识别出用户的身份,然后提供个性化的服务。
服务器有时会在响应头里添加多个 Set-Cookie,存储多个“key=value”。但浏览器这边发送时不需要用多个 Cookie 字段,只要在一行里用“;”隔开就行。
Cookie是由浏览器负责存储的,而不是操作系统。
2.session 介绍
session 是服务端的一个概念,服务端生成session都会生成一个对应的SessionID,这个SessionId 会通过Cookie传递给前端,前端以后发送请求的时候,都会带上sessionID的参数,服务端看到请求中带了sessionId, 就会根据这个sessionID 取出对应的session信息。
浏览器的关闭不会导致服务器的session失效,服务端session失效只有两种情况:一是session过期,二
是session的invalidate方法,还有就是重启客户端。
为什么我们平时觉得浏览器关闭了,session就失效了吗?这是因为浏览器里面的sessionID丢了,所以当浏览器再次访问服务器端的时候,服务器会重新给浏览器分配一个sessionId ,这个sessionId和 之前的那么session对应不上,所以用户就会感觉session失效。
漏洞:登录后的sessionId和登录前的SessionId 没有变化。会话固定(Session fixation)是一种诱骗受害者使用攻击者指定的会话标识(SessionID)的攻击手段。这是攻击者获取合法会话标识的最简单的方法。(让合法用户使用黑客预先设置的sessionID进行登录,从而是Web不再进行生成新的sessionID,从而导致黑客设置的sessionId变成了合法桥梁。)
一般流程:
1.攻击者打开一个登录页面
2.服务端会返回攻击者一个sessionId = 123xyz
3.攻击者发送一个伪装连接并带上sessionId
4.然后正常用户接到后,点击进行登录
5.这时候服务端sessionID=123xyz的session已经存在
6.这时,有了这个sessionID ,攻击者就可以正大光明的访问漏洞系统,窃取信息了。
使用工具:恶意链接及抓包工具
13、平行越权访问,垂直越权访问
原理:抓包后改包。一个平台上只有一个账号,通过在自己的账号里可以抓到包的ID,使自己虽然用户还是自己的情况下,但可以看到不是其他用户的信息,并且可以篡改这个ID的信息。这才是水平越权。垂直越权即通过改包获得管理员权限。
14、业务逻辑漏洞
原理:指业务逻辑在设计或具体实现上的缺陷导致攻击者可以利用的漏洞。攻击者通常使程序处于不寻常的“状态”,导致业务逻辑不能正确处理,在这种情况下利用现成的逻辑或函数达成恶意的目标。业务逻辑在设计或具体实现上的缺陷导致攻击者可以利用的漏洞。攻击者通常使程序处于不寻常的“状态”,导致业务逻辑不能正确处理,在这种情况下利用现成的逻辑或函数达成恶意的目标。
15、短信炸弹
原理:通过抓包等方式得到用户手机号码,随后截获发送短信验证码的报文(响应包)进行重放造成攻击。
16、Flash 未混淆导致反编译
原理:
Adobe Flash是一种用于创建交互式动画和应用程序的软件。它曾经是网页上非常流行的技术,SWF(ShockWave Flash)是Adobe Flash的文件格式,用于存储Flash动画和应用程序。SWF文件包含了用于显示动画和控制交互的代码和资源。反编译是将计算机程序从其可执行形式转换回高级语言源代码的过程。对于Flash来说,就是将SWF文件转换回ActionScript(Flash的编程语言)源代码的过程。混淆是一种保护源代码的技术,通过改变代码的结构和变量名,使其难以阅读和理解,从而防止反编译。如果Flash文件未经过混淆,它的代码结构将保持原始状态,更容易被理解和修改。
操作流程
- 捕获SWF文件:攻击者首先需要获取SWF文件,这通常通过在下载,抓包等方式实现
- 使用反编译工具:有许多工具可以用来反编译SWF文件,如JPEXS, SWFDecompiler, Flash Decompiler Trillix等。
- 还原源代码:反编译工具会将SWF文件中的字节码转换回ActionScript源代码。如果代码未混淆,这个过程会相当直接和简单。
- 分析代码:一旦源代码被还原,攻击者可以分析代码来查找安全漏洞、提取敏感信息或理解程序逻辑。
17、中间件配置缺陷
原理:中间件(Middleware)顾名思义是系统软件和用户软件之间连接的软件,以便于软件各部分之间的沟通,特别是应用软件对于系统软件的集中逻辑,是一种独立的系统或者服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件在客户端服务器的操作系统、网络和数据库之上,管理计算机资源和网络通信。总的作用是为处于自己上层的应用软件提供运行和开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件
关于中间件,我们可以理解为:是一类能够为一种或者多种应用程序合作互通、资源共享同时还能够为应用程序提供相关的服务的软件。中间件是一类软件统称,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作
参考该链接)查看常见中间件配置缺陷
18、中间件弱口令
中间件弱口令(Weak Password)是指在配置中间件时使用的安全凭据过于简单、容易猜测或容易被破解。弱口令是网络安全中的一个常见问题,它可能导致未经授权的访问、数据泄露或其他安全事件。参考11点。
19、Jboss 反序列化命令执行,Websphere 反序列化命令执行,Jenkins 反序列命令执行
Jboss 反序列化命令执行参考链接,Websphere 反序列化命令执行参考链接, Jenkins 反序列命令执行参考链接
原理:序列化定义参考9点。链接内有详细定义解释与漏洞复现操作。
20、JBoss 远程代码执行
原理:链接内有详细定义解释与漏洞复现操作。
21、Apache Tomcat 样例目录session 操纵
链接,内有原理及漏洞复现。