[HNCTF 2022 WEEK2]easy_include

1.题目

1
2
3
4
5
6
7
8
9
10
11
12
<?php   
//WEB手要懂得搜索

if(isset($_GET['file'])){    
$file = $_GET['file'];
if(preg_match("/php|flag|data|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=/i", $file)){         
die("error");     
}     
include($file);
}else{    
highlight_file(__FILE__);
}

看到这里限制了很多东西,有一个file参数


知识点:

WhatWeb (识别网站技术栈和特征的开源Web扫描工具)

可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。

WhatWeb的目标是通过分析网站的内容,提供有关目标的技术信息,这对于安全测试、漏洞评估和信息搜集等任务非常有用。

特点和功能:
  • 自动识别技术栈:
    WhatWeb能够自动检测网站使用的各种技术,包括Web服务器、Web应用框架、CMS、JavaScript库等。
  • 插件系统:
    WhatWeb具有可扩展的插件系统,允许用户自定义检测规则和添加新的检测模块。
  • 多种输出格式:
    WhatWeb支持多种输出格式,包括文本、JSON和XML等,使其易于集成到其他工具和流程中。
  • 灵活性:
    用户可以通过命令行参数或配置文件来控制WhatWeb的行为,例如设置扫描深度、使用代理、指定用户代理等。
  • 分析页面内容:
    除了识别技术栈,WhatWeb还能分析页面内容,识别关键字、文件路径、目录结构等信息。
指令:
1.普通扫描

whatweb 域名/文件(文件中存放多个域名)

2.详细扫描(推荐)

whatweb -v 域名

3.扫描强度

whatweb -v -a 等级 域名
WhatWeb 有 4 种扫描级别,通过数字 1~4 选择,默认为1:

  • stealthy 每个目标发送一次http请求,并且会跟随重定向
  • unused 不可用(从2011年开始,此参数就是在开发状态)
  • aggressive 每个目标发送少量的http请求,这些请求时根据参数为1时结果确定的
  • heavy 每个目标会发送大量的http请求,会去尝试每一个插件
4.内网扫描

whatweb --no-errors -t 255 IP/子网掩码

5.导出结果

whatweb -v 域名 --log-xml=文件名

1
2
3
4
5
6
7
8
--log-brief=FILE             简单的记录,每个网站只记录一条返回信息
--log-verbose=FILE 详细输出
--log-xml=FILE 返回xml格式的日志
--log-json=FILE 以json格式记录日志
--log-json-verbose=FILE 记录详细的json日志
--log-magictree=FILE xml的树形结构
--log-object=FILE ruby对象格式
--log-mongo-database mongo数据库格式
6.查看插件

whatweb -l

7.查看指定插件信息

whatweb --info-plugins="插件名"


2.分析

1.有一个file参数,用../../../../../../../etc/passwd尝试一下是否有文件包含

成功读取到passwd文件,存在文件包含
2.用whatweb扫描一下网址,看一下网站的基本信息,存在nginx框架

3.思路

这里有文件包含漏洞,是nginx框架,可以用nginx中的access.log(访问日志文件)进行日志注入,实现远程连接
(原因:access.log会记录客户端对 Nginx 服务器的 HTTP 请求详情,此时如果我们在一个HTTP 请求中写入木马,并进行发送,木马会成功写入access.log中,这时我们就可以进行远程连接)


知识点:

access.log (访问日志文件)

/var/log/nginx/access.log
路径可在 Nginx 配置(如 nginx.conf )里通过 access_log 指令自定义
Nginx 运维、分析用户行为和保障服务稳定的关键文件

记录客户端对 Nginx 服务器的 HTTP 请求详情

  • 记录内容:
    客户端 IP 、请求时间、请求方法(如 GET/POST )、请求 URI(访问路径 )、HTTP 协议版本、响应状态码(如 200 成功、404 找不到 )、发送字节数、Referer(来源页面 )、User - Agent(客户端浏览器 / 设备信息 )等 。
  • 主要用途:
    • 分析网站流量,比如统计访问量、热门页面、用户分布;
    • 排查问题,像定位 404 报错来源、慢请求;
    • 安全审计,识别恶意请求(如高频攻击、异常 UA );
    • 辅助优化,依据用户行为、浏览器信息做页面 / 性能适配 。

4.操作

访问access.log文件,并进行抓包

这里没有其他的参数,所以只能在User-Agent中写入木马语句

发送后,用蚁剑进行连接

在根目录下,看到flag文件,得到flag