zoukankan      html  css  js  c++  java
  • HTB-靶机-Brainfuck

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

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

    nmap -sC -sV -p- -T5 -oN brainfuck.nmap 10.10.10.17

    nmap扫描结果

    扫描结果有开放邮箱,https,还得知一些证书相关的信息,看到有brainfuck.htb和sup3rs3cr3t.brainfuck.htb 直接绑定hosts搞吧

    echo "10.10.10.17 brainfuck.htb" | sudo tee -a /etc/hosts
    echo "10.10.10.17 sup3rs3cr3t.brainfuck.htb" | sudo tee -a /etc/hosts

    访问得到如上信息,发现了一些跟邮件有关的信息,一个邮箱orestis@brainfuck.htb 确认目标是wordpress程序,使用wpscan扫描一把 

    wpscan --disable-tls-checks --url https://brainfuck.htb -e ap,t,tt,u --api-token pFokhQNG8ZFEmmntdfHfTYnrYdnvJHKtVtDuHTqTqBc

    得到一款插件相关的漏洞信息,同时也知道目标wordpress程序存在用户名admin

    上面扫描出来的漏洞信息并没有给出对应的exploit,所以使用kali本身的searchsploit搜索下

    确认可以利用的漏洞exploit编号为41006 将其复制到本地kali目录下信息如下:

    根据上面给出的exploit可以知道目标靶机对应的插件存在用户提权漏洞,无需密码直接登录目标靶机后台,最终修改的代码如下并保存为html格式的文件,本地双击打开登录即可利用成功

    上述操作完毕想到前面提到邮箱,找到设置的地方看到有记住配置好的邮箱名称和密码

    orestis@brainfuck.htb
    kHGuERB29DNiNE

    使用上面的邮箱和密码登录邮箱看看有啥邮件

    知道了用户名和密码就需要找地方登录,因为利用上面插件的漏洞已经登录了wordpress,那么还有刚开始nmap扫描出来的域名,我们访问发现需要登录,使用上面邮件得到的用户名和密码登录成功了

    发现了ssh的登录方式,不过看上面的对应是加密了,捣鼓了一番,最终才知道是需要用到密码学相关知识,解密地址:http://rumkin.com/tools/cipher/vigenere.php

    下面上面给出的id_rsa 

    给上面的密钥权限为600 ,然后使用ssh登录目标靶机发现此密钥需要密码,这里需要使用john进行破解密码,破解之前需要使用ssh2john转换一下,前面的靶机也介绍到了怎么破解的,我这里就重复了,下面是破解出来的密码

    使用此密码和用户为orestis远程ssh登录目标靶机

    成功登录之后执行id发现此用户跟lxd相关,那么这里可以通过比较新的漏洞进行提权,具体如下:

    https://www.exploit-db.com/exploits/46978
    https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
    https://www.hackingarticles.in/lxd-privilege-escalation/

    大致意思就是在本地kali下载build-alpine 然后执行脚本安装打包,最终会生成一个tar.gz的文件将此文件传到目标靶机,执行下面一顿操作即可提权

    再补充下关于lxc和lxd等概念,参考:http://dockone.io/article/1125  上述操作完成之后相当于把目标靶机环境直接挂载到了本地目录/mnt/root/ 所以我们到此目录下找到root根目录即可发现root.txt

    另一种拿root.txt方式,此种方式才原作者意思

    进入到目标靶机之后查看当前家目录并查看相关信息

    此关卡跟密码学相关,所以查询了上述代码,将上述代码丢到谷歌上去,找到这个网站有对应的解密方式 https://crypto.stackexchange.com/questions/19444/rsa-given-q-p-and-e

    通过上述代码最终解密得到root.txt

    def egcd(a, b):
        x,y, u,v = 0,1, 1,0
        while a != 0:
            q, r = b//a, b%a
            m, n = x-u*q, y-v*q
            b,a, x,y, u,v = a,r, u,v, m,n
            gcd = b
        return gcd, x, y
    
    def main():
    
        p = 749302577646506281962992147553524167446082679278552088138715834326527417000928250488494103985293310916319365                                                                                                                                                       1830303308312565580445669284847225535166520307
        q = 702085452778756673545885838155545264832284500826661290684484793707033348037396328414664907425227875369689724                                                                                                                                                       5898433245929775591091774274652021374143174079
        e = 308020079179525084227928690216891939274850163327136225270252191051542544723446272849477797262809954319474542                                                                                                                                                       92782426313255523137610532323813714483639434257536830062768286377920010841850346837238015571464755074669373110411870                                                                                                                                                       331706974573498912126641409821855678581804467608824177508976254759319210955977053997
        ct = 44641914821074071930297814589851746700593470770417111804648920018396305246956127337150936081144106405284134                                                                                                                                                       84585139254108086265238684086976862243803869080347255027804246302981602877737814121702333671054544951297395059175505                                                                                                                                                       3735796799773369044083673911035030605581144977552865771395578778515514288930832915182
    
        # compute n
        n = p * q
    
        # Compute phi(n)
        phi = (p - 1) * (q - 1)
    
        # Compute modular inverse of e
        gcd, a, b = egcd(e, phi)
        d = a
    
        print( "n:  " + str(d) );
    
        # Decrypt ciphertext
        pt = pow(ct, d, n)
        print( "pt: " + str(pt) )
    
    if __name__ == "__main__":
        main()

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/autopwn/p/13920542.html
Copyright © 2011-2022 走看看