攻防命令
- gobuster -u http://fakebank.com -w wordlist.txt dir
-u用于说明我们正在扫描的网站,-w获取要遍历的单词列表以查找隐藏页面
GoBuster 会告诉您它在页面/目录名称列表中找到的页面(由 Status: 200 表示)。
网络知识
-
ping使用ICMP(互联网控制消息)协议
-
子网划分
子网以三种不同的方式使用IP地址:
- 识别网络地址:该地址标识实际网络的开始并用于标识网络的存在
- 识别主机地址:该地址用于标识子网上的设备
- 识别默认网关:该地址是分配给网络上能够向另一个网络发送信息的设备的特殊地址
-
ARP(地址解析协议)是负责让设备在网络上识别自己的技术
为了将这两个标识符映射在一起(IP 地址和MAC地址),ARP 协议发送两种类型的消息:
ARP请求和ARP回复
-
IP 地址可以手动分配,方法是将它们物理输入到设备中,或者自动分配,最常见的是使用DHCP **(**动态主机配置协议)服务器
分为DHCP Discover,DHCP Offer,DHCP Request,DHCP ACK
-
DNS记录类型:
- 一个记录:解析为ipv4地址
- AAAA记录:解析为ipv6地址
- CNAME记录:解析到另一个域名
- MX记录:解析为处理正在查询的域的电子邮件的服务器地址
- TXT记录:是自由文本字段,可以在其中存储任何基于文本的数据
Linux知识
-
echo命令用于回显输出 可以在末尾添加**&**符号使其在后台运行并返回PID值
-
whoami命令找出我们登录的用户名
-
cat命令输出文件的内容(cat是concatenate的缩写)
-
pwd命令找出当前工作目录的完整路径
-
find命令用于查找文件 grep命令允许我们在文件内容中搜索我们正在寻找的特定值
-
符号/运算符 描述 & 该操作员允许您在终端后台运行命令。 && 该运算符允许您在终端的一行中组合多个命令。 > 这个运算符是一个重定向器——这意味着我们可以从命令中获取输出(例如使用 cat 输出文件)并将其定向到其他地方。 >> 此运算符执行与运算符相同的功能 >
,但附加输出而不是替换(意味着不会覆盖任何内容)。 -
touch命令用于创建文件 mkdir命令用于创建文件夹 file命令用于判断文件类型
-
scp命令是一种安全复制文件的方法。与常规 cp 命令不同,此命令允许您使用 SSH 协议在两台计算机之间传输文件,以提供身份验证和加密
-
Python 提供了一个名为“HTTPServer”的轻量级且易于使用的模块,
python3 -m http.server
以启动模块,使用wget命令可以下载文件 -
top 命令为您提供有关系统上运行的进程的实时统计信息
-
让进程/服务在引导时启动使用systemctl命令,有四个选项,start,stop,enable,disable
-
使用fg命令将先前后台进程带回前台
-
使用crontab -e 命令打开一个特殊的文件,其格式可被进程识别
cron
以逐步执行每一行 -
使用pdfinfo命令可以查看与pdf相关的各种元数据,通过
sudo apt install poppler-utils
命令安装 -
使用exiftool命令可以查看图像的各种元数据,通过
sudo apt install libimage-exiftool-perl
命令安装 -
uname -a打印系统信息,hostname命令返回目标机器的主机名
-
/proc/version可能会为您提供有关内核版本和其他数据的信息
-
**ps **命令将显示当前 shell 的进程
-
env命令显示环境变量
-
/etc/passed这将返回所有用户,其中一些是不是很有用的系统或服务用户。另一种方法可能是 grep 查找“home”
-
**ifconfig`**命令将为我们提供有关系统网络接口的信息
-
find命令
find . -name flag1.txt
: 在当前目录下找到名为“flag1.txt”的文件find /home -name flag1.txt
: 在/home目录下找到文件名“flag1.txt”find / -type d -name config
: 在“/”下找到名为config的目录find / -type f -perm 0777
: 查找777权限的文件(所有用户可读、可写、可执行的文件)find / -perm a=x
: 查找可执行文件find /home -user frank
: 在“/home”下查找用户“frank”的所有文件find / -mtime 10
:查找最近 10 天内修改过的文件find / -atime 10
:查找最近 10 天内访问过的文件find / -cmin -60
:查找最近一小时(60 分钟)内更改的文件find / -amin -60
:查找最近一小时(60 分钟)内的文件访问find / -size 50M
:查找大小为 50 MB 的文件
渗透测试
-
阶段过程:信息收集——枚举/扫描——开发——特权升级——开发后
-
渗透测试主要分为白帽、灰帽、黑帽,在渗透测试活动的初始阶段创建一个文档称为交战规则,包括允许、测试范围、规则三个部分
- 黑盒测试:这是一个高级过程,其中不会向测试人员提供有关应用程序或服务的内部工作的任何信息。此类测试不需要编程知识或者对程序的理解,黑盒测试显著增加了信息收集和枚举阶段用于了解目标攻击面的时间。
- 灰盒测试:这个测试过程是渗透测试等最流行的过程。它是黑盒和白盒测试过程的组合,测试人员对应用程序或软件的内部组件的了解有限,通常被选择用于非常坚固的攻击面。
- 白盒测试:这是一个低级过程,通常由了解编程和应用程序逻辑的软件开发人员完成。测试人员将充分了解应用程序及其预期行为,并且比黑盒测试更耗时。白盒测试场景中的完整知识提供了一种测试方法,可确保可以验证整个攻击面。
- CIA三元组是一个信息安全模型,包括Confidentiality(机密性)、Intergrity(完整性)、Availability(可用性)
SQL注入
- 当用户提供的数据被包含在SQL查询中时,使用SQL的Web应用程序可以变成SQL注入。
- 带内SQL注入:带内SQL注入时最容易检测和利用的类型;In-Band只是指使用相同的通信方法来利用漏洞并接收结果。
- 基于错误的SQL注入:这种类型的 SQL 注入对于轻松获取有关数据库结构的信息最有用,因为来自数据库的错误消息会直接打印到浏览器屏幕。这通常可用于枚举整个数据库。
- 基于联合的SQL注入:这种类型的注入利用 SQL UNION 运算符和 SELECT 语句将其他结果返回到页面。此方法是通过 SQL 注入漏洞提取大量数据的最常用方法。
-
0 UNION SELECT 1,2,group_concat(table_name) FROM information_schema.tables WHERE table_schema = 'sqli_one'
**group_concat()**方法从多个返回的行中获取指定的列(在上述中是table_name),将其放入一个以逗号分隔的字符串中。接下来是 information_schema 数据库;数据库的每个用户都可以访问它,它包含有关用户有权访问的所有数据库和表的信息。在这个特定的查询中,我们有兴趣列出sqli_one数据库中的所有表 ,即 article 和 staff_users。
0 UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_name = 'staff_users'
这类似于前面的 SQL 查询。但是,我们要检索的信息已从 table_name 更改为 column_name,我们在 information_schema 数据库中查询的表已从 tables 更改为 columns,并且我们正在搜索 table_name 列的值为 staff_users的任何行。
Burp Suite
-
Burp Suite是一个用Java编写的框架,旨在为Web应用程序渗透测试提供一站式服务。
-
功能介绍
- proxy:允许我们在与Web应用程序交互时拦截和修改请求/响应。在浏览器上部署好代理,可以拦截请求到BurpSuite中,然后可以使用快捷键
ctrl+r
把请求转发到Repeater中 - Repeater:允许我们多次捕获、修改然后重新发送相同的请求,可以在这里修改请求的参数得到不同参数返回的响应头
- Intruder:允许我们向端点发送请求,通常用于暴力攻击或模糊端点
- Decoder:无论是解码捕获的信息,还是在将有效负载发送到目标之前对其进行编码
- Compare:允许我们在字或字节级别比较两份数据
- Sequencer:我们通常在评估令牌的随机性时使用
- proxy:允许我们在与Web应用程序交互时拦截和修改请求/响应。在浏览器上部署好代理,可以拦截请求到BurpSuite中,然后可以使用快捷键
被动侦察
-
域名注册商负责维护其租用域名的 WHOIS 记录。WHOIS 服务器回复与所请求域相关的各种信息
-
用 查找域名的 IP 地址nslookup,代表名称服务器查找
-
nslookup 和 dig 等DNS查找工具无法自行查找子域,为避免这种耗时的搜索,可以使用提供DNS查询详细答案的在线服务,例如DNSDumpster
-
当您的任务是针对特定目标运行渗透测试时,作为被动侦察阶段的一部分,像Shodan.io这样的服务可以帮助您了解有关客户端网络的各种信息,而无需主动连接到它。此外,在防御方面,您可以使用 Shodan.io 的不同服务来了解属于您组织的已连接和暴露的设备
-
目的 命令行示例 查找 WHOIS 记录 whois tryhackme.com
查找DNS A 记录 nslookup -type=A tryhackme.com
在 DNS 服务器上查找DNS MX 记录 nslookup -type=MX tryhackme.com 1.1.1.1
查找DNS TXT 记录 nslookup -type=TXT tryhackme.com
查找DNS A 记录 dig tryhackme.com A
在 DNS 服务器上查找DNS MX 记录 dig @1.1.1.1 tryhackme.com MX
查找DNS TXT 记录 dig tryhackme.com TXT
主动侦察
-
通过 HTTP 访问网站时,默认使用TCP端口 80
通过 HTTPS 访问网站时默认使用TCP端口 443
-
ping 命令向远程系统发送数据包,远程系统回复。检查远程系统是否在线
-
traceroute 的目的是找到路由器的 IP 地址或数据包从您的系统到达目标主机时经过的跃点
-
telnet通过尝试连接来检查哪些端口是开放的和可访问的,可作为远程登录
nmap
- 仅当您与目标系统位于同一子网上时才可以进行ARP扫描。ARP 查询仅在目标与您位于同一子网上时才有效,即在同一以太网/WiFi 上。在以太网 (802.3) 和 WiFi (802.11) 上,您需要知道任何系统的 MAC 地址才能与之通信。MAC地址是链路层报头所必需的;标头包含源 MAC 地址和目标 MAC 地址等字段
- 如果你想使用 Nmap 发现在线主机而不对实时系统进行端口扫描,你可以发出
nmap -sn TARGETS
。如果你想让 Nmap 只执行 ARP 扫描而不进行端口扫描,你可以使用nmap -PR -sn TARGETS
, 其中-PR
表示你只想要一个ARP扫描。 - arp-scan --localnet或 arp-scan -l。此命令会将ARP查询发送到本地网络上的所有有效 IP 地址
-sn
(如果您不想跟随端口扫描,请记住添加)nmap -PE -sn MACHINE_IP/24
- 告诉 Nmap 使用 ICMP 时间戳来发现活动主机所需的选项是什么添加
-pp
- 告诉 Nmap 使用 ICMP 地址掩码发现活动主机所需的选项是什么添加
-pm
- 告诉 Nmap 使用 ICMP Echo 发现生命宿主所需的选项是什么添加
-pe
- 告诉 Nmap 使用 ICMP 时间戳来发现活动主机所需的选项是什么添加