目录
前言
免责声明
博文中涉及的方法可能带有危害性,仅供安全研究与教学之用,读者将其方法用作做其他用途,由读者承担全部法律及连带责任,文章作者不负任何责任.
事情的起因也是假期的某一天在小程序找洞的时候,刚好在本县教育局的小程序发现了一个暗链后,及时提交给了教育SRC,也是很快得到了回应并希望我进行应急响应,于是就有了本次应急响应的开始,并对其中遇到的事情进行做个总结.
1. 从暗链而起的开端
既然碰到了暗链,那么就简单介绍一下,也为后面分析本次网站植入的暗链做个铺垫
1.1 暗链的介绍
暗链,是指看不见但是却被搜索引擎计算权重的外链。暗链的实现方式,是通过漏洞利用、网站后台控制等方式,在网站中植入包含攻击者链接的恶意代码。在网站维护人员和访客没有察觉的情况下,通过网站一次次被加载而高效率提升排名。这些外链,常常是违法的赌钱、情色、行骗网站。因为有些暗链只想提升在百度、谷歌等的排名,为了更好地隐藏,只有使用百度、谷歌爬虫的User-agent才能发现。
1.2 暗链的分类
这里用介绍以及我自己碰到的案例来引入,方便记录后续的回顾
(1)JS引入型暗链——通过修改网站title,引入外部JavaScript代码来将暗链植入被害网站,当用户通过搜索引擎搜索特定关键字时进入该网站,通过引入的外部JavaScript代码实现跳转到非法网站。
其实下面两段脚本作用都是如果监测是如下中包含的搜索引擎进行搜索的本页面就会跳转到对应的bc站点,当然也会有将暗链绑定到一些图片上,在不经意点击时跳转到恶意站点
<script type="text/javascript">
var s=document.referrer
if(s.indexOf("baidu")>0 || s.indexOf("so")>0 || s.indexOf("sogou")>0 || s.indexOf("google")>0){
location.href="bc站点";
}
</script>
<script type="text/javascript">
var regexp=/\.(sogou|soso|baidu|google|youdao|yahoo|bing|so|biso|gougou|ifeng|ivc|sooule|niuhu|biso)(\.[a-z0-9\-]+){1,2}\//ig;
var where =document.referrer;
if(regexp.test(where))
{
window.location.href='bc站点'
}
</script>
(2)html隐藏型暗链——通过css或者JavaScript代码隐藏暗链,通常是通过position为负数,或者将display设置为none等方式来隐藏,目的是为了提升非法网站的SEO排名。
本次应急碰到的便是第二种html隐藏型,这里展示部分代码如下:
作用是检测搜索页面的是否是爬虫,如果是爬虫展示被篡改后的bc站标题,如果是用户就展示原本的界面标题,作用嘛就是为了提高SEO排名
<script>
var userAgent = navigator.userAgent.toLocaleLowerCase();
var searchEngines = ["spider", "bot"];
var isSearchEngine = searchEngines.some(se => userAgent.indexOf(se) !== -1);
if (!isSearchEngine) {
document.title = "XX系统";
}
</script>
<script src="引入的篡改js页面代码"></script>
<meta name="author" content="caiweiming">
<meta name="robots" content="noindex, nofollow">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0">
当然,在这次应急之后,我也进行了资产测绘和发现,存在大量站点存在被篡改的问题,其中也发现了升级版的暗链,升级版是在之前的基础上对bc信息进行了ascill进行编码,这样也是为了隐藏被篡改的信息,毕竟普通人看到了之后也不会进行解码吧.
2. 在没有日志的情况下如何分析入侵
因为在小程序入手的话还是比较困难的,于是转为较为擅长的web端,同时因为本次并未提供日志以及管理员账号等信息,如果有日志的话分析还是比较简单的,当然也不排除日志被清理了,毕竟还是一个比较敏感的站点,可以理解.
没了日志的话,作为渗透小子,当然以黑盒的方式来进行分析了,于是想到,一般政府站点都是通过一些cms或是通过一些开源的系统搭建的,于是一场黑白盒审计开始了
2.1 寻找指纹
打开web站点,并查看网站指纹信息,确定网站的指纹信息,并确定开发语言为PHP,根据我摸过的无数站点来看,此时基本确认为通用的建站系统.
在查看网站源代码后,确认资产的js指纹特征,当然还有对应的版本信息,这里就不展示了
/static/admin/js/dolphin.js
2.2 搜索引擎搜索+fofa资产搜索
2.2.1 fofa资产搜索
通过fofa搜索js指纹信息,通过查看站点的页面,以及查看页面源代码确定是同一套系统
然后随手试了一下admin/admin,居然进入了后台,在后续中操作中知道了原来是创建系统时的默认账号密码,也算有收获知道了这种站点后台长这样.
2.2.2 bing搜索引擎搜索
通过得到的系统信息以及版本进行搜索,最终确认本系统存在文件上传,并且知道了系统创建时的默认管理员用户为admin/admin
尝试通过admin/admin成功能登录后台,信息较多打码太麻烦了,不贴了
3.通过搭建系统并进行漏洞复现
既然存在漏洞并且能通过弱口令进入后台系统,那么入侵者很是采用文件上传webshell拿下后台控制权限,并进行页面的篡改
然后后续的流程就是跟着佬的这篇博文文章进行复现操作,搭建才是最重要的
DolphinPHP ≤ 1.4.3文件上传漏洞分析_海豚php框架漏洞-CSDN博客https://blog.csdn.net/Hananana46/article/details/113625406 主要是application/admin/controller/Attachment.php
的jcrop
函数,在后台的个人信息的文件上传处,没有进行任何的过滤操作,因此存在任意文件上传
首先放掉第一个个包,修改第二个包
成功返回上传路径,进行访问
确认漏洞存在后,此时就基本知道了入侵者入侵的整个流程,当然这是我分析后的结果,当然最后也收到了感谢,证明我的分析是正确的
4. 应急响应报告编写
这里我用的ShitReport编写的报告,还是很方便的
攻击者的流程: 首先通过DolphinPHP系统默认弱口令拿到网站权限,在管理员后台的个人信息处的图片上传处,上传webshell,拿到网站权限,最后篡改index.php页面信息插入暗链
修复建议:修改管理员密码为强口令、通过修改系统代码增加实施访问控制和文件上传功能的验证、增强监控和日志记录、进行应用安全审计、在管理员文件上传的图片处移除后门文件,制定定期的应急响应计划、部署Web应用防火墙,并定期进行代码审计和安全测试,以提高系统安全性和响应能力。