打靶记录(一零九)之THMCMSplit
端口扫描nmap --min-rate=10000 -p- 10.10.239.126Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-19 10:49 UTCNmap scan report for ip-10-10-239-126.eu-west-1.compute.internal (10.10.239.126)Host is up (0.021s latency).Not shown: 65533 closed tcp ports (reset)PORT STATE SERVICE22/tcp open ssh80/tcp open httpMAC Address: 02:11:25:0E:D4:A9 (Unknown)Nmap done: 1 IP address (1 host up) scanned in 7.23 seconds
nmap -sV -sC -sT -O -p22,80 10.10.239.126Starting Nmap 7.93 ( https://nmap.org ) at 2024-03 ...
打靶记录(一零八)之THMMustacchio
端口扫描nmap --min-rate=10000 -p- 10.10.155.198Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-18 08:34 UTCNmap scan report for ip-10-10-240-97.eu-west-1.compute.internal (10.10.155.198)Host is up (0.0038s latency).Not shown: 65532 filtered tcp ports (no-response)PORT STATE SERVICE22/tcp open ssh80/tcp open http8765/tcp open ultraseek-httpMAC Address: 02:3D:37:D2:CB:0F (Unknown)Nmap done: 1 IP address (1 host up) scanned in 13.78 seconds
nmap -sC -sT -sV -O -p22,80,8765 10.10.155.198S ...
TmuxTHM
首先,让我们安装tmux。这可以在Ubuntu/Kali上使用命令:apt-get install tmux
安装tmux后,让我们启动一个新的会话。我们使用什么命令来启动一个没有自定义名称的新会话?
tmux
所有tmux命令都以键盘按钮组合开始。这个组合的第一个关键词是什么?
Control
第二个关键词呢?注意,这些键必须同时按下,并在按下组合中的下一个目标键之前释放。
B
让我们继续并从我们新创建的tmux会话中分离。我们需要在组合键中添加什么键才能分离?
D
好吧,我们已经脱离了我们的会议。我们如何列出所有的会话?
tmux ls
当我们创建一个没有设置名称的会话时,会话名称默认为什么?
0
现在我们已经找到了会话的名称,如何附加到它?
tmux a -t 0
让我们继续并在此会话中创建一个新窗口。为了达到这个目的,我们应该在组合键中添加什么键呢?
呼!现在有很多输出可以使用!如果您使用的是像我这样相对较小的终端,则此输出可能无法同时显示在屏幕上。为了解决这个问题,让我们进入“复制模式”。我们要在组合键里加什么键才能进入复制模式?
[
复制模式非常类似于“较少”,并允许使用 ...
打靶记录(一零七)之THMAratus
端口扫描nmap --min-rate=10000 -p- 10.10.237.69 Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-26 15:18 UTCNmap scan report for ip-10-10-149-178.eu-west-1.compute.internal (10.10.237.69)Host is up (0.011s latency).Not shown: 65510 filtered tcp ports (no-response), 19 filtered tcp ports (host-prohibited)PORT STATE SERVICE21/tcp open ftp22/tcp open ssh80/tcp open http139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-dsMAC Address: 02:A4:78:F1:74:81 (Unknown)Nmap d ...
LinuxSystemHardeningTHM
物理安全安全原则之一是深度防御。因此,我们应该始终考虑安全层。第一层是物理安全。
如果您阻止潜在的对手能够获得对计算机系统的物理访问,那将是最好的。如果入侵者可以进入您的办公室,那么很容易将磁盘驱动器移除并带走。这是一个简单的攻击,需要最少的技术技能。
假设您已经采取了必要的措施,以防止入侵者采取磁盘驱动器或整个计算机系统。此外,您已确保系统密码复杂且无法猜测。如果入侵者可以物理访问系统,那么使用GRUB(一种流行的Linux引导加载程序)重置root密码帐户是一项简单的任务。因此,我们有一句谚语“靴子访问=根访问”。
很明显,我们需要确保电脑系统的实体安全;然而,万一实体安全受到破坏,我们需要提供额外的保护层。许多BIOS和UEFI固件允许您添加靴子密码。此密码将防止未经授权的用户启动系统。但是,这只能用于个人系统;在服务器上使用它没有意义,因为这需要有人亲自在场以提供靴子密码。
我们可以考虑根据要保护的Linux系统添加GRUB密码。许多工具可以帮助实现这一点。其中一个工具是grub2-mkpasswd-pbkdf2,它会提示您输入两次密码并为您生成一个哈希值。根据Linux发行版 ...
打靶记录(一零六)之THMUnbakedPie
端口扫描map --min-rate=10000 -p- 10.10.118.24Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-16 06:10 UTCNmap scan report for ip-10-10-118-24.eu-west-1.compute.internal (10.10.118.24)Host is up (0.0020s latency).Not shown: 65534 filtered tcp ports (no-response)PORT STATE SERVICE5003/tcp open filemakerMAC Address: 02:15:B6:1C:A2:91 (Unknown)Nmap done: 1 IP address (1 host up) scanned in 13.45 seconds
nmap -sC -sT -sV -O -p5003 10.10.118.24Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-16 ...
IntrotoDockerTHM
基本DockerDocker一开始看起来很强大。然而,这些命令非常直观,只要稍加练习,你很快就会成为Docker向导。
Docker的语法可以分为四大类:
运行容器
管理和检查容器
管理Docker镜像
Docker守护进程统计数据和信息
我们将在本任务中分解这些类别。
管理Docker镜像Docker Pull
在运行Docker容器之前,我们首先需要一个镜像。回忆起“Intro to Containerisation集装箱化简介” 房间,图像是容器应该执行的指令。运行一个什么都不做的容器是没有用的!
器中运行Web服务器。在下载映像之前,让我们分解下载映像所需的命令和语法。可以使用 docker pull 命令并提供图像的名称。
比如说, docker pull nginx. Docker必须知道从哪里获取这个镜像(比如从一个我们将在后面的任务中提到的存储库)。
继续我们上面的例子,让我们下载这个Nginx镜像!
显示下载“Nginx”图像的终端
cmnatic@thm:~$ docker pull nginxUsing default tag: late ...
打靶记录(一零五)之THMColdVVars
端口扫描nmap --min-rate=10000 -p- 10.10.91.31Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-15 12:46 UTCNmap scan report for ip-10-10-91-31.eu-west-1.compute.internal (10.10.91.31)Host is up (0.0053s latency).Not shown: 65531 closed tcp ports (reset)PORT STATE SERVICE139/tcp open netbios-ssn445/tcp open microsoft-ds8080/tcp open http-proxy8082/tcp open blackice-alertsMAC Address: 02:1E:EF:37:89:5B (Unknown)Nmap done: 1 IP address (1 host up) scanned in 4.03 seconds
nmap -sV -sC -sT -O ...
打靶记录(一零四)之THMJaxSucksAlot
端口扫描nmap --min-rate=10000 -p- 10.10.111.140Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-14 13:38 UTCNmap scan report for ip-10-10-111-140.eu-west-1.compute.internal (10.10.111.140)Host is up (0.0068s latency).Not shown: 65533 closed tcp ports (reset)PORT STATE SERVICE22/tcp open ssh80/tcp open httpMAC Address: 02:BB:33:C4:53:AB (Unknown)Nmap done: 1 IP address (1 host up) scanned in 3.82 seconds
nmap -sV -sT -sC -O -p22,80 10.10.111.140Starting Nmap 7.93 ( https://nmap.org ) at 2024-0 ...
打靶记录(一零三)之THMCouch
端口扫描nmap --min-rate=10000 -p- 10.10.23.241Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-14 11:24 UTCNmap scan report for ip-10-10-23-241.eu-west-1.compute.internal (10.10.23.241)Host is up (0.0084s latency).Not shown: 65533 closed tcp ports (reset)PORT STATE SERVICE22/tcp open ssh5984/tcp open couchdbMAC Address: 02:F9:FF:B0:CC:6F (Unknown)Nmap done: 1 IP address (1 host up) scanned in 3.46 seconds
nmap -sT -sC -sV -O -p22,5984 10.10.23.241 Starting Nmap 7.93 ( https://nmap.org ) ...
ContainerVulnerabilitiesTHM
容器漏洞101在我们开始之前,有必要重新总结一下在集装箱化介绍室学到的一些东西。首先,让我们回想一下,容器是孤立的,具有最小的环境。下图描述了容器的环境。
需要注意的一些重要事项是:
仅仅因为您可以访问容器(即立足点),并不意味着您可以访问主机操作系统和相关文件或其他容器。
由于容器的最小性质(即它们只有开发人员指定的工具),您不太可能找到Netcat,Wget甚至Bash等基础工具!这使得攻击者很难在容器内进行交互。
我们可以在Docker容器中找到哪些漏洞
虽然Docker容器旨在将应用程序彼此隔离,但它们仍然容易受到攻击。例如,应用程序的硬编码密码仍然可以存在。例如,如果攻击者能够通过易受攻击的Web应用程序获得访问权限,他们将能够找到这些凭据。在下面的代码片段中,您可以看到一个包含硬编码的数据库服务器凭据的Web应用程序示例:
/** Database hostname */define( 'DB_HOST', 'localhost' );/** Database name */define( 'DB_NAME', 'sales' );/** Database usernam ...
NoSQLinjectionBasicsTHM
NoSQL injection Basics在我们学习NoSQL注入之前,让我们先来看看MongoDB是什么以及它是如何工作的。
MongoDB
与MySQL、MariaDB或PostgresSQL非常相似,MongoDB是另一种数据库,您可以在其中以有序的方式存储数据。MongoDB允许您以快速和结构化的形式检索数据子集。如果你熟悉关系数据库,你可以假设MongoDB的工作方式与任何其他数据库类似。主要的例外是信息不是存储在表中,而是存储在文档中。
您可以将这些文档视为一个简单的字典结构,其中存储了键值对。在某种程度上,它们与传统关系数据库中的记录非常相似,但信息的存储方式不同。例如,假设我们正在为HR部门创建一个Web应用程序,并且我们希望存储基本的员工信息。然后,您将为每个员工创建一个文档,其中包含格式如下的数据:
{"_id" : ObjectId("5f077332de2cdf808d26cd74")"username" : "lphillips", "first_name" : "Logan", "last_name" : "Phillips", "age" : "65" ...