初始点 —— 了解渗透测试的基础知识。
这一章节对于一个渗透小白来说,可以快速的成长。以下将提供详细的解题思路,与实操步骤。
通常发出命令,敲击命令行的时候都是在终端下进行的,即为控制台或外壳。
VPN就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道。
我们这里通过openvpn即可以建立与HTB实验室的VPN连接。
直接隧道接口 翻译 你能发现缩写 即 答案
原理:ICMP协议是报文控制协议 **检查网络的连通性 **ping命令就是基于ICMP协议 这里的考点亦是如此
Nmap是一款针对大型网络的端口扫描工具
这里直接使用nmap 对目标机器进行端口扫描
-Pn:将所有主机视为在线的——跳过主机发现
这边直接利用telnet工具进行连接 输入root 管理员用户名 如果对方没有设置密码 即能空密码进入
(这边利用Linux子系统 为结果更加清晰)
Telnet协议—— 是Internet远程登录服务的标准协议和主要方式 端口号:TCP 23
它为用户提供了在本地计算机上完成远程工作的能力。
在使用者的电脑上使用telnet程序,用它连接到。
使用者可以在telnet程序中输入命令,这些命令会在上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制。
要开始一个telnet会话,必须输入用户名和密码来登录。Telnet是常用的Web的方法。
利用telnet工具连接目标 即可远程控制Web服务器
ls:查看当前目录下的文件 可以看到“flag.txt”
这一关虽然很容易,但是满满的都是知识点。
每一个虽然百度都能查到 但是呢 在不百度的情况下 考验的即是一种推断 实操的能力了
从对VPN的认识到创建连接;
从Nmap端口扫描器的认识到利用进行存活端口探测;
从ICMP报文控制协议原理到telnet远程登录服务的标准协议认识及利用;
最后对Linux系统的认识获取目标旗帜 这对于一个小白来说 可不容易。渗透测试就是这样 信息差的关系
容易的东西很容易,如果觉得难的话,是因为自己了解的还不够多而已
FTP协议——文件传输协议 上层协议是TCP
端口号:TCP端口中的20和21这两个端口
作用及机制:其中20用于传输数据,21用于传输控制信息
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。
此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
这边可以联想到HTTPS(超文本安全传输协议)和HTTP(超文本传输协议) FTP+S = FTP的安全版本
这边利用nmap 指定参数-sV 即可扫描出FTP的运行版本
-sV 探测打开的端口以确定服务/版本信息
使用 FTP 传输文件时,用户需要通过向 FTP 服务器提供凭据来获得文件传输许可。当然某些公共 FTP 服务器可能不需要凭据即可访问其文件,但是无法保证数据传输的安全性,任何未加密公共网络上的数据发送都是非常危险的,所以为了保护传输数据的安全,由 FTP 衍生而出的就是下面的两种协议:FTPS 与 SFTP。
如果想要了解FTPS和FTP和SFTP的区别,可以去看一篇文章《一文详解 FTP、FTPS 与 SFTP 的原理》
重点,FTP有两种登录方式。
ftp 有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,密码为:任何合法email 地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,密码为用户在远程系统中的用户密码。
这边首先建立连接后,通过命令行可以发现存在flag.txt
ftp连接目标服务器不能直接查看文件内容,可以使用get命令获取该文件并下载至本地
dir 查看当前攻击机文件信息
这一关也很容易,满满的都是知识点。结合上一关的经验,我们可以走的更快
这一关主要了解学习了FTP文件传输协议的原理以及利用姿势,也增进了对Nmap的使用
445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉。
这边利用smbclient 工具 列出目标共享内容
一次查找文件 并下载即可获取flag
这一关主要考验对smb的认识以及历史漏洞的简单利用
redis是内存数据库,用超级管理员用户运行在内存里的。我们可以通过redis未授权访问漏洞进去,即可拿到最高权限。且可以通过redis可以写计划任务,执行系统命令,写公私钥对等。
redis密码默认没有 需要人为进行配置。
keys * 可以获取当前选择数据库的所有键
以上查看到存在的键“flag” get 获取键值即可
这一关主要考验对redis和对redis-cli的认识,以及redis未授权访问的漏洞的利用。
内容来源于网络如有侵权请私信删除
下载 Desktop Manager 的 Zip 归档文件,并将其内容解压缩到临时目录中。
Configuration Agent 需要连接到有效的配置系统信息库,以便下载和缓存策略信息。如果未在代理配置中正确标识配置系统信息库(例如,使用了无效格式或未指定系统信息库),则当桌面客户端应用程序启动时,会在 Configuration Agent 日志中记录类似以下内容的错误消息。要解决此问题,请使用 Configuration Agent 向导
Configuration Agent 需要连接到有效的配置系统信息库,以便下载和缓存策略信息。如果无法建立连接,则当桌面客户端应用程序启动时,会在 Configuration Agent 日志中记录类似以下内容的错误消息。在以下情况中,主机 sobuild 不存在、无法连接或无法通过端口 389 访问 LDAP 服务器。要解决此问题,请使用 Agent Configuration 向导 (/usr/bin/apoc-config) 确保正确标识了策略系统信息库,并在此基础上确保可以访问该策略系统信息库。例如,对于 LDAP 系统信息库,必须确保 LDAP 服务器正在运行、LDAP 服务器所在的计算机在网络上可用,并且指定的端口为 LDAP 服务器正在使用的端口。
如果尝试使用 SSL 连接来访问 LDAP 服务器,请确保与 Java 运行时环境(用于运行 Configuration Agent)关联的密钥库中包含合适的证书。有关 apoc-config 的详细信息,请参见 部分。
要使 Configuration Agent 能够在策略系统信息库中找到策略数据,必须先正确配置策略系统信息库。如果指定了未配置或错误配置的策略系统信息库,则当桌面客户端应用程序启动时,会在 Configuration Agent 日志中记录类似以下内容的错误消息。要解决此问题,请参见
由 Configuration Agent 启用的每个桌面客户端应用程序(gconfd、Mozilla 或 StarSuite)在运行时都会打开一个与 Configuration Agent 的连接。这些连接的限制是在代理配置中指定的。默认的连接数限制为 50。如果一台计算机上有多个用户,则可能需要增加此限制的值,方法是使用 Configuration Agent 向导
设计 Configuration Agent 时的假设之一是,Desktop Manager 所创建的策略数据是相对静态的(即,不会发生频繁更改)。此假设导致生成了一个步骤,即代理间歇性地参考策略系统信息库,以查看是否进行过修改。默认情况下,代理每小时为所有正在运行的桌面应用程序检查一次系统信息库。因此,使用 Desktop Manager 进行更改之后,至多需要等一小时,正在运行的桌面应用程序即会收到更改通知。如果需要,可以使用 Agent Configuration 向导 (/usr/bin/apoc-config ) 更改“常规检测间隔”的值,以提高系统信息库检查频率。另外,也可以强制 Configuration Agent 为所有连接的应用程序刷新策略数据,方法是以超级用户身份登录,然后执行
在使用默认的桥接模式下,容器启动后会被分配一个与docker0在同一网段的地址,在容器内部默认显示为eth0,在宿主机上产生一个临时的vethXXX接口。
netstat可能只会显示出tcp6的监听状态,实际上ipv4的地址也监听了。
由于容器间应用程序被相互隔离,在不使用--link连接容器时难以从一个容器内建立到另外一个容器内的进程的连接,除非使用共享的socket文件来实现unix socket通信(挂载相同的卷或者同样具有对某一系统目录的写权限)。在知道容器的ip时可以发送ping ICMP数据包
要建立容器之间的链接,必须在启动时通过参数--name $container_name给容器命名
--link name:alias Docker在两个容器之间创建了一个安全的隧道,这是链接的巨大优势, 通过连接,我们不需要向外部网络暴露端口.
在连接了目标容器后,我们可以在源容器中查看到/etc/hosts文件中多了一个目标容器的host解析:
执行netstat -nlt不能够看到目标容器中开放的端口,但是可以访问。
在用docker运行一个镜像时如果使用桥接方式,没有用-h指定hostname,则使用产生的容器id的一部分作为hostname,解析为容器内eth0的地址。如果需要连接两个容器,最好是指定hostname而不是ip的形式来建立tcp连接。
如果通过--net='host'指定容器使用host的网络配置,那么hostname、网络接口、dns等信息完全一样。
容器内的网络配置是只读的,如果想要在容器内修改配置,需要在运行时加上参数--cap-add=NET_ADMIN来赋予修改权限(如果采用了host方式会影响到host主机的网络配置)。
容器停止后再次运行时(docker start)上次修改后的数据得以保留,不会丢失。而从镜像重新创建一个容器运行时是镜像原本的数据。
将数据从容器中拷出来:
更方便的方式可能就是使用-v挂载外部卷了,直接在容器外部的文件中读写。