美文网首页
CTF-Covfefe-WriteUp:Vulnhub

CTF-Covfefe-WriteUp:Vulnhub

作者: 二潘 | 来源:发表于2020-04-21 22:01 被阅读0次
    知识点:

    1、利用 Join the Rippe 的 ssh2john 破解SSH私钥
    2、通过简单的代码审计C语言程序来溢出提权

    环境:

    靶场
    系统:Linux
    任务:拿到2个flag
    靶场IP地址:192.168.199.138
    攻击机
    系统:kali
    地址:192.168.199.249

    信息收集

    拿到靶场之后使用nmap扫描一下开放端口服务

    image.png
    通过上面扫描结果,我们可以看到开发了22(ssh)、80(thhp)、31337(http)三个端口,其中80、31337都是web服务。
    首先80端口的web页面
    http://192.168.199.138
    image.png
    页面上没有其他的内容,只是一个nginx容器搭建的web页面,先扫扫它的目录:
    image.png
    没有什么特别的目录和文件,无法从80端口进行突破,换另一个端口31337
    image.png
    访问web后发现是由apache搭建的网站,我们继续使用工具对网站目录进行扫描
    image.png
    发现几个文件
    http://192.168.199.138:31337/.bash_history (CODE:200|SIZE:219) http://192.168.199.138:31337/.bashrc (CODE:200|SIZE:3526) http://192.168.199.138:31337/.profile (CODE:200|SIZE:675) http://192.168.199.138:31337/.ssh (CODE:200|SIZE:43) http://192.168.199.138:31337/robots.txt (CODE:200|SIZE:70)
    访问/robots.txt 后发现,也是上面扫描出来的文件内容
    image.png
    打开/taxes/
    image.png
    获得第一个falg

    在扫描的结果中,有一个.ssh的文件引起我的注意,访问后页面上回显了ssh连接的私钥和公钥:


    image.png

    id_rsa(私钥)、authorized_keys(公钥,认证密钥)id_rsa.pub(公钥),访问以下文件可以把它们下载到本地:


    image.png
    下载到本地后查看公钥发现用户为simon
    image.png

    尝试使用私钥(id_rsa)登陆ssh
    ssh -i id_rsa simon@192.168.199.138


    image.png
    这个时候发现登陆不上,原因是因为密码不对,接下来使用ssh2john破解id_rsa(私钥)
    首先查看ssh2john文件路径
    locate ssh2john
    image.png
    /usr/share/john/ssh2john.py
    

    然后把ssh2john.py复制到当前路进行,接下来就利用ssh2john把id_rsa(私钥)转换成john可识别hash文件

    python ssh2john.py id_rsa > key
    
    
    image.png

    最后使用john the Ripper来破解key文件

    john key
    
    image.png

    密码为:starwars


    image.png

    拿到密码之后进行ssh连接

    chmod 700 id_rsa
    ssh -i id_rsa simon@192.168.199.138
    user:simon
    pass:starwars
    
    image.png

    登陆成功之后,我们切换到root目录下发现flag.txt但是没有权限查看


    image.png

    接一下就是重要的时刻了。

    提权

    (这部分我是不会的。。。。)
    我们先来查找一下哪些文件是root权限的

    find / -perm -4000 2>/dev/null
    注释:
        find / 从根目录查找
        -perm -4000 具有执行权限的文件
        2>/dev/null 避免输出错误
    
    image.png

    通过搜索 root 权限的文件我们可以查看到 read_message ,是不是好像在哪里见过,对,就是在/root目录下的read_message.c文件!通过查看文件发现是一段由c语言编写的程序
    cat read_message.c


    image.png
    image.png

    通过代码审计得到了flag2为:flag2{use_the_source_luke},其中代码的意思就是:使用 strncmp函数来比较输入的内容数组,authorized(Simon)而且字符为5,第三个参数buf是数组,也就是说最大字符不能超过20,如果等于authorized(Simon)并且字符不超过authorized(Simon)那么printf打印出以下内容


    image.png
    不过输不等于authorized,则printf输出的内容是:
    image.png
    通过代码审计,buf不能超过20个字符。超过了就可以利用execve函数来让我们进行溢出得到root权限了,具体输入正确的Simon然后后面随便输入字符超过20个字符我们就可以进入到program 目录,我们可以替换为 /bin/sh
    Simon000000000000000/bin/sh
    
    image.png
    image.png

    参考大佬的文章

    相关文章

      网友评论

          本文标题:CTF-Covfefe-WriteUp:Vulnhub

          本文链接:https://www.haomeiwen.com/subject/tsecmhtx.html