day8 启用docker搭建环境

在vps安装docker和docker-compose

安装docker

安装docker-compose

上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因

1.Tomcat7+ Weak Password && Backend Getshell Vulnerability

Weak PassWord
复现
  1. 发现tomcat管理后台,进行弱口令尝试。

  1. 账号密码尝试tomcat后登录后台。

漏洞成因
  1. 因为网站管理因为懒惰没有修改tomcat的默认密码。
Backend Getshell Vulnerability
复现
  1. 接着上面内容,进入管理后台,发现行上传war文件,war 包与 jar 包是很类似的,不过 war 包通常用于网站,它是一个可能直接运行的 web 模块。

  1. 所以可以将木马编译为war文件。这里写jsp木马使用jar进行编译。
jar -cvf shell.war shell.jsp

  1. 将shell.war上传。。这里可以看到已经上传成功了。上传shell的目录为/shell/shell.jsp

  1. 使用蚁剑进行连接测试。测试连接成功。获取到webshell

漏洞成因
  1. 网站没有对存储目录进行权限限制。让其不能使用系统的高级权限的函数。
  2. 未对war文件进行检测,检测是否存在危险的函数。

2.Weblogic 常规渗透测试环境

复现
  1. 打开网站显示404

  1. 进行目录扫描。但是什么都没显示出来。

  1. 进行手动测试。存在后台管理平台。进行弱口令报破。

收集相关的弱口令字典。Default Passwords | CIRT.net,进行尝试。进入后台。

  1. 该网站存在文档任意读取漏洞。
  2. 访问http://47.109.40.237:7001/hello/file.jsp=/etc/passwd可以读取到passwd

  1. 缘于weblogic密码使用AES进行加密。因此得找到密文和密钥档案,然后进行解密。

第一获取到密文文件

http://47.109.40.237:7001/hello/file.jsp?path=security/SerializedSystemIni.dat

密文:ÙÐâè ‡P°ú›•R#ô‚ìþV—ä"Oœ¡Sü£‰ZBPh1†¸Š¯‚r=(¨"Ÿ(s8ØÅù¯6QÇç

将其copy为file进行保存。

  1. 通过同样的方法获取到密钥文件。

http://47.109.40.237:7001/hello/file.jsp?path=config/config.xml

密钥:yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

  1. 最后使用weblogic_decrypt.jar进行破解密码。
漏洞成因
  1. 管理员利用了弱口令
  2. 存在文件读取后门
  3. 管理员为对重要文件设置访问权限以及未修改默认的存储位置。

3.Apache HTTPD 换行解析漏洞(CVE-2017-15715)

  1. 创建一个文件叫1.php

  1. 上传这个文件。但是上传不了。显示bad file

  1. 通过burpsuit进行抓包修改php后缀。查询ascii表知道php对应70 68 70,所以将70后面的一个字节修改为0x0A。

以及下面的文件名的php后面加上0x0a。

  1. 然后repeate进行重放。未返回badfile说明上传成功。

  1. 进行文件试试看。访问http://47.109.40.237:8080/evil.php%0a成功被php解析。

漏洞成因

httpd存在存在换行漏洞,使其php%0a会被解析。

4.Apache Druid Embedded Javascript Remote Code Execution (CVE-2021-25646)

复现
  1. 目标站点:http://10.17.179.169:8888/构造post请求

  1. 返回值获取到id

漏洞成因

网站太信任用户给出的数据了。为对其进行充分的处理过滤。

总结RCE漏洞的原理和利用条件及解决方案

原理

RCE 漏洞的原理是应用程序在某些情况下会执行由用户供应的输入(通常是不受信任的数据),并且这些输入未经过适当的验证和过滤。攻击者通过构造特定的输入,能够绕过安全机制并使得应用程序在不安全的上下文中执行他们的恶意代码。

常见的 RCE 漏洞产生的原因包括:

  1. 命令注入:在处理命令时,应用程序未能正确地转义或过滤用户输入,这可能导致构建的命令被篡改。例如,在使用 exec()system()popen() 等系统命令执行函数时。
  2. 代码注入:在应用程序使用的代码中直接插入用户输入,而没有进行严格的检查和过滤。动态构建 SQL 语句、JavaScript 代码等都可能导致代码注入挑战。
  3. 反序列化漏洞:不安全的反序列化可能导致攻击者提供恶意的序列化素材,从而在反序列化过程中触发任意代码执行。
  4. 模板注入:在利用模板引擎(例如 Freemarker、Velocity、Thymeleaf 等)渲染动态内容时,如果用户输入未被正确处理,可能导致 RCE。
  5. 文件包含漏洞:一些编程语言或框架支持文件包含(如 PHP 的 include()require()),若用户输入未正确过滤,可以导致本地或远程文件被执行。

利用条件

成功利用 RCE 漏洞通常必须满足以下条件:

  1. 用户可控输入点:用户输入可以直接或间接影响应用程序的代码执行路径或行为。
  2. 缺乏输入验证或过滤:应用程序没有正确验证和过滤用户输入,或者利用了错误的过滤方式。
  3. 代码执行环境:目标架构或应用程序必须有代码执行环境,如行运行系统命令、加载动态内容、反序列化数据等。

解决方案

为了防止 RCE 漏洞的发生,以下是一些常见的解决方案:

  1. 输入验证和过滤
    • 严格验证用户输入:对所有来自用户的输入进行严格的验证和过滤,使用白名单而非黑名单。
    • 使用参数化查询:对于 SQL 查询,避免直接拼接字符串,使用参数化查询或预编译语句。
    • 禁用危险函数:避免使用 eval()exec()system() 等直接执行命令的函数。如果确实需要,可以对输入进行强制转义和过滤。
  1. 安全配置
    • 禁用不必要的功能和特性:如禁用 PHP 中的 allow_url_include,关闭危险的文件操作和远程文件包含。
  1. 访问控制
    • 最小权限原则:应用程序应使用最低权限的用户来运行,以减少潜在的攻击面。
    • 隔离环境:将不同的服务运行在隔离的环境(如容器、虚拟机)中,以便即使发生漏洞,影响也被限制在最小范围内。

posted @ 2025-12-18 19:24  clnchanpin  阅读(50)  评论(0)    收藏  举报