M0nk3y's Blog

CTF - RCE

Word count: 466Reading time: 1 min
2020/08/30 Share

[toc]

RCE(远程代码\命令执行)漏洞技术点

漏洞原理

源码编写逻辑不严,参数入口过滤不严或者没过滤。

利用条件

  • 存在操作者可控的输入
  • 存在可执行任意代码的危险函数(通过各种手段,包括不安全的反序列化。
  • 存在可执行远程命令操作的接口

Linux 、Windows 管道符

Windows 系统管道符

  • “|” :直接执行后面的语句。eg: ping 127.0.0.1|whoami
  • “||”:前面执行的语句执行出错,则执行后面的语句。前面的语句只能为假,eg: ping 2||whoami

image-20200831105326087

  • “&”:前面语句为假则直接执行后面的语句,前面的语句可真可假。eg: ping 127.0.0.1&whoam
  • “&&” :前面语句为假则直接出错,也不执行后面的语句,前面语句只能为真。eg : ping 127.0.0.1&&whoami

Linux 系统管道符

区别不大,这里只列出不同的。

  • “;”:执行完前面的语句再执行后面的语句。eg : ping 127.0.0.1;whoami
  • “|”:显示后面语句执行的结果。eg: ping 127.0.0.1|whoami

PHP 可执行代码、命令的函数

PHP 允许动态函数执行

https://hack-for.fun/d8714939.html#RCE

  • eval
  • assert
  • preg_replace() + /e(php < 5.5.0) 下对替换后的字符串作为php代码执行(以eval的形式)代码执行 (php高版本已经废除
  • create_function 回调代码执行
  • system() exec() ,shell_exec,passthru.pcntl_exec,popen,proc_popen 等用于执行外部程序的command命令
  • 反引号命令执行

一些高级技巧:

  • 限制字符长度RCE
  • 无参数RCE
  • 无字母数字 webshell

其他语言(Python, JAVA

Python

subprocess 模块

可以执行shell命令的相关模块和函数有:

os.system
os.spawn
os.popen –废弃
popen2.* –废弃
commands.* –废弃,3.x中被移除

JAVA

CTF

[极客大挑战 2019]RCE ME

Author:m0nk3y

原文链接:https://hack-for.fun/dbb484a9.html

发表日期:August 30th 2020, 10:20:10 pm

更新日期:September 3rd 2020, 12:37:39 am

版权声明:原创文章转载时请注明出处

CATALOG
  1. 1. RCE(远程代码\命令执行)漏洞技术点
    1. 1.1. 漏洞原理
    2. 1.2. 利用条件
    3. 1.3. Linux 、Windows 管道符
    4. 1.4. PHP 可执行代码、命令的函数
    5. 1.5. 其他语言(Python, JAVA
      1. 1.5.1. Python
      2. 1.5.2. JAVA
  2. 2. CTF
    1. 2.1. [极客大挑战 2019]RCE ME