1. 渗透测试前的准备工作
1.1 靶场环境搭建与访问
在开始日志分析之前,我们需要先搭建好测试环境。CISP-PTE靶场提供了一个模拟真实渗透测试场景的平台,特别适合练习日志分析技能。靶场地址通常会提供一个Web界面,上面会显示当前挑战的描述和提示信息。
提示:在实际渗透测试中,首先要明确测试范围和目标。这个靶场明确给出了目标:分析服务器日志找出入侵痕迹。
访问靶场后,我们看到页面提示:"最近管理员很苦恼,发现自己的服务器被人入侵了,但是不知道原因,你能帮帮他吗?日志下载地址:当前目录下的access.log.bak"。这是一个典型的数字取证挑战,我们需要通过分析Web服务器日志来发现异常访问行为。
1.2 日志文件获取
点击"开始答题"按钮后,系统会自动下载access.log.bak文件。这个文件是Apache服务器的访问日志备份,记录了所有对Web服务器的请求。在实际工作中,这类日志通常位于/var/log/apache2/或/var/log/httpd/目录下。
日志文件下载地址示例:
code复制http://4101d60d.clsadp.com/access.log.bak
2. 日志分析工具选择与配置
2.1 UltraEdit编辑器使用技巧
虽然可以使用任何文本编辑器查看日志文件,但专业编辑器如UltraEdit提供了更强大的分析功能。UltraEdit支持大文件处理、正则表达式搜索、书签标记等高级功能,非常适合分析大型日志文件。
打开日志文件后,我们可以看到典型的Apache访问日志格式:
code复制172.16.12.1 - - [22/Jan/2018:14:51:43 +0800] "GET /index.php HTTP/1.1" 200 1085
每行日志包含:客户端IP、访问时间、请求方法、请求URI、HTTP版本、状态码和返回字节数。
2.2 正则表达式筛选关键信息
我们需要筛选出所有成功访问PHP文件(状态码200)的请求记录。这可以通过以下正则表达式实现:
code复制^.*"[A-Z]+ /.*\.php.*" 200
正则表达式分解说明:
^.*匹配行首任意字符"匹配引号[A-Z]+匹配HTTP方法(GET/POST等)/.*\.php匹配以.php结尾的URL路径.*"匹配引号前的剩余内容200表示HTTP成功状态码
在UltraEdit中使用这个正则表达式的步骤:
- 按Ctrl+F打开查找对话框
- 输入正则表达式
- 勾选"正则表达式"选项
- 确保正则引擎选择"Unix"
- 点击"高级"-"列出所有行"
搜索结果会显示共有291条匹配记录,这说明服务器上有大量对PHP文件的成功访问。
3. 深入日志分析技术
3.1 可疑请求识别
通过分析筛选出的PHP访问记录,我们需要寻找异常模式。常见可疑迹象包括:
- 访问不存在的文件
- 异常的URL参数
- 重复的失败登录尝试
- 访问管理后台的请求
在本次分析中,我们发现了一个可疑路径:/admin/goodluck.php。这个文件名称不符合常规命名规范,且位于admin目录下,值得重点关注。
3.2 使用grep命令行工具分析
虽然UltraEdit提供了图形界面,但在实际工作中,Linux下的grep命令更为高效。我们可以使用以下命令提取所有成功访问PHP的请求并保存到新文件:
bash复制grep '^.*"[A-Z]\+ /.*\.php.*" 200' access.log.bak > php_200_requests.log
命令参数说明:
grep:Linux搜索工具'>':输出重定向到文件- 生成的文件
php_200_requests.log只包含成功访问PHP文件的记录
3.3 异常请求特征分析
通过分析提取出的日志,我们发现了几类可疑请求:
- 路径遍历尝试:
code复制/index.php?case=../../../../../../../../../../../../../../../../etc/passwd%00
这种请求试图通过路径遍历访问系统敏感文件。
- SQL注入特征:
code复制/index.php?a=lists&agent=2%20onmoonmouseoveruseover=alert(42873)%20y=
包含SQL关键词和特殊字符,明显是注入尝试。
- 可疑的管理接口访问:
code复制/index.php/admin/goodluck.php
这个不常见的PHP文件很可能是攻击者留下的后门。
4. 渗透利用与验证
4.1 可疑路径验证
发现/admin/goodluck.php路径后,我们直接在浏览器中访问该URL。如果这个文件确实存在且可访问,服务器会返回响应内容。
访问示例:
code复制http://靶场地址/admin/goodluck.php
4.2 Flag获取
成功访问可疑路径后,页面显示了flag值,这证实了我们的分析结果。在实际渗透测试中,这种后门文件可能包含更复杂的功能,如命令执行、文件上传等。
5. 安全加固建议
5.1 日志监控策略
基于这次分析,建议实施以下日志监控策略:
- 实时监控对/admin目录的访问
- 警报异常的PHP文件请求
- 监控包含特殊字符的URL参数
- 记录并分析所有状态码为200的PHP文件访问
5.2 服务器安全配置
为防止此类入侵,应加强服务器安全配置:
- 限制admin目录的访问IP
- 禁用不必要的PHP功能
- 定期更新Web应用程序
- 实施严格的文件权限控制
- 使用Web应用防火墙(WAF)过滤恶意请求
6. 渗透测试经验总结
在实际渗透测试工作中,日志分析是发现入侵痕迹的重要手段。通过这次CISP-PTE靶场练习,我总结了以下几点经验:
- 正则表达式是日志分析的利器,需要熟练掌握
- 关注成功请求(200)比失败请求更有价值
- 异常文件名和路径往往是突破口
- 自动化工具可以提高分析效率,但不能完全替代人工分析
- 保持对新型攻击手法的学习,及时更新检测规则
日志分析需要耐心和细致,一个不起眼的记录可能就是入侵的关键证据。建议定期进行类似的练习,保持分析技能的敏锐度。