RDG防御指南(例题及方法)
字数 1545 2025-08-25 22:59:20

RDG防御指南详解

目录结构知识

常见站点默认目录

  • Nginx目录: /usr/local/nginx
  • MySQL目录: /usr/local/mysql
  • MySQL数据库所在目录: /usr/local/mysql/var/var/lib/mysql
  • PHP配置文件目录: /usr/local/php/etc/php/x.x/
  • Nginx站点默认目录: /var/www/html/usr/local/nginx/html
  • Apache站点默认目录: /var/www/html/usr/local/apache/
  • Java目录: 通常为 /usr/webapp/xxx/app/xxx,可通过 ps -aux 查看

Web防御实例

例题1:Flask权限控制

题目描述: flag在/secret,只有admin可以访问,其他用户不行;修补白名单命令: ['mv', 'cp', 'chmod']

防御方法:

  1. 了解flask_login模块鉴权:

  2. 设置权限:

    • /admin/console路由添加条件判断
    if not current_user.is_admin:
        return "Access Denied", 403
    
  3. 过滤其他路由:

    • 检查/process_file路由是否可直接读取/secret
    • 应用相同WAF规则
  4. 打包脚本:

#!/bin/bash
mv main.py /app/main.py
chmod 755 /app/main.py

例题2:不安全组件移除

题目描述: 金融系统引入不安全组件,存在后门;修补白名单命令: ['mv', 'cp', 'chmod','rm']

防御步骤:

  1. 通过ps -aux定位Tomcat运行目录: /tomcat/webapps/ROOT
  2. 发现.shell.jsp木马文件
  3. 检查Tomcat的lib目录,查找最近修改的依赖文件
  4. 使用jadx反编译可疑jar文件,发现Filter内存马

修补脚本:

#!/bin/bash
rm -fr /tomcat/webapps/ROOT/.*.jsp
cp -pa shell.jsp /tomcat/webapps/ROOT/.shell.jsp
cp -pa index.jsp /tomcat/webapps/ROOT/index.jsp
rm -fr /tomcat/webapps/ROOT/*.html
rm -fr /tomcat/lib/tomcat-i18n-bk.jar

例题3:文件读取漏洞修复

题目描述: 存在文件读取漏洞

防御方法:

  1. 通过ps -aux定位Java应用路径: /meeadmin/mee-admin.jar
  2. 使用IDEA分析源代码,定位FileUploadControllerCommonFileController
  3. 发现fileNamefilePath参数存在任意文件下载漏洞
  4. 修复方法: 过滤filePath中的../

修补脚本:

#!/bin/bash
mv mee-admin.jar /meeadmin/mee-admin.jar

例题4:Pwn格式化字符串漏洞

题目描述: Write memos存在格式化字符串漏洞

修复方案:

  1. 方案一:

    • 在eh_frame段添加%s格式化字符串
    • 添加lea rdi addr指令
    • 修改eh_frame段为可执行权限
  2. 方案二:

    • 将printf替换为puts函数
    • 调整plt函数偏移量(0x79-0x20)
    • 移除多余的puts调用

语言特定防御方法

Java防御

工具:

  • IDEA Ultimate Edition
  • Jadx反编译工具

关键函数:

  • InputStream/OutputStream/FileInputStream (文件操作)
  • readObject/writeObject (反序列化)
  • Execute/URLConnection/executeMethod (请求伪造)

过滤示例:

String[] filterList = {"apple", "banana", "cherry"};
String str = "ana";
for(String s : filterList) {
    if(s.contains(str)) {
        System.out.println("Hacker!");
        return;
    }
}

PHP防御

WAF函数示例:

function wafrce($str){
    return !preg_match("/openlog|syslog|readlink|.../i", $str);
}

function wafsqli($str){
    return !preg_match("/select|and|\*|\x09|.../i", $str);
}

function wafxss($str){
    return !preg_match("/\'|http|\"|\`|.../i", $str);
}

Python防御

过滤方法:

filter_list = ["apple", "banana", "cherry"]
strings = "ana"
for i in filter_list:
    if i in strings:
        print("Hacker!")

SSTI防御: 过滤{{}}{}{%class'"._等字符

Node.js防御

关键词过滤:

const keywords = ["apple", "banana", "cherry"];
for(const i of keywords) {
    if(code.includes(i)) {
        console.log("Hacker!")
    }
}

服务重启命令

Go语言

#!/bin/bash
kill -9 $(pidof app)
cp 修改后的附件 /app
chmod +x /app/app 2>&1 >/dev/null &

Python语言

cp /app.py /app/app.py
ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9
cd /app && nohup python app.py >> /opt/app.log 2>&1 &

PHP语言

#!/bin/bash
cp /index.php /var/www/html/index.php

Node.js语言

#!/bin/sh
cp server.js /app/server.js
ps -ef | grep node | grep -v grep | awk '{print $2}' | xargs kill -9
cd /app && nohup node server.js >> /opt/aa.log 2>&1 &

Java语言

#!/bin/sh
mv -f ROOT.war /opt/tomcat/webapps/ROOT.war
sh /opt/tomcat/bin/shutdown.sh
nohup sh /opt/tomcat/bin/catalina.sh run > myout.txt 2>&1 &
RDG防御指南详解 目录结构知识 常见站点默认目录 Nginx目录 : /usr/local/nginx MySQL目录 : /usr/local/mysql MySQL数据库所在目录 : /usr/local/mysql/var 或 /var/lib/mysql PHP配置文件目录 : /usr/local/php 或 /etc/php/x.x/ Nginx站点默认目录 : /var/www/html 或 /usr/local/nginx/html Apache站点默认目录 : /var/www/html 或 /usr/local/apache/ Java目录 : 通常为 /usr/webapp/xxx 或 /app/xxx ,可通过 ps -aux 查看 Web防御实例 例题1:Flask权限控制 题目描述 : flag在 /secret ,只有admin可以访问,其他用户不行;修补白名单命令: ['mv', 'cp', 'chmod'] 防御方法 : 了解flask_ login模块鉴权 : 使用 current_user 代理对象检查用户权限 参考文档: Flask-Login中文文档 设置权限 : 在 /admin/console 路由添加条件判断 过滤其他路由 : 检查 /process_file 路由是否可直接读取 /secret 应用相同WAF规则 打包脚本 : 例题2:不安全组件移除 题目描述 : 金融系统引入不安全组件,存在后门;修补白名单命令: ['mv', 'cp', 'chmod','rm'] 防御步骤 : 通过 ps -aux 定位Tomcat运行目录: /tomcat/webapps/ROOT 发现 .shell.jsp 木马文件 检查Tomcat的lib目录,查找最近修改的依赖文件 使用jadx反编译可疑jar文件,发现Filter内存马 修补脚本 : 例题3:文件读取漏洞修复 题目描述 : 存在文件读取漏洞 防御方法 : 通过 ps -aux 定位Java应用路径: /meeadmin/mee-admin.jar 使用IDEA分析源代码,定位 FileUploadController 和 CommonFileController 发现 fileName 和 filePath 参数存在任意文件下载漏洞 修复方法: 过滤 filePath 中的 .. 和 / 修补脚本 : 例题4:Pwn格式化字符串漏洞 题目描述 : Write memos存在格式化字符串漏洞 修复方案 : 方案一 : 在eh_ frame段添加%s格式化字符串 添加lea rdi addr指令 修改eh_ frame段为可执行权限 方案二 : 将printf替换为puts函数 调整plt函数偏移量(0x79-0x20) 移除多余的puts调用 语言特定防御方法 Java防御 工具 : IDEA Ultimate Edition Jadx反编译工具 关键函数 : InputStream / OutputStream / FileInputStream (文件操作) readObject / writeObject (反序列化) Execute / URLConnection / executeMethod (请求伪造) 过滤示例 : PHP防御 WAF函数示例 : Python防御 过滤方法 : SSTI防御 : 过滤 {{}}{}{%class'"._ 等字符 Node.js防御 关键词过滤 : 服务重启命令 Go语言 Python语言 PHP语言 Node.js语言 Java语言