安全实战培训

第一课

在合规情况下,给出一个测试目标(单位:北邮,靶标:运维系统),请给出渗透思路。

首先是做信息收集:

  • 从北邮的校园网站开始,获取学校的基本信息,建立起对目标的基本认识
  • 借助于多个在线工具,获取 WHOIS 信息、DNS 历史解析信息、相关 IP 段等信息,多渠道对比验证,确定目标的真实 IP
  • 对子域名信息进行采集
  • 敏感信息收集。通过 FOFA、SHADON 等搜索引擎搜索北邮的网络资产、后台管理界面等等,借助于 Google 搜索北邮的学号、系统、VPN、后台、文件等等资产信息
  • 确定目标后,根据已有的信息可以尝试钓鱼、弱密码等。充分北邮的学号信息、默认密码信息等信息
  • 对各个子域名和后台登录界面进行渗透测试,使用内部虚拟机和梯子,连接国外的 VPS 进行操作,防止被 WAF 拦截可以使用代理池
  • 登录成功后收集一波信息,然后考虑如何 getshell,看是否有登录平台存在解析和反序列化漏洞或者常见其他的漏洞
  • getshell 后使用 fscan 进行内网的信息收集,确定网络的拓扑结构,进一步寻找运维系统所在。之后进行内网的横向移动和提权等操作。

第二课

本次任务:

1、搭建burpsuit;java

2、观察分析 http 请求,http 状态码

分别代表什么;

3、nmap、fscan 的使用(内网对自己的目标使用)

一、

二、

http 请求

  1. 请求行:
    请求行包含了请求的方法、目标URL和所使用的HTTP协议版本。

    1
    GET /api/users HTTP/1.1
    • GET: 请求方法,指示客户端要获取指定URL的资源。
    • /api/users: 请求的路径和资源。在此示例中,请求的是 /api/users 路径下的资源。
    • HTTP/1.1: 所使用的HTTP协议版本。
  2. 请求头:
    请求头包含了额外的信息和元数据,用于描述请求的细节和要求。

    1
    2
    3
    Host: example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
    Accept: application/json
    • Host: 指定服务器的主机名或IP地址,用于告知服务器请求的目标主机。
    • User-Agent: 标识发送请求的用户代理(浏览器或其他客户端应用程序)的信息。
    • Accept: 告知服务器客户端所能够接受的响应内容类型。在此示例中,客户端可以接受JSON格式的响应。
  3. 请求体(Body):
    请求体包含了实际的请求数据,通常用于POST、PUT等请求方法。

    1
    2
    3
    4
    Content-Type: application/json
    Content-Length: 35

    {"name": "John Doe", "age": 30}
    • Content-Type: 指定请求体中的数据类型。在此示例中,数据以JSON格式编码。
    • Content-Length: 请求体的长度,以字节为单位。
    • 请求体内容:包含了实际的请求数据。在此示例中,请求体包含了一个JSON对象,包含了名为”name”的字段和名为”age”的字段。

这些字段共同构成了一个完整的HTTP请求,通过它们,客户端向服务器发送请求,并传递所需的信息、参数和数据。服务器根据这些字段来理解和处理请求,然后返回相应的响应给客户端。

http 状态码:

  1. 200 OK: 表示请求成功。服务器成功处理了客户端的请求,并返回了请求的资源。
  2. 201 Created: 表示请求已成功处理,并在服务器上创建了新的资源。
  3. 204 No Content: 表示请求已成功处理,但服务器没有返回任何内容。一般在不需要返回响应主体的情况下使用,例如删除操作。
  4. 400 Bad Request: 表示服务器无法理解客户端发送的请求。可能是请求语法错误、参数错误等。
  5. 401 Unauthorized: 表示请求要求身份验证。客户端必须提供有效的身份验证凭据才能访问受保护的资源。
  6. 403 Forbidden: 表示服务器理解请求,但拒绝执行。客户端没有访问请求的资源的权限。
  7. 404 Not Found: 表示请求的资源不存在。服务器无法找到请求的资源。
  8. 500 Internal Server Error: 表示服务器遇到了意外的错误,导致无法完成请求。
  9. 503 Service Unavailable: 表示服务器暂时无法处理请求,通常是由于服务器过载或维护。

三、

nmap cheatsheet

nmap –min-rate 5000 -p- 192.168.1.1 扫描存活的TCP端口
nmap -iL target.txt 扫描文件中的目标
nmap –exclude 192.168.1.1 排除列出的主机
nmap -sT 192.168.1.1 TCP 连接端口扫描
nmap -sU 192.168.1.1 UDP 端口扫描
nmap 192.168.1.1 –top-ports 2000 扫描前2000个端口
nmap 192.168.1.1 -sV -p 22 端口上运行的服务的版本
nmap 192.168.1.1 -O 使用 TCP/IP 进行远程 OS 指纹识别
nmap –proxies http://191.1.1.1:1080,http://192.2.2.2:1080 192.168.1.1 通过HTTP/SOCKS4代理中继连接
nmap -D 10.1.1.1,20.2.2.2 192.168.1.1 使用-D 选项就可以达到 IP 欺骗的目的
nmap 192.168.1.1 -sC 使用默认的 NSE 脚本进行扫描
nmap 192.168.1.1 –script=vuln 扫描常见漏洞
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
┌──(kali㉿kali)-[~]
└─$ sudo nmap --min-rate 10000 -p- 192.1.1.138
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org ) at 2023-06-16 22:28 EDT
Nmap scan report for nyx.zte.com.cn (192.1.1.138)
Host is up (0.00020s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 00:0C:29:A7:F7:7B (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.05 seconds

┌──(kali㉿kali)-[~]
└─$ sudo nmap -sT -sV -O -sC -p22,80 192.1.1.138
Starting Nmap 7.92 ( https://nmap.org ) at 2023-06-16 22:28 EDT
Nmap scan report for nyx.zte.com.cn (192.1.1.138)
Host is up (0.00047s latency).

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 fc:8b:87:f4:36:cd:7d:0f:d8:f3:16:15:a9:47:f1:0b (RSA)
| 256 b4:5c:08:96:02:c6:a8:0b:01:fd:49:68:dd:aa:fb:3a (ECDSA)
|_ 256 cb:bf:22:93:69:76:60:a4:7d:c0:19:f3:c7:15:e7:3c (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: nyx
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 00:0C:29:A7:F7:7B (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.27 seconds

开放了 22 和 80 端口,debian 操作系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
┌──(kali㉿kali)-[~]
└─$ sudo nmap --top-ports 20 -sU 192.1.1.138
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org ) at 2023-06-16 22:28 EDT
Nmap scan report for nyx.zte.com.cn (192.1.1.138)
Host is up (0.00027s latency).

PORT STATE SERVICE
53/udp closed domain
67/udp closed dhcps
68/udp open|filtered dhcpc
69/udp open|filtered tftp
123/udp open|filtered ntp
135/udp closed msrpc
137/udp open|filtered netbios-ns
138/udp closed netbios-dgm
139/udp closed netbios-ssn
161/udp closed snmp
162/udp open|filtered snmptrap
445/udp closed microsoft-ds
500/udp open|filtered isakmp
514/udp closed syslog
520/udp closed route
631/udp closed ipp
1434/udp open|filtered ms-sql-m
1900/udp open|filtered upnp
4500/udp closed nat-t-ike
49152/udp open|filtered unknown
MAC Address: 00:0C:29:A7:F7:7B (VMware)

Nmap done: 1 IP address (1 host up) scanned in 5.84 seconds

udp 的扫描结果仅供参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=vuln -p22,80 192.1.1.138
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org ) at 2023-06-16 22:29 EDT
Nmap scan report for nyx.zte.com.cn (192.1.1.138)
Host is up (0.00023s latency).

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
| http-enum:
|_ /d41d8cd98f00b204e9800998ecf8427e.php: Seagate BlackArmorNAS 110/220/440 Administrator Password Reset Vulnerability
|_http-dombased-xss: Couldn\'t find any DOM based XSS.
|_http-csrf: Couldn\'t find any CSRF vulnerabilities.
|_http-stored-xss: Couldn\'t find any stored XSS vulnerabilities.
MAC Address: 00:0C:29:A7:F7:7B (VMware)

Nmap done: 1 IP address (1 host up) scanned in 31.85 seconds

Kali Linux 上 fscan 安装

  • go 环境安装
    • rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz 可能需要 sudo 权限
    • export PATH=$PATH:/usr/local/go/bin 写入用户目录下的 .zshrc 文件
  • build
    1
    2
    ┌──(kali㉿kali)-[~/tools/fscan]
    └─$ go build -ldflags="-s -w " -trimpath main.go
  • 运行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    ┌──(kali㉿kali)-[~/tools/fscan]
    └─$ ./main -h

    ___ _
    / _ \ ___ ___ _ __ __ _ ___| | __
    / /_\/____/ __|/ __| __/ _` |/ __| |/ /
    / /_\\_____\__ \ (__| | | (_| | (__| <
    \____/ |___/\___|_| \__,_|\___|_|\_\
    fscan version: 1.8.2
    flag needs an argument: -h
    Usage of ./main:
    -br int
    Brute threads (default 1)
    -c string
    exec command (ssh|wmiexec)
    -cookie string
    set poc cookie,-cookie rememberMe=login
    -debug int
    every time to LogErr (default 60)
    -dns
    using dnslog poc
    -domain string
    smb domain
    -full
    poc full scan,as: shiro 100 key
    -h string
    IP address of the host you want to scan,for example: 192.168.11.11 | 192.168.11.11-255 | 192.168.11.11,192.168.11.12
    -hash string
    hash
    -hf string
    host file, -hf ip.txt
    -hn string
    the hosts no scan,as: -hn 192.168.1.1/24
    -m string
    Select scan type ,as: -m ssh (default "all")
    -no
    not to save output log
    -nobr
    not to Brute password
    -nopoc
    not to scan web vul
    -np
    not to ping
    -num int
    poc rate (default 20)
    -o string
    Outputfile (default "result.txt")
    -p string
    Select a port,for example: 22 | 1-65535 | 22,80,3306 (default "21,22,80,81,135,139,443,445,1433,1521,3306,5432,6379,7001,8000,8080,8089,9000,9200,11211,27017")
    -pa string
    add port base DefaultPorts,-pa 3389
    -path string
    fcgi、smb romote file path
    -ping
    using ping replace icmp
    -pn string
    the ports no scan,as: -pn 445
    -pocname string
    use the pocs these contain pocname, -pocname weblogic
    -pocpath string
    poc file path
    -portf string
    Port File
    -proxy string
    set poc proxy, -proxy http://127.0.0.1:8080
    -pwd string
    password
    -pwda string
    add a password base DefaultPasses,-pwda password
    -pwdf string
    password file
    -rf string
    redis file to write sshkey file (as: -rf id_rsa.pub)
    -rs string
    redis shell to write cron file (as: -rs 192.168.1.1:6666)
    -sc string
    ms17 shellcode,as -sc add
    -silent
    silent scan
    -socks5 string
    set socks5 proxy, will be used in tcp connection, timeout setting will not work
    -sshkey string
    sshkey file (id_rsa)
    -t int
    Thread nums (default 600)
    -time int
    Set timeout (default 3)
    -top int
    show live len top (default 10)
    -u string
    url
    -uf string
    urlfile
    -user string
    username
    -usera string
    add a user base DefaultUsers,-usera user
    -userf string
    username file
    -wmi
    start wmi
    -wt int
    Set web timeout (default 5)

https://i3eg1nner.github.io/2023/06/9dfa91b67af1.html
作者
I3eg1nner
发布于
2023年6月13日
许可协议