安全实战培训
第一课
在合规情况下,给出一个测试目标(单位:北邮,靶标:运维系统),请给出渗透思路。
首先是做信息收集:
- 从北邮的校园网站开始,获取学校的基本信息,建立起对目标的基本认识
- 借助于多个在线工具,获取 WHOIS 信息、DNS 历史解析信息、相关 IP 段等信息,多渠道对比验证,确定目标的真实 IP
- 对子域名信息进行采集
- 敏感信息收集。通过 FOFA、SHADON 等搜索引擎搜索北邮的网络资产、后台管理界面等等,借助于 Google 搜索北邮的学号、系统、VPN、后台、文件等等资产信息
- 确定目标后,根据已有的信息可以尝试钓鱼、弱密码等。充分北邮的学号信息、默认密码信息等信息
- 对各个子域名和后台登录界面进行渗透测试,使用内部虚拟机和梯子,连接国外的 VPS 进行操作,防止被 WAF 拦截可以使用代理池
- 登录成功后收集一波信息,然后考虑如何 getshell,看是否有登录平台存在解析和反序列化漏洞或者常见其他的漏洞
- getshell 后使用 fscan 进行内网的信息收集,确定网络的拓扑结构,进一步寻找运维系统所在。之后进行内网的横向移动和提权等操作。
第二课
本次任务:
1、搭建burpsuit;java
2、观察分析 http 请求,http 状态码
分别代表什么;
3、nmap、fscan 的使用(内网对自己的目标使用)
一、
二、
http 请求
请求行:
请求行包含了请求的方法、目标URL和所使用的HTTP协议版本。1
GET /api/users HTTP/1.1
- GET: 请求方法,指示客户端要获取指定URL的资源。
- /api/users: 请求的路径和资源。在此示例中,请求的是
/api/users
路径下的资源。 - HTTP/1.1: 所使用的HTTP协议版本。
请求头:
请求头包含了额外的信息和元数据,用于描述请求的细节和要求。1
2
3Host: 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格式的响应。
请求体(Body):
请求体包含了实际的请求数据,通常用于POST、PUT等请求方法。1
2
3
4Content-Type: application/json
Content-Length: 35
{"name": "John Doe", "age": 30}- Content-Type: 指定请求体中的数据类型。在此示例中,数据以JSON格式编码。
- Content-Length: 请求体的长度,以字节为单位。
- 请求体内容:包含了实际的请求数据。在此示例中,请求体包含了一个JSON对象,包含了名为”name”的字段和名为”age”的字段。
这些字段共同构成了一个完整的HTTP请求,通过它们,客户端向服务器发送请求,并传递所需的信息、参数和数据。服务器根据这些字段来理解和处理请求,然后返回相应的响应给客户端。
http 状态码:
- 200 OK: 表示请求成功。服务器成功处理了客户端的请求,并返回了请求的资源。
- 201 Created: 表示请求已成功处理,并在服务器上创建了新的资源。
- 204 No Content: 表示请求已成功处理,但服务器没有返回任何内容。一般在不需要返回响应主体的情况下使用,例如删除操作。
- 400 Bad Request: 表示服务器无法理解客户端发送的请求。可能是请求语法错误、参数错误等。
- 401 Unauthorized: 表示请求要求身份验证。客户端必须提供有效的身份验证凭据才能访问受保护的资源。
- 403 Forbidden: 表示服务器理解请求,但拒绝执行。客户端没有访问请求的资源的权限。
- 404 Not Found: 表示请求的资源不存在。服务器无法找到请求的资源。
- 500 Internal Server Error: 表示服务器遇到了意外的错误,导致无法完成请求。
- 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 |
|
开放了 22 和 80 端口,debian 操作系统
1 |
|
udp 的扫描结果仅供参考
1 |
|
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