常见术语

渗透测试/黑客技术是一个广阔的领域。在我们的职业生涯中,将会遇到无数的技术。以下是一些我们会反复遇到并且必须牢固掌握的最常见的术语和技术。这并非一份完整的列表,但足以帮助我们开始学习基础模块和简单的HTB靶机。

什么是 Shell?

“Shell”是一个在我们学习过程中会反复听到的常见术语。它有几层含义。在Linux系统上,Shell是一个程序,它接收用户通过键盘输入的命令,并将这些命令传递给操作系统以执行特定功能。在计算技术的早期,Shell是与系统交互的唯一可用界面。自那时起,出现了更多类型的操作系统和版本,以及图形用户界面(GUI)来补充命令行界面(Shell),例如Linux终端、Windows命令行(cmd.exe)和Windows PowerShell。

大多数Linux系统使用一个名为Bash(Bourne Again Shell)的程序作为与操作系统交互的Shell程序。Bash是Unix系统原始Shell程序sh的增强版本。除了Bash,还有其他Shell,包括但不限于Zsh、Tcsh、Ksh、Fish shell等。

我们经常会读到或听到别人谈论在”盒子”(系统)上”获取一个shell”。这意味著目标主机已被成功利用,并且我们获得了Shell级别的访问权限(通常是bash或sh),可以交互式地运行命令,就好像我们正登录到该主机一样。可以通过利用Web应用程序或网络/服务漏洞获取Shell,也可以通过获取凭证并远程登录到目标主机来获得Shell。主要有三种类型的Shell连接:

Shell 类型描述
反弹 Shell向攻击机器上的一个”监听器”发起连接。
绑定 Shell在目标主机上”绑定”到一个特定端口,并等待来自攻击机器的连接。
Web Shell通过Web浏览器运行操作系统命令,通常是非交互式或半交互式的。它也可用于运行单条命令(例如,利用文件上传漏洞上传一个PHP脚本来运行单条命令)。

每种类型的Shell都有其适用场景。同样,获取Shell的方法有很多种,我们用来获取Shell的辅助程序可以用多种语言编写(Python、Perl、Go、Bash、Java、awk、PHP等)。这些可以是小的脚本,也可以是更大、更复杂的程序,用于促进从目标主机到我们攻击系统的连接,以获取”Shell”访问权限。Shell访问将在后续章节中深入讨论。

什么是端口?

端口可以被想象成房子(房子好比远程系统)上的一扇窗户或门。如果一扇窗户或门开着或没有正确上锁,我们通常可以未经授权进入房屋。这在计算领域是类似的。端口是网络连接开始和结束的虚拟点。它们基于软件,由主机操作系统管理。端口与特定的进程或服务相关联,使计算机能够区分不同类型的流量(即使访问请求通过同一网络连接发送,SSH流量流向的端口也不同于访问网站的Web请求所流向的端口)。

每个端口都被分配了一个编号,并且许多端口在所有网络连接设备上是标准化的(尽管服务可以被配置在非标准端口上运行)。例如,HTTP消息(网站流量)通常发送到端口80,而HTTPS消息则发送到端口443,除非另有配置。我们会遇到运行在非标准端口上的Web应用程序,但通常会在端口80和443上发现它们。端口号使我们能够访问目标设备上运行的特定服务或应用程序。在高层面上看,端口帮助计算机理解如何处理接收到的各种类型的数据。

端口有两类:传输控制协议(TCP)用户数据报协议(UDP)

  • TCP 是面向连接的,这意味着在发送数据之前,必须在客户端和服务器之间建立连接。服务器必须处于监听状态,等待客户端的连接请求。
  • UDP 使用无连接的通信模型。没有”握手”过程,因此引入了一定的不可靠性,因为无法保证数据传递。当不需要纠错/检查,或者由应用程序本身处理时,UDP非常有用。UDP适用于运行时间敏感任务的应用程序,因为丢弃数据包比等待因重传而延迟的数据包(如TCP的情况)更快,这对实时系统影响显著。

有65,535个TCP端口和65,535个不同的UDP端口,每个端口由一个数字表示。一些最著名的TCP和UDP端口如下所列:

端口协议
20/21 (TCP)FTP
22 (TCP)SSH
23 (TCP)Telnet
25 (TCP)SMTP
80 (TCP)HTTP
161 (TCP/UDP)SNMP
389 (TCP/UDP)LDAP
443 (TCP)SSL/TLS (HTTPS)
445 (TCP)SMB
3389 (TCP)RDP

作为信息安全专业人士,我们必须能够快速回忆大量关于各种主题的信息。对我们来说,尤其是作为渗透测试员,必须牢固掌握许多TCP和UDP端口,并且能够仅凭端口号快速识别它们(例如,知道端口21是FTP,端口80是HTTP,端口88是Kerberos),而无需查资料。这将随着练习和重复而变得自然而然,最终成为我们的第二天性,帮助我们更高效地工作,并更好地确定枚举工作和攻击的优先级。

诸如此链接和此链接的指南是学习常见和较少见TCP/UDP端口的重要资源。这篇关于nmap扫描的Top 1000 TCP和UDP端口以及nmap扫描的Top 100服务的参考资料也很有用。挑战自己,尽可能多地记住这些端口,并研究上表中列出的每个协议。

什么是 Web 服务器?

Web服务器是一种运行在后端服务器上的应用程序,它处理来自客户端浏览器的所有HTTP流量,将其路由到请求的目标页面,并最终响应客户端浏览器。Web服务器通常运行在TCP端口80或443上,负责将最终用户连接到Web应用的各个部分,并处理他们的各种响应:

htb_main_2

由于Web应用程序往往对外开放,面向互联网,如果它们存在任何漏洞,可能导致后端服务器被入侵。Web应用程序可能提供巨大的攻击面,这使其成为攻击者和渗透测试员的高价值目标。

多种类型的漏洞可以影响Web应用程序。我们经常会听到/看到关于OWASP Top 10 的提及。这是一个由开放Web应用程序安全项目(OWASP)维护的十大Web应用程序漏洞的标准化列表。此列表被认为是十大最危险的漏洞类别,并非所有可能Web应用程序漏洞的完整列表。Web应用程序安全评估方法通常以OWASP Top 10作为起点,作为评估人员应检查的漏洞类型的主要类别。当前的OWASP Top 10列表是:

序号类别描述
1.失效的访问控制未能正确实施限制,以防止用户访问其他用户的账户、查看敏感数据、访问未授权功能、修改数据等。
2.加密机制失效与加密相关的故障,常导致敏感数据暴露或系统被入侵。
3.注入应用程序未对用户提供的数据进行验证、过滤或净化。注入的例子包括SQL注入、命令注入、LDAP注入等。
4.不安全的设计这些问题发生在应用程序设计时未考虑安全性。
5.安全配置错误应用程序栈的任何部分缺乏适当的安全加固、不安全的默认配置、开放的云存储、泄露过多信息的详细错误消息。
6.易受攻击和过时的组件使用易受攻击、不受支持或过时的组件(包括客户端和服务器端)。
7.身份识别与认证失效针对用户身份、认证和会话管理的认证相关攻击。
8.软件和数据完整性故障软件和数据完整性故障涉及无法防范完整性违规的代码和基础设施。例如,应用程序依赖来自不可信来源、存储库和内容分发网络(CDN)的插件、库或模块。
9.安全日志和监控失效此类别旨在帮助检测、上报和响应正在发生的入侵事件。没有日志记录和监控,就无法检测到入侵。
10.服务端请求伪造当Web应用程序获取远程资源但未验证用户提供的URL时,就会出现SSRF漏洞。它允许攻击者操纵应用程序将精心构造的请求发送到意外目的地,即使有防火墙、VPN或其他类型的网络访问控制列表(ACL)保护。

熟悉这些类别以及每个类别下的各种具体漏洞至关重要。Web应用程序漏洞将在后续模块中深入介绍。要了解更多关于Web应用程序的信息,请查看Web应用程序导论模块。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇