IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 从php入门rce -> 正文阅读

[PHP知识库]从php入门rce

(1)什么是rce

RCE(remote command/code execute)。分为远程命令执行ping以及远程代码执行evel。漏洞出现的原因是没有在输入口做输入处理。我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。

(2)php中的命令执行

【1】exec(command,output,return_var)
执行一个外部程序,exec() 执行 command 参数所指定的命令。exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时使用以下命令清空这个数组unset($output) ,以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。

【2】system(command,return_var)
函数执行 command 参数所指定的命令, 并且输出执行结果。
system和exec的区别在于,system在执行系统外部命令时,直接将结果输出到浏览器,如果执行命令
成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。

【3】passthru(command,return_var)
执行外部程序并且显示原始输出同exec()函数类似,passthru()函数也是用来执行外部命令(command)的如果要获取一个命令未经任何处理的原始输出,请使用passthru() 函数。当所执行的Unix命令输出二进制数据,并且需要直接传送到浏览器的时候,需要用此函数来替代exec()或system()函数。

? passthru与system的区别:passthru直接将结果输出到浏览器,不返回任何值,且其可以输出二进制

【4】shell_exec(command)

? 通过shell环境执行命令,并且将完整的输出以字符串的方式返回。

【5】popen(command,mode)

? 打开进程文件指针,打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。只能打开单向管道,不是’r’就是’w’;并且需要使用 pclose() 来关闭。

【6】window com

? 之前的php中的命令执行方法都是通过函数,命令执行还可以通过实例化一个类的方式,比如实例化一个com类,并调用exec方法。

(3)php中代码执行的情况

【1】eval(code)

? 把字符串 code 作为PHP代码执行,eval() 函数传入的参数必须为PHP代码,即要以分号结尾。 函数eval()语言结构是非常危险的,因为它允许执行任意PHP代码。不要允许传入任何由用户提供的、未经完整验证过的数据。

【2】assert(assertion)

? 如果 assertion 是字符串,它将会被 assert() 当做PHP代码来执行。检查一个断言是否为 FALSE 。assert()函数是直接讲传入的参数当成PHP代码执行,不需要以分号结尾。

【3】preg_replace(pattern,replacement,subject)

? pattern是匹配规则,replacement是替换语句,subject是替换对象。其中pattern可以

用修饰符,值得注意的是一般情况下修饰符直接用/e就可以将代码执行之后的结果作为匹配规则带入,但是在php7.0.0和5.5.0版本/e被弃用,用preg_replace_callback()函数代替。

【4】array_map(callback,array)

? 返回数组,是为 array1 每个元素应用callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

【5】create_function(arg,code)

? arg是变量,code是代码。从传递的参数创建一个匿名函数,并为其返回唯一的名称。通常这些参数将作为单引号分隔的字符串传递。使用单引号的原因是为了保护变量名不被解析,否则,如果使用双引号,就需要转义变量名,例如 $avar。

【6】call_user_func(callback,parameter)

? 第一个参数callback是被调用的回调函数,其余参数是回调函数的参数。把第一个参数作为回调函数调用。

【7】call_user_func_array(callback,array)

? 把callback参数作为回调函数,把参数array作为回调函数的的参数传入。调用回调函数,并把array中的某一个元素的值作为回调函数的参数。

【8】array_filter(array,callback)

? 用回调函数过滤数组中的单元依次将array数组中的每个值传递到callback函数。如果callback函数返回true,则array数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

(4)一般的过滤方法

【1】用功能模块对输入做过滤

? 说明:有‘白名单’和‘黑名单’两种形式,白名单更绝对但在某些情况下就不适用

【2】禁用高危系统函数

? 说明:首先是上面所提的函数,其它函数还有phpinfo()、fsockopen()、readlink()等

【3】开启php安全运行模式

? 说明:在php.ini文件中把safe_mode变量的值设为on,之后开启。当安全模式打开的时候,一些尝试访问文件系统的函数功能将被限制。以下函数列表的功能将会受到限制:chdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink一些php扩展中的函数将会受到影响。在php安全模式打开的时候,需要执行系统程序的时候,必须是在safe_mode_exec_dir选项指定目录的程序,否则执行将失败。即使允许执行,那么也会自动的传递给escapeshellcmd函数进行过滤。以下执行命令的函数列表将会受到影响:exec,shell_exec,passthru,system,popen(escapeshellcmd类似sql的预编译,都是将一段输入作为字符串,不会执行。具体方法是在输入两端加入单引号)

(5)一般绕过方法

【1】在某些情况下可以通过管道符或者逻辑运算符

? 说明:像是’|’、’&’、’;’、’||’、’&&’、’>’。具体使用方法类似”echo ‘字符串’ > 文件的绝对路径“,或者在ping功能的后面管道符或者‘&&’构造如下语句”ping ip | 系统命令“。

【2】编码的方式来解决

? 说明:比如通过char()、base64_decode()两个函数,在经过php代码块的前提下可以将代码编码之后用ascii编码方式、base64编码方式绕过。值得一提的是在linux中也有内置base64解码语句,我们可以用linux中的解码语句进行绕过语句构造如下“base64 -d 【code】”,最后可以再通过管道符执行构造语句如下“base64 -d 【code】| sh“来实现绕过。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:46:44  更:2021-08-07 11:48:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 23:00:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码