文章目录
- 一、前言
- 二、概览
- 简介
- 三、参考文章
- 四、步骤(解析)
- 准备步骤#1.0
- 步骤#1.1
- 通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交;
- 步骤#1.2
- 通过本地 PC SSH到服务器并且分析黑客修改的管理员密码(明文)为多少,将黑客修改的管理员密码(明文) 作为 FLAG 提交;
- 拓展#1.1
- 步骤#1.3
- 通过本地 PC SSH到服务器并且分析黑客第一次Webshell的连接URL为多少,将黑客第一次Webshell的连接URL作为 FLAG 提交(无需域名flag{xxx.php?abc-app-upload});
- 步骤#1.4
- 通过本地 PC SSH到服务器并且分析黑客Webshell连接密码多少,将黑客Webshell连接密码 作为 FLAG 提交;
- 步骤#1.5
- 通过本地 PC SSH到服务器并且分析黑客使用的后续上传的木马文件名称为多少,将黑客使用的后续上传的木马文件名称 作为 FLAG 提交;
- 步骤#1.6
- 通过本地 PC SSH到服务器并且分析黑客隐藏的flag2,将黑客使隐藏的flag2 作为 FLAG 提交;
- 步骤#1.7
- 通过本地 PC SSH到服务器并且分析黑客隐藏的flag3,将黑客使隐藏的flag3 作为 FLAG 提交;
- 五、总结
一、前言
题目链接:第五章 linux实战-CMS01
三连私信免费送玄机注册邀请码私信!!!看见就回!!注意私信!!
友情提示:题目这么多虽然看着吓人,其实也就看着多;
简单介绍一下什么是“CMS01”;
简单来说就是在“Linux实战”这种上下文中,“CMS01”通常指的是一个内容管理系统(CMS)的实例或配置。CMS(Content Management System)是一种用于创建和管理数字内容的软件应用程序,常用于网站内容管理。
具体分析
在“Linux实战”中,CMS01是一个具体的内容管理系统实例,我们进一步分析如下:
-
安装和配置:
- CMS01可能是安装在Linux服务器上的内容管理系统,如WordPress、Joomla、Drupal等。
- 安装过程可能涉及下载CMS软件包、解压、配置数据库和Web服务器(如Apache或Nginx)。
-
管理和操作:
- 通过Web界面登录,进行内容创建、编辑和发布。
- 管理用户权限、插件、主题等。
-
安全性和维护:
- 定期更新CMS软件和插件,确保系统安全。
- 配置备份和恢复机制,以防数据丢失。
总结;
“CMS01”是一个内容管理系统实例的代号或名称,通过安装、配置和维护,可以实现内容管理的功能。具体的CMS系统可以根据需求选择,并在Linux环境中进行部署和管理。
友情提示;
这题题目较多,金币预算不是很多的师傅,可以直接本地下载环境(省些金币),这里提供下载环境链接:夸克网盘分享
用户:administrator
密码:Zgsf@qq.com
下载完成,我们打开“VM”虚拟机,选择“打开虚拟机”,最后找到下载的对应文件即可;
接着打开“Liunx-Web-02.ovf"即可;
二、概览
简介
服务器场景操作系统 Linux
服务器账号密码 root Inch@957821.
题目来源公众号 知攻善防实验室
请点击下载附件,获取私钥文件后连接 ssh
https://mp.weixin.qq.com/s/5ibP6E8R-GPtOEJeFK8qZA
任务环境说明
注:样本请勿在本地运行!!!样本请勿在本地运行!!!样本请勿在本地运行!!!
应急响应工程师小王某人收到安全设备告警服务器被植入恶意文件,请上机排查
开放题目
漏洞修复
参考
https://mp.weixin.qq.com/s/5ibP6E8R-GPtOEJeFK8qZA
题目;
1、通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交;
2、通过本地 PC SSH到服务器并且分析黑客修改的管理员密码(明文)为多少,将黑客修改的管理员密码(明文) 作为 FLAG 提交;
3、通过本地 PC SSH到服务器并且分析黑客第一次Webshell的连接URL为多少,将黑客第一次Webshell的连接URL作为 FLAG 提交(无需域名flag{xxx.php?abc-app-upload});
4、通过本地 PC SSH到服务器并且分析黑客Webshell连接密码多少,将黑客Webshell连接密码 作为 FLAG 提交;
5、通过本地 PC SSH到服务器并且分析黑客使用的后续上传的木马文件名称为多少,将黑客使用的后续上传的木马文件名称 作为 FLAG 提交;
6、通过本地 PC SSH到服务器并且分析黑客隐藏的flag2,将黑客使隐藏的flag2 作为 FLAG 提交;
7、通过本地 PC SSH到服务器并且分析黑客隐藏的flag3,将黑客使隐藏的flag3 作为 FLAG 提交;
三、参考文章
知攻善防Linux Web2靶场入侵排查
知攻善防应急靶场-Linux(2)
应急响应靶机训练-Linux2
四、步骤(解析)
准备步骤#1.0
使用Xshell新建或者SSH连接靶机都可;(本地下载环境的师傅,直接输入账号密码登录即可,具体操作不再多述)
新建连接,输入靶机IP进行连接即可;(这里如一直连不上,看看自己是不是校园网,是的话建议换手机热点,接着再尝试进行连接)
输入账号密码进行连接即可;(注意这里默认是“Public Key”秘钥链接)
所以这里需要下载附件;(就是秘钥)
选择浏览“文件”,接着打开刚刚下载好的附件确定即可;
最后成功连接;
这里总结一下注意几点;
1、靶机一直连不上的,看看自己的网络有没有问题(一些校园网出口流量会进行限制),这时候换个手机热点即可;
2、秘钥登录,需下载附件,导入才能登录,注意下载附件;
步骤#1.1
通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交;
解题思路
题目让我们提交黑客的IP,老题目了,想要确定黑客的IP,我们可以通过分析/var/log/secure
日志文件中记录的成功SSH登录条目,“/var/log/secure”通常是记录系统的安全相关日志,包括SSH登录尝试;
那这里我们可以使用命令;
grep "Accepted " /var/log/secure | awk '{print $11}'
这个命令会输出所有成功SSH登录的IP地址。
具体分析;
"Accepted "
:这是grep
命令要搜索的模式。SSH服务在成功认证登录后,会在日志文件中记录包含“Accepted”字样的行。
awk '{print $11}'
:
awk
:一种强大的文本处理工具,用于处理格式化的文本数据。'{print $11}'
:这是awk
的操作部分,表示打印每行的第11个字段。
结合就是,这个命令的整体功能是从/var/log/secure
文件中查找包含“Accepted”字样的行,然后打印这些行的第11个字段(即登录成功的IP地址)。
得到;
可以看见“192.168.20.1”这个IP较多,那我们就尝试提交,发现正确;
至此;
flag{192.168.20.1}
还有一个命令同样也是可以查出;
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
简单分析;
-
grep "Accepted " /var/log/secure
:"Accepted "
是要搜索的字符串,代表SSH连接成功的日志条目,通常包含这个字符串。
-
awk '{print $1,$2,$3,$9,$11}'
:awk
是一种强大的文本处理工具,可以对输入的文本数据进行格式化和提取。{print $1,$2,$3,$9,$11}
指定要提取并打印的字段:$1
:第一列,表示月份。$2
:第二列,表示日期。$3
:第三列,表示时间(小时:分钟:秒)。$9
:第九列,表示登录的用户名。$11
:第十一列,表示登录的客户端IP地址。
综合分析
这个命令的作用是从/var/log/secure
日志文件中查找所有包含“Accepted ”字符串的行(即成功的SSH登录记录),然后使用awk
提取并打印出以下信息:
- 月份
- 日期
- 时间
- 登录的用户名
- 登录的客户端IP地址
得到;
同样也是可以,方法不唯一,仅供参考;
步骤#1.2
通过本地 PC SSH到服务器并且分析黑客修改的管理员密码(明文)为多少,将黑客修改的管理员密码(明文) 作为 FLAG 提交;
解题思路
题目让我们提交黑客修改的管理员密码(明文),通常来说要找到黑客修改的管理员密码,我们需要查找系统日志文件中涉及用户账号和密码更改的记录,但是我筛选了一下发现没有,那就是方向错了,不过没关系,我们可以检查一些系统有没有运行什么可疑的程序,如果有的话那就应该是运行在该机器上的某个系统的管理员密码。
我们使用命令查看当前所有网络连接和监听端口的详细信息;
netstat -anlupt
得到;
得到;
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:12485 0.0.0.0:* LISTEN 2414/python3
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 1492/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1673/nginx: master
tcp 0 0 0.0.0.0:8821 0.0.0.0:* LISTEN 1673/nginx: master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1515/pure-ftpd (SER
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1492/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 1673/nginx: master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1498/master
tcp 0 36 10.0.10.1:22 39.144.153.252:32511 ESTABLISHED 2815/sshd: root@pts
tcp6 0 0 :::3306 :::* LISTEN 2339/mysqld
tcp6 0 0 :::2222 :::* LISTEN 1492/sshd
tcp6 0 0 :::21 :::* LISTEN 1515/pure-ftpd (SER
tcp6 0 0 :::22 :::* LISTEN 1492/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1498/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 1032/dhclient
发现了靶机上运行着nginx
和mysql
,那我们目录就明确了,就是先获取到数据库的密码;
接着我们又在根目录下发现www目录,跟进分析又发现了access.log日志,打开日志大概扫一下就发现了最明显的路由phpmyadmin
发现“www”目录,跟进分析;
发现access.log日志,打开查看;
日志最上面就发现了清一色路由phpmyadmin;
那就说明搭建网站数据库的时候是使用了“phpmyadmin”的,那我们直接去找相应的配置文件“config.inc.php”即可,但是这里按照常规的按照路径查找路径发现没有找到配置文件,那这里肯定就是自定义安装的了,那就没办法,我们只能多翻翻了,最后也是在“www/wwwroot/127.0.0.1/lib/config.inc.php”下发现了配置文件;
找到配置文件“config.inc.php”;
简单查看分析一下;
也是成功找到了密码,这时候我们登录mysql服务器,找到id为1的就是管理员;(别问我为什么知道找到ID为1的管理员,因为题目让我们找的就是管理员的密码)
得到;
数据库名:kaoshi
密码:5Sx8mK5ieyLPb84m
那我们直接登录数据库;
mysql -ukaoshi -p5Sx8mK5ieyLPb84m
登录成功;
那既然进了mysql服务器,那我们肯定先查查里面有什么可用的数据库啦;
使用命令;
show databases;
得到;
一眼就看见了我们要找的“kaoshi”,那就切到这个数据库嘛;(可能有些师傅第一次这样接触数据库,不知道切库)
使用命令;
use kaoshi;
得到;
返回“Database changed”代表成功;
那查完库,,切完库,接着那肯定就是查表了,看看里面有没有让我们一眼心动的表;
使用命令;
show tables;
得到;
发现底下有一个“x2_user_group ”表和“x2_user”表,怀疑里面有用户信息,我们可以查询一下;
使用命令;
SELECT * FROM x2_user_group;
得到;
也是得到了管理员ID为1,那我们就可以顺着继续查询账号密码信息;(注意:数据库里面的账号密码一般都是经过MD5加密的,所以我们找的时候需要进行MD5解密一下)
这里我们使用命令;(这里大小写区分没啥,刚刚不是查完“x2_user_group”表嘛,它的上面还有一个“x2_user”这里才是重头戏)
select * from x2_user;
得到;
这里密密麻麻的,或许别的你可以不认识,但是刚刚不是已经强调了嘛,管理员的ID为1,所以进去直接找“1”所在的那一排分析过去即可,而且数据库中,一些密码都会使用MD5进行加密,所以,这个就是所要找的管理员“密码”,就是MD5;
| 1 | | NULL | peadmin | 958074@163.com | f6f6eb5ace977d7e114377cc7098b7e3 | 279 | 127.0.0.1 | 1471795200 | 0 |
随便找一个MD5在线解密即可;(这个比较麻烦需要大家注册一个账号,注意注册完成邮箱激活即可使用)
在线MD5解密
得到;
所以这绕来绕去,终于是找到了黑客修改过来的管理员密码,这一套操作下来呢,简单来说就是,我们自己找到账号密码,接着进入数据库,最后找到修改过来的管理员登录密码(MD5加密后的密码),最后进行MD5解密就成功得出了flag,不过呢,这是一种解法,同时呢,也还有一种解法,而且这种解法相对我们第一种来说便捷了很多;
flag{Network@2020}
拓展#1.1
不知道还有没有师傅注意root目录下是有一个"数据包1.pcapng"文件的,那这个肯定就是截获的黑客流量,我们可以通过分析这个流量包同样也是可以得出黑客修改过的管理员密码;
那想要把这个数据包丢进“Wireshark”进行分析,那肯定就少不了导出对吧,那就导呗,这里我还是以为像之前一样,直接连的“Xftp”传输文件,想直接传出来,但奇怪的是,数据包好像是被限制了一样,死活导不出,当时我就奇怪了,想。。了都,反正也不知道“Xftp”在搞什么东西反正,那实在没办法了嘛,事已至此我们就只能考虑试试其它工具导出了,最后实在没办法了在玄机榜一请教了“Mr.Dang”师傅,师傅跟我说了一个真香的工具“FinalShell”SSH工具;
使用"Xftp"导出失败;
FinalShell官网下载链接
工具简单来说就是结合了“Xshell”以及“Xftp”的常用功能;
详解介绍;
FinalShell是一款集成多功能的远程管理工具,广泛应用于服务器管理、运维和开发等领域。它不仅仅是一个SSH客户端,还提供了丰富的功能和用户友好的界面,使得服务器管理变得更加高效和便捷。
主要特点
- 多协议支持:支持SSH、SFTP、RDP等多种远程连接协议。
- 多平台支持:可在Windows、MacOS和Linux等操作系统上运行。
- 图形化界面:提供直观的用户界面,简化了远程服务器管理的复杂操作。
- 多标签管理:支持多标签页,方便同时管理多个远程会话。
- 多功能集成:集成了终端、文件管理、性能监控、隧道转发等多种功能。
主要功能
- 终端管理:提供强大的SSH终端功能,支持自动补全、语法高亮、快捷命令等,提高了操作效率。
- 文件传输:内置SFTP功能,支持拖拽上传下载文件,方便快速传输和管理远程服务器文件。
- 性能监控:实时监控服务器的CPU、内存、磁盘和网络等资源使用情况,帮助快速定位性能瓶颈。
- 隧道转发:支持SSH隧道转发功能,可用于本地端口转发、远程端口转发和动态端口转发,方便穿透防火墙访问内部网络服务。
- 脚本管理:支持保存常用脚本和命令,方便一键执行,提高运维效率。
- 安全管理:支持密钥管理、双因素认证等多种安全认证方式,保障远程连接的安全性。
使用场景
- 服务器运维:通过FinalShell,可以轻松管理多个远程服务器,执行日常运维操作,如监控资源使用情况、管理文件和目录、执行脚本等。
- 开发调试:开发人员可以使用FinalShell连接远程开发环境,进行代码调试、日志查看、文件同步等操作。
- 远程办公:通过FinalShell的RDP功能,可以远程连接和控制Windows桌面,适用于远程办公和桌面支持。
总之就是;
FinalShell是一款功能强大且使用便捷的远程管理工具,集成了多种远程连接和管理功能,广泛应用于服务器运维和开发等场景。其图形化界面和多功能集成使得远程管理变得更加高效和便捷。
下载进入成功之后界面是这样的;
老规矩那就是新建嘛,点击新标签页旁边那个文件夹,点击SSH连接(Liunx);
输入靶机IP,认证方法选择公钥,接着点击“浏览”,点击“导入”,找到下载的附件,名称随便,最后“选中”再!点击确认;
最后返回标签页,点击刚刚创建好的,输入一个用户“root”即可连接成功;
连接成功,从这张图中也不难看出,上面是lliunx,下面是正常的文件管理;
最后的最后,右键选择文件“数据包1.pcapng”,点击下载,接着返回桌面就可以看见下载好的数据包啦!(返回桌面找不到数据包的,注意看路径是什么地方)
正常丢进“Wireshark”分析即可;
简单使用命令过滤一下黑客的IP或者http都行,反正咋看着舒服咋来;
这里比较懒,我就直接过滤了一下http,还是喜欢按数据包大小进行排序进行分析;
最后在635大小的包右键追踪一下http,你就能发现它把flag写在这里面。。。。(包外面显示的就是flag1)
所以也是可以分析数据包得出修改过的管理员密码,就这随便翻翻数据包不比我们之前死命翻数据库便捷多了?所以后面的题目基本能在数据包里面分析的,我是一点都不想在Liunx里面翻;
步骤#1.3
通过本地 PC SSH到服务器并且分析黑客第一次Webshell的连接URL为多少,将黑客第一次Webshell的连接URL作为 FLAG 提交(无需域名flag{xxx.php?abc-app-upload});
解题思路
让我们提交黑客第一次Webshell的连接URL是多少,那刚刚在筛选http的时候,我们就已经可以看见有较多的index.php?user-app-register
和version2.php
包,那我们可以追踪简单分析一下;
那有一些师傅就不明白了,为什么看见很多的index.php?user-app-register
和version2.php
就知道跟黑客第一次连接webshell有关系呢?
简单分析;
- index.php?user-app-register
这个URL路径是一个包含恶意参数的注册请求。
- 恶意参数注入:黑客通过这个路径注入恶意代码。例如,URL参数可能包含被编码的PHP代码(如
eval(base64_decode(...))
),用于在服务器上执行任意代码。 - 注册接口被滥用:黑客可能利用一个开放的注册接口来上传或执行恶意代码。
- version2.php
这个文件是服务器上另一个被利用的脚本。
- 上传脚本:黑客利用这个脚本上传Webshell文件。
- 直接访问Webshell:如果这个文件本身就是一个Webshell,黑客可以直接通过访问这个URL来控制服务器。
那就随便点一个差不多大小的包来分析呗(为什么说不能很大也不能很小,简单来说,包太多信息有时候分析不过来,小了,包里没什么信息,所以挑一个差不多大小的追踪http分析即可,当然特别情况除外),这里我选的是“index.php?user-app-register”的包来分析的(因为点击“time”进行分析时,刚刚好664的包排第一位);
这里其实也有个小技巧,题目不是说让我们提交第一次连接的webshell嘛,那我们就可以直接点击“time”进行一个简单的排序,以此类推进行分析;
右键追踪http”翻到最底下返回包,也是成功发现了路径,还有内核版本还有当前用户名;
那么我们就可以依次来断定黑客肯定是请求执行了某些命令,进行URL解码看看请求包中的内容是什么。
URL在线解码
得到;
@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir = @ini_get("open_basedir");
if ($opdir) {$ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);$oparr = preg_split(base64_decode("Lzt8Oi8="), $opdir);@array_push($oparr, $ocwd, sys_get_temp_dir());foreach ($oparr as $item) {if (!@is_writable($item)) {continue;}$tmdir = $item . "/.fd491f470fb7";@mkdir($tmdir);if (!@file_exists($tmdir)) {continue;}$tmdir = realpath($tmdir);@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr = @preg_split("/\\\\|\\//", $tmdir);for ($i = 0; $i < sizeof($cntarr); $i++) {@chdir("..");}@ini_set("open_basedir", "/");@rmdir($tmdir);break;}
}
function asenc($out) {return $out;
}
function asoutput() {$output = ob_get_contents();ob_end_clean();echo "4a0c" . "dc70";echo @asenc($output);echo "db6" . "da5";
}
ob_start();
try {$D = dirname($_SERVER["SCRIPT_FILENAME"]);if ($D == "") $D = dirname($_SERVER["PATH_TRANSLATED"]);$R = "{$D}\t";if (substr($D, 0, 1) != "/") {foreach (range("C", "Z") as $L) if (is_dir("{$L}:")) $R .= "{$L}:";} else {$R .= "/";}$R .= "\t";$u = (function_exists("posix_getegid")) ? @posix_getpwuid(@posix_geteuid()) : "";$s = ($u) ? $u["name"] : @get_current_user();$R .= php_uname();$R .= "\t{$s}";echo $R;
} catch (Exception $e) {echo "ERROR://".$e->getMessage();
}
asoutput();
die();
x0b6b31b98f31d=TtL3d3dy93d3dyb290LzEyNy4wLjAuMS8=
简单分析一下;
- 禁用错误显示 (
@ini_set("display_errors", "0")
) 以及设置脚本超时时间为无限 (@set_time_limit(0)
)。 - 检查并修改 open_basedir 限制:
- 获取当前的
open_basedir
设置,并尝试在可写目录中创建一个临时目录。 - 修改
open_basedir
设置,绕过目录限制。
- 获取当前的
- 输出缓冲与处理:
- 启动输出缓冲 (
ob_start()
),捕获输出内容。 - 在缓冲区内容输出之前,添加特定的标记 (
4a0cdc70
和db6da5
)。
- 启动输出缓冲 (
- 尝试获取并输出系统信息:
- 获取脚本当前目录及相关的系统信息(如主机名、用户名、系统信息)。
与黑客第一次连接 Webshell 的关系
- 绕过
open_basedir
限制
黑客通过该脚本绕过 open_basedir
安全机制,获取对服务器文件系统的更大访问权限。这是黑客在首次连接 Webshell 时进行的一部分操作。
- 系统信息泄露
脚本输出服务器的目录结构、系统信息及当前用户信息。这些信息对于黑客进一步攻击服务器非常有用。
- 标记与输出处理
通过在输出中添加标记 (4a0cdc70
和 db6da5
),黑客可以更方便地在抓包或日志中识别出其恶意脚本的输出。
题目让我们提交黑客第一次连接webshell的url,所以;
URL:index.php?user-app-register
至此;
flag{index.php?user-app-register}
步骤#1.4
通过本地 PC SSH到服务器并且分析黑客Webshell连接密码多少,将黑客Webshell连接密码 作为 FLAG 提交;
解题思路
让我们提交黑客webshell连接密码,做了第六章那么多蚁剑流量分析,我们也不难看出这些webshell里面其实有很多的蚁剑流量,那蚁剑流量特征最明显的就是;
蚁剑webshell流量特征示例;
POST /shell.php HTTP/1.1
Host: target.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 100pass=secretpassword&cmd=echo%20hello
在这个示例中:
- 请求的 URL 是
shell.php
。 - 使用 POST 请求。
pass
参数传递 Webshell 的密码。cmd
参数传递要执行的命令,这里是echo hello
。
所以;(数据包甚至都不需要换,用的上一题的)
至此;
flag{Network2020}
步骤#1.5
通过本地 PC SSH到服务器并且分析黑客使用的后续上传的木马文件名称为多少,将黑客使用的后续上传的木马文件名称 作为 FLAG 提交;
解题思路
题目让我们提交黑客后续上传的木马名称,刚刚URL解码蚁剑包的时候最后一句“x0b6b31b98f31d=TtL3d3dy93d3dyb290LzEyNy4wLjAuMS8=”,因为蚁剑会将参数进行base64编码,然后在最前面随机添加两个字母,所以;
base解码
由此我们就可以分析,再结合x0b6b31b98f31d
变量名的位置,得知攻击者做了查看当前目录下文件的操作,从返回包的内容也可以猜出来。
简单来说就是黑客在
/www/wwwroot/127.0.0.1/
目录下创建了flag1
文件并写入flag,接着写入一个新的木马文件“shell.php”,所以后续访问的“vsersion2.php”的流量包可能就是后续上传木马的文件了,
发现flag1,以及大量的version2.php及vsersion.php;
那我们追踪一下version2.php简单分析一下;(这里我http追踪的是大小392的包)
结果很明显就是冰蝎的流量特征;
冰蝎流量特征
那么就可以说明, 文件“version2.php”就是攻击者后续上传的木马进行getshell了;(其实这题还有一种办法就是,仔细看看http流里面的流量包,你会发现文件就那么两个三个“.php”的,学网安这一门的,都知道“.php”是个。。懂的都懂,那干脆直接全部一个一个尝试提交一遍不就行了)
至此;
flag{version2.php}
步骤#1.6
通过本地 PC SSH到服务器并且分析黑客隐藏的flag2,将黑客使隐藏的flag2 作为 FLAG 提交;
解题思路
这里题目就单纯让我们找flag了,这里简单流量包大致都看了一遍,除了就找到一个flag1之外,其它的就没有了,那我们就返回Liunx继续进行分析;
遇到这种问题,我们可以直接查一手history历史命令看看,都做了那些操作,可以简单的推断的一下;(历史命令删了当我没说)
命令;
history
得到;
又找到一个;
至此;
flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
步骤#1.7
通过本地 PC SSH到服务器并且分析黑客隐藏的flag3,将黑客使隐藏的flag3 作为 FLAG 提交;
解题思路
还是历史命令,仔细看看那些“VIM”过的文件,一个一个进行分析排查即可,也不是很多,就那么几个vim的“.php”文件;
我们去“重点关照”一下;
得到;
最后;
[root@ip-10-0-10-1 /]# cd www/wwwroot/
[root@ip-10-0-10-1 wwwroot]# ls -la
total 0
drwxr-xr-x 4 root root 38 Mar 7 12:01 .
drwxr-xr-x 7 root root 99 Mar 7 11:40 ..
drwxr-xr-x 10 www www 137 Mar 20 14:54 127.0.0.1
drwxr-xr-x 2 root root 6 Mar 7 11:47 default
[root@ip-10-0-10-1 wwwroot]# cd 127.0.0.1/
[root@ip-10-0-10-1 127.0.0.1]# ls -la
total 12
drwxr-xr-x 10 www www 137 Mar 20 14:54 .
drwxr-xr-x 4 root root 38 Mar 7 12:01 ..
drwxr-xr-x 2 www www 111 Sep 14 2023 api
drwxr-xr-x 2 root root 111 Mar 20 14:57 .api
drwxr-xr-x 15 www www 186 Sep 14 2023 app
drwxr-xr-x 4 www www 33 Mar 7 12:07 data
drwxr-xr-x 4 www www 34 Sep 14 2023 files
-rwxr-xr-x 1 www www 176 Jun 25 2023 index.php
drwxr-xr-x 3 www www 4096 Sep 14 2023 lib
drwxr-xr-x 2 www www 41 Sep 14 2023 tasks
-rw-r--r-- 1 root root 42 Mar 7 12:01 .user.ini
drwxr-xr-x 2 www www 6 Sep 13 2023 vendor
[root@ip-10-0-10-1 127.0.0.1]# cd .api/
[root@ip-10-0-10-1 .api]# ls
alinotify.php alireturn.php mpnotify.php payjsnotify.php wxnotify.php
[root@ip-10-0-10-1 .api]# cat alinotify.php
<?php
namespace PHPEMS;
/** Created on 2013-12-26** To change the template for this generated file go to* Window - Preferences - PHPeclipse - PHP - Code Templates*/define('PEPATH',dirname(dirname(__FILE__)));
class app
{public $G;public function __construct(){$this->ev = \PHPEMS\ginkgo::make('ev');$this->order = \PHPEMS\ginkgo::make('orders','bank');}public function run(){$alipay = \PHPEMS\ginkgo::make('alipay');$orderid = $this->ev->get('out_trade_no');$order = $this->order->getOrderById($orderid);$verify_result = $alipay->alinotify();if($verify_result){if($this->ev->get('trade_status') == 'TRADE_FINISHED' ||$this->ev->get('trade_status') == 'TRADE_SUCCESS'){if($order['orderstatus'] != 2){$this->order->payforOrder($orderid,'alipay');}exit('sucess');}elseif($_POST['trade_status'] == 'WAIT_BUYER_PAY'){exit('fail');}else{exit('fail');}}else{exit('fail');}}
}include PEPATH.'/lib/init.cls.php';
$app = new app(new ginkgo);
$app->run();
$flag2 = "flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}";?>
[root@ip-10-0-10-1 .api]# alinotify.php
至此;
flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
简单分析一下;
这段代码实现了一个处理支付宝支付异步通知的 PHP 应用。通过验证支付宝的通知,更新订单状态并响应支付宝的请求。这个过程涉及到从支付宝获取订单信息,验证支付结果,然后更新订单状态,并返回相应的处理结果给支付宝。
五、总结
仅供参考;
-
攻击者的IP为192.168.20.1
- 根据
grep "Accepted " /var/log/secure | awk '{print $11}'
命令分析,攻击者的IP地址从日志中提取到了192.168.20.1
。
- 根据
-
攻击方式是通过 /index.php?user-app-register 上传了一个 webshell,然后使用蚁剑管理 webshell 之后再次上传 version2.php 进行提权
- 从 Wireshark 中观察到很多
/index.php?user-app-register
和version2.php
的数据包,表明攻击者通过这些路径上传和管理 webshell。 - 蚁剑是一种常见的 webshell 管理工具,可能用于上传和控制 webshell。
version2.php
可能是用来进行提权操作的文件。
- 从 Wireshark 中观察到很多
-
攻击者修改了 phpMyAdmin 数据库的管理员密码
- 通过进入 phpMyAdmin,攻击者可以直接访问和修改数据库,可能修改了管理员的密码来获得进一步的权限。
-
攻击者拿到权限之后关闭了防火墙服务,并且删除了提权文件 version2.php 和 flag1,并且修改了 alinotify.php 文件内容
- 攻击者在获得系统权限后,可能关闭防火墙服务以避免被发现或被阻止进一步的攻击。
- 删除提权文件
version2.php
和flag1
,以及修改alinotify.php
文件,可能是为了清除痕迹和掩盖攻击行为。 alinotify.php
文件中的内容显示了包含一个flag
字符串,可能被攻击者替换或者添加过。
-
并没有发现攻击者留下后门
- 如果没有在系统或应用程序中找到其他可疑文件或进程,且没有发现任何可疑的网络连接或监听端口,则可以初步判断攻击者没有留下后门。
- 但为了确保系统安全,仍需进行更深入的检查,包括查找隐藏文件、未授权的用户账号以及异常的系统行为。
详细分析与补充:
- 攻击者上传 webshell 并使用蚁剑进行管理,通常会先通过漏洞或弱口令进入系统。
- 在拿到权限后,攻击者的常见行为包括关闭安全机制(如防火墙、杀毒软件)、清理攻击痕迹(删除提权文件、修改日志)、和留下后门方便再次访问。
config.inc.php
文件的位置可能被攻击者修改过,以便隐藏他们的操作痕迹。- 查看攻击者的操作历史记录(如
history
命令输出),可以帮助了解其具体操作步骤,发现和修复系统中的漏洞。