簡單瞭解WEB漏洞-RCE程式碼及命令執行漏洞
在Web應用中有時候程式設計師為了考慮靈活性、簡潔性,會在程式碼呼叫程式碼或命令執行函式去處理。比如當應用在呼叫一些能將字串轉化成程式碼的函式時,沒有考慮使用者是否能控制這個字串將造成程式碼執行漏洞。同樣呼叫系統命令處理,將造成命令執行漏洞
舉例
程式碼執行
<?php
$code = $_GET['x'];
eval($code);
?>
訪問該檔案向x傳遞phpinfo();引數
http://127.0.0.1/test.php?x=phpinfo();
成功執行程式碼
命令執行
<?php $code = $_GET['x']; system($code); ?>
訪問該檔案向x傳遞ipconfig引數
原理
漏洞形成條件:
可控變數:變數可以傳遞引數
漏洞函式:eval就是程式碼執行 system就是系統命令執行 echo就是輸出可以使用xss
web原始碼:網站應用決定網站漏洞方向
檢測
白盒:程式碼審計
黑盒:漏掃工具 公開漏洞 手工看引數值及功能點判定
靶場案例
靶場一
https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe
先輸入一個ip
可以看到執行了ping命令
所以判斷他應該是執行了類似system類命令
接下來判斷是linux還是window
隨便抓個包試下
可以看出這是一個linux
使用linux的拼接命令執行
127.0.0.1|ls
檢視頁面原始碼
發現是前端js限制
直接使用burp抓包修改
接下來檢視key.php檔案
靶場二
https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe
把程式碼跑一跑看下
<?php
echo gzinflate(base64_decode('40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA=='));
?>
也就原始碼為
eval(echo`$_REQUEST[a]`;;?>) #echo+反引號可以執行linux的shell命令 執行的命令就是反引號中的內容
a接收資料
http://219.153.49.228:42010/f.php?a=ls
讀取key
http://219.153.49.228:42010/f.php?a=tac key_46331475425346.php
靶場三
webmin登入介面
webmin存在遠端命令執行漏洞
webmin 遠端命令執行漏洞(CVE-2019-15107)
隨便輸入賬號密碼抓包
題目說明key在根目錄下
old用來接收命令直接看下根目錄
找到key檢視檔案
完事