【持续更新】【课程笔记】小迪安全课程知识笔记

图片[1] - 【持续更新】【课程笔记】小迪安全课程知识笔记 - 极核GetShell

前言

由于基础课过于基础,笔者只挑选重要的进行记录,有些已经掌握的便不再重复记录。

域名网站的分类

  • 主站点
根域名站点:get-shell.com
www站点:www.get-shell.com
  • 分站点(子域名站点)
子域名站点:hackhub.get-shell.com
多级子域名站点:test.hackhub.get-shell.com
  • 端口站
status.get-shell.com:8080
  • 目录站
tool.get-shell.com/web/

APP的开发分类

  • 原生开发:APP原生开发架构通常指的是在特定的移动操作系统平台上,使用官方提供的开发语言、开发类库和开发工具进行应用程序开发的方法。原生应用使用平台特定的编程语言和工具进行开发。例如,Android平台通常使用Java或Kotlin,而iOS平台使用Objective-C或Swift
  • 网页打包APP:网页打包APP是一种技术,它允许将网页应用程序封装成原生应用程序的形式,以便在移动设备上运行。这种技术的核心在于使用WebView控件将网页嵌入到原生应用程序中,使其可以像原生应用程序一样运行。

漏洞复现无回显

漏洞复现无回显是指在漏洞复现的过程中,攻击者虽然能够触发漏洞,但是无法直接看到漏洞触发的结果或者输出。这种情况通常发生在服务器配置或者环境限制了输出,导致攻击者无法直接获取到漏洞利用的结果。在这种情况下,攻击者需要采用一些特殊的技术或方法来间接验证漏洞的存在和利用效果。验证的意义在于是否存在命令执行漏洞。

造成的原因一般是代码层面的函数方法的问题,有的函数可以执行命令并且回显,有些函数则只能命令执行不能回显。


1、反弹权限(反弹Shell)

在目标主机上执行反弹Shell命令,一键生成反弹Shell:Online – Reverse Shell Generator

2、数据带外

就是让目标主机执行一些命令,然后在服务端开启监听,如果目标主机执行命令后,服务端有访问痕迹,说明就是成功执行。

常用的方法有DNSLOG验证、Ping验证等。

3、延迟判断

有点类似于SQL注入的延时注入,可以用Ping命令验证,例如:Linux的 ping -c 3 是执行三秒的ping、Windows的ping -n 3 是执行三秒的ping正常情况下命令执行后,HTTP请求响应包的时间应该在3秒左右。

4、写可访问文件

利用写文件的命令来验证是否存在漏洞,例如:echo test > 1.txt 这样写了1.txt到当前工作目录,如果可访问到,说明存在命令执行。

数据传输格式

HTTP数据传输格式是指在客户端和服务器之间通过HTTP协议传递数据的格式。常见的HTTP数据传输格式包括以下几种:

  • JSON
  • XML
  • HTML
  • websocket
  • Plain Text(普通文本)
  • Form Data(HTML表单数据)
  • 二进制

JSON

格式:application/json,用途:现代Web应用中用于传输结构化数据,尤其是RESTful API。

{
  "id": 2,
  "name": "Bob",
  "email": "bob@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Springfield",
    "state": "IL",
    "postalCode": "62704"
  }
}
  • JSON
  • XML
  • HTML
  • Plain Text(普通文本)
  • Form Data(HTML表单数据)
  • 二进制

XML

复杂嵌套结构,举例:描述一个订单信息,包括用户信息和商品列表

<Order>
    <OrderID>1001</OrderID>
    <Date>2024-12-03</Date>
    <Customer>
        <ID>1</ID>
        <Name>Alice</Name>
        <Email>alice@example.com</Email>
    </Customer>
    <Items>
        <Item>
            <ProductID>501</ProductID>
            <ProductName>Laptop</ProductName>
            <Quantity>1</Quantity>
            <Price>1200.50</Price>
        </Item>
        <Item>
            <ProductID>502</ProductID>
            <ProductName>Mouse</ProductName>
            <Quantity>2</Quantity>
            <Price>25.00</Price>
        </Item>
    </Items>
    <TotalAmount>1250.50</TotalAmount>
</Order>

WebSocket

WebSocket 是一种全双工通信协议,允许客户端和服务器之间保持一个长连接,并可以在连接上自由交换数据。以下是 WebSocket 的通信示例,包括握手阶段数据传输阶段

WebSocket 握手阶段

客户端请求(HTTP 升级请求)

GET /chat HTTP/1.1
Host: example.com:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Origin: http://example.com

服务器响应(升级确认)

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

WebSocket 数据传输阶段

客户端发送数据帧

WebSocket 数据是以帧的形式发送的,以下是一个简单的文本帧示例(JSON 格式):

帧的内容:

{
  "type": "message",
  "data": "Hello, Server!"
}

通过 WebSocket 协议发送,帧在二进制形式中表现如下:

0x81 0x12 0x7B 0x22 0x74 0x79 0x70 0x65 0x22 0x3A 0x22 0x6D 0x65 0x73 0x73 0x61 0x67 0x65 0x22 0x2C 0x22 0x64 0x61 0x74 0x61 0x22 0x3A 0x22 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x53 0x65 0x72 0x76 0x65 0x72 0x21 0x22 0x7D

服务器发送数据帧

服务器回应一个文本帧:

{
  "type": "response",
  "data": "Hello, Client!"
}

对应的二进制帧内容:

0x81 0x11 0x7B 0x22 0x74 0x79 0x70 0x65 0x22 0x3A 0x22 0x72 0x65 0x73 0x70 0x6F 0x6E 0x73 0x65 0x22 0x2C 0x22 0x64 0x61 0x74 0x61 0x22 0x3A 0x22 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x43 0x6C 0x69 0x65 0x6E 0x74 0x21 0x22 0x7D

加密算法

单向散列加密 – MD5 SHA AMC CRC

解密一般是碰撞解密,加密具有唯一性,解密的几率看明文的复杂程度

MD5密文特点:1、由数字“0-9”和字母“a-f”所组成的字符串 2、固定的位数 16 和 32位


对称加密 – AES DES RC4

解密条件:密文及密钥偏移量,采用逆向算法解密,条件成立即可解密成功

对称加密优点是算法公开、计算量小、加密速度快、加密效率高。缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。

AES、DES密文特点:1、同BASE64基本类似,但一般会出现”/”和”+”在密文中。2、解密需求:密文,模式,加密Key,偏移量,条件满足才可解出


非对称加密 – RSA RSA2 PKCS

解密条件:密文和公钥或私钥,采用逆向算法解密,条件成立即可解密成功

非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

RSA密文特点:1、特征同AES,DES相似,但是长度较长。2、解密需求:密文,公钥或私钥即可解出(公钥加密就需要私钥解密、私钥加密就需要公钥解密)

HTTP与HTTPS区别

HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是两种用于传输数据的协议。它们的主要区别如下:

1. 安全性

  • HTTP: 数据在数据传输中以明文形式传输,容易被中间人窃取或篡改。

HTTP示例请求报文

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

username=admin&password=123456

HTTP示例响应报文

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 25

Welcome, admin!
  • HTTPS: 数据经过加密后传输,使用SSL/TLS协议保护数据的完整性和保密性,能有效防止数据泄露和被篡改。

HTTPS示例请求报文

POST /login HTTP/1.1
Host: example.com
[加密数据,不可见明文]

HTTPS示例响应报文

HTTP/1.1 200 OK
[加密数据,不可见明文]

2. 加密与认证

  • HTTP: 不提供数据加密或身份认证,通信内容可以被截获。
  • HTTPS: 使用SSL/TLS协议进行数据加密,并通过数字证书验证服务器的身份。

3. 端口

  • HTTP: 默认使用80端口。
  • HTTPS: 默认使用443端口。

OAuth身份鉴权技术

OAuth是一个开放标准,允许用户授权第三方应用访问他们存储在另一个服务上的信息,而无需将用户名和密码提供给第三方应用想象一下各种应用的QQ登录或者微信登录)。这种授权过程通常涉及到用户、资源所有者(用户本人)、服务提供商(用户信息存储的地方)和客户端(请求访问用户信息的第三方应用)。

OAuth有多个版本,其中最常用的是OAuth 2.0,它提供了更灵活的授权流程,并且适用于不同的客户端类型,如Web应用、桌面应用和移动应用等。OAuth 2.0定义了四种授权流程:授权码流程(Authorization Code Grant)、密码流程(Resource Owner Password Credentials Grant)、客户端凭据流程(Client Credentials Grant)和简化流程(Implicit Grant)

OAuth授权流程

1、用户同意授权

第三方应用将用户重定向到授权服务器,用户登录并同意授权请求。

请求示例-授权服务器(Authorization Code 模式)

GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=SCOPE
Host: accounts.google.com
图片[2] - 【持续更新】【课程笔记】小迪安全课程知识笔记 - 极核GetShell
图片[3] - 【持续更新】【课程笔记】小迪安全课程知识笔记 - 极核GetShell

2、授权服务器颁发授权码

用户同意后,授权服务器将用户重定向回第三方应用的回调地址,并附带一个授权码(Authorization Code)。重定向示例:

https://example.com/callback?code=AUTH_CODE

3、客户端交换授权码获取访问令牌

客户端使用授权码向授权服务器发送请求,获取访问令牌。

请求数据包

POST /token
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code&code=AUTH_CODE&redirect_uri=CALLBACK_URL

响应数据包

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "REFRESH_TOKEN"
}

4、使用访问令牌访问资源

客户端携带访问令牌向资源服务器请求用户资源。

请求数据包

GET /drive/v2/files
Host: www.googleapis.com
Authorization: Bearer ACCESS_TOKEN
图片[4] - 【持续更新】【课程笔记】小迪安全课程知识笔记 - 极核GetShell
图片[5] - 【持续更新】【课程笔记】小迪安全课程知识笔记 - 极核GetShell

ChatGPT专业模型

有些已经训练好的模型可以更方便在专业的方向获取到答案,模型链接:

红蓝队常用系统命令

命令速查:RedTeam And Command

批量Ping检测存活

# Linux
seq 1 255 | xargs -P 10 -I {} sh -c 'ping -c 1 -W 1 192.168.1.{} | grep "64 bytes" && echo 192.168.1.{} is alive

# Windows
for /L %i in (1,1,254) do @ping -n 1 -w 1000 192.168.1.%i | find "TTL=" && echo 192.168.1.%i is alive

批量检测端口开放情况(内网快)

# Linux
seq 1 65535 | xargs -P 10 -I {} bash -c '(echo > /dev/tcp/192.168.1.1/{}) >/dev/null 2>&1 && echo "Port {} is open"' 

1 2 3

THE END
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞90 分享
茶谈区 共44条

请登录后发表评论