日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【CyberSecurityLearning 59】OS命令注入

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【CyberSecurityLearning 59】OS命令注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

OS命令注入

原理以及成因

漏洞危害

相關函數

1、system()

2、 exec()

3、shell_exec()? 應用最廣泛

4、passthru()

5、popen()

6、反引號

漏洞利用

1、查看系統文件

2、 顯示當前路徑(絕對路徑)

3、 寫文件

?防御方法

??? ?DVWA?? ? 命令注入


?

OS命令注入

原理以及成因

??? 程序員使用腳本語言(比如PHP )開發應用程序過程中,腳本語言開發十分快速、簡介,方便,但是也伴隨著一些問題。比如說速度慢,或者無法接觸系統底層,如果我們開發的應用,特別是企業級的一些應用需要去調用一些外部程序(系統命令或者exe等可執行文件)。當應用需要調用一些外部程序時就會用到一些系統命令的函數。
??? 應用在調用這些函數執行系統命令的時候,如果將用戶的輸入作為系統命令的參數拼接到命令行中,在沒有過濾用戶的輸入的情況下,就會造成命令執行(也就是命令注入)漏洞 。
?? ?1. 用戶輸入作為拼接
?? ?2. 沒有足夠的過濾


漏洞危害

??? 1. 繼承Web 服務器程序權限(Web 用戶權限),去執行系統命令【通過web應用去執行系統命令,繼承的是web用戶的權限】
??? 2. 繼承Web 服務器權限,讀寫文件
??? 3. 反彈Shell(服務器主動連接攻擊方就是反彈shell)
??? 4. 控制整個網站
??? 5. 控制整個服務器


相關函數

1、system()

system() 能夠將字符串作為OS 命令執行,自帶輸出功能。測試代碼如下

----system.php
<meta charset='gb2312'>
<?php
if(isset($_GET['cmd'])){
??? echo "<pre>";
??? system($_GET['cmd']);
}else{
??? echo"
??? ?cmd=ipconfig
??? ";
}
?>
----

?

2、 exec()

??? exec() 函數能將字符串作為OS 命令執行,需要輸出執行結果

測試代碼如下
----exec.php
<meta charset="gb2312">
<?php
if(isset($_GET['cmd'])){
??? echo "<pre>";
??? print exec($_GET['cmd']);
}else{
??? echo"
??? ?cmd=whoami
??? ";
}
?>
----
?

3、shell_exec()? 應用最廣泛

也需要print


??? 測試代碼如下
----shell_exec.php
?<?php
if(isset($_GET['cmd'])){
??? print shell_exec($_GET['cmd']);
}else{
??? echo"?cmd=whoami";
}
?>
----

?

4、passthru()

自帶輸出


??? 測試代碼如下
----passthru.php
<?php
if(isset($_GET['cmd'])){
??? passthru($_GET['cmd']);
}else{
??? echo"?cmd=whoami";
}
?>
----

?

5、popen()

??? popen() 也能夠執行OS 命令,但是該函數命令執行結果并不會返回結果,而是返回一個文件指針。無論返回什么,我們關心的是命令執行了

也就是說,我們在寫這些命令的時候,我們需要把它文件的執行結果導入到一個文件中

打開1.txt


??? 測試代碼如下
----popen.php
<?php
if(isset($_GET['cmd'])){
??? $cmd=$_GET['cmd'].">> 1.txt";
??? popen($cmd,'r');
}else{
??? echo"?cmd=whoami";
}
?>
----
?
??? 查看1.txt 文件

?

6、反引號

不叫函數,叫一種語言結構
??? 反引號[``] 內的字符串,也會被解析成OS 命令。


??? 測試代碼如下
-----------------------------------------------------------------
<?php
if(isset($_GET['cmd'])){
??? $cmd=$_GET['cmd'];
??? print `$cmd`;
}else{
??? echo"?cmd=whoami";
}
?>
-----------------------------------------------------------------

?


漏洞利用

??? OS 命令注入漏洞,攻擊者直接繼承Web 用戶權限,在服務器上執行任意命令,危害特別大。以下命令均在windows 系統下測試成功。

利用方法:

1、查看系統文件

??? 提交參數[?cmd=type c:\windows\system32\drivers\etc\hosts],查看系統hosts 文件。(type是查看文件的dos命令)

2、 顯示當前路徑(絕對路徑)

??? 提交參數[?cmd=cd]

3、 寫文件

??? 提交參數[?cmd=echo "<?php phpinfo();?>" > C:\phpStudy\WWW\Commmandi\shell.php]
?
??? 頁面沒有報錯,說明文件寫入成功。訪問shell.php 文件。

?
防御方法

??? 1. 盡量減少命令執行函數的使用,并在disable_functions 中禁用(在php.ini中)
??? 2. 在進入命令執行的函數或方法之前,對參數進行過濾
??? 3. 參數的值盡量使用引號包裹,并在拼接前調用addslashes 進行轉義


?? ?
DVWA?? ? 命令注入

我在本機的wamp下搭建了

http://127.0.0.1/DVWA-master/index.php? 進入界面
默認賬號為: admin,默認密碼為: password:


我們這么去執行自己想要的命令呢?把前面的ping命令和諧
在框中輸入127.0.0.1 | whoami

調成中級難度:

high級別

代碼審計


找到命令注入?

low
?? ?127.0.0.1| whoami
?? ?127.0.0.1|whoami
?? ?127.0.0.1&&whoami
?? ?127.0.0.1;whoami?? ??? ??? ??
?? ?127.0.0.0.1||whoami?? 前面的命令執行失敗后去執行后面
?? ?
medium
?? ?127.0.0.1| whoami
?? ?127.0.0.1|whoami
?? ?127.0.0.0.1||whoami
??? ?127.0.0.1&&&&whoami (雙寫)? ??? ???? x
?
high

127.0.0.1|whoami

?

總結

以上是生活随笔為你收集整理的【CyberSecurityLearning 59】OS命令注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。