Web滲透之系統入侵與提權維權

滲透測試步驟

信息收集
搜集一些IP地址以及對應的端口開放情況,看看是否有80、3306、22等等端口開放,以及操作系統和版本號,同時也要掃描可能存在的漏洞
漏洞利用
建立據點
漏洞利用成功后,通常會在目標機上獲得一個webshell,雖然webshell可以執行命令和管理文件,但畢竟不是真正的shell,而且也不穩定,因此就需要反彈shell到一個穩定的環境
反彈shell會遇到的問題:
反彈命令不存在
禁止出口流量
限定向外訪問端口
流量審查
權限提升和維持

反彈shell:

攻擊機在自己的主機上開啟一個監聽端口,然后誘使受害者去執行一個反向連接的命令,連接回攻擊者的機器

常用的反彈shell命令
nc、telnet、awk、exec

基于編程語言反彈shell
PHP、Java、Ruby、Perl、Python

加密反彈shell
在攻擊機上生成證書
然后在攻擊機上進行監聽
最后在目標機上執行反彈

正向連接腳本
首先在目標主機創建一個python文件,里面代碼的功能就是正向連接攻擊機
其次在目標主機上執行這個python文件
最后在攻擊機上進行監聽,實現正向連接

對于lampiao靶機的入侵實戰:

首先進行信息搜集,獲取其IP地址以及對應的端口開放情況,操作系統以及版本號
當然也可以使用Nessus進行掃描
掃描出來的端口為22,80,1898
對于22端口來說的話,我們可以使用工具進行爆破
當然也可以使用御劍對后臺文件進行掃描
接著我們基于搜集出來的信息去msf看一下是否有存在的已知漏洞可以利用

MsfVenom木馬制作

第一種方法就是直接制作一個木馬上傳到目標主機上
第二種方法就是進程注入,使用msfvenom將木馬注入到一個進程中,然后上傳到目標機器上
第三種方法就是程序捆綁,就是將制作的木馬與一個應用程序進行捆綁,當應用程序上線的時候,木馬也會上線,比如使用putty.exe進行實驗

如何制作一個免殺的木馬
可以適用編碼或代碼混淆來生成木馬

同時msfvenom也只支持生成很多格式的可執行文件
比如asp、aspx,dll等

使用shellcode生成木馬

1、利用python執行shellcode
我們可以使用msfvenom來生成shellcode,然后將shellcode和加載器代碼放到一個python文件當中去,然后去執行這個python文件,然后就能夠上線了
當然也可以使用pyinstaller工具將其打包為exe文件,上傳至殺毒軟件看其能否免殺
2、python加載器實現免殺
也就是使用Shellcode Loader這個工具
將我們生成的shellcode使用這個工具的加密程序進行加密,輸出一個加密過后的Shellcode,然后將這個加密過后的shellcode復制到Shellcode.py的密文那里,然后運行這個文件,使其上線成功,然后使用pyinstaller生成exe,看看是否免殺

免殺基礎與加解密

免殺的概念:能使病毒木馬被殺毒軟件查殺的技術
殺毒的原理:
靜態查殺
動態查殺
云查殺

免殺的方法:
1、對Shellcode進行加密處理
2、對加載器代碼進行加密或編碼處理
3、分離免殺
4、使用進程注入或使用傀儡進程
5、通過加殼的方式對木馬進行混淆

Linux系統提權

1、工具的使用
使用linux-exploit- suggester或者Nessus進行主機漏洞掃描,結合掃描出來的漏洞進行提權

2、SUDO提權(內核漏洞導致的提權)
使用命令sudoedit -s /看看系統回顯內容,如果是not a regular file,則說明存在SUDO這個漏洞,如果是其他的話就沒有了
我們就當存在這個漏洞,使用sudo -l看看該登錄有沒有root權限,如果有的話直接提權成功

3、SUID命令提權
如果該用戶有s的權限,那么它允許用戶執行的文件以文件擁有者的身份去運行,也就是越權執行命令
我們可以執行find命令去看哪個文件具有s的權限,但并不是所有文件具有s權限就能夠實現提權了,比如說是/bin/bash、/bin/cat、/bin/find、/bin/env、/bin/vi等等

4、Cron定時任務
使用crontab -l或者cat /var/spood/cron/root
如果找到可以有權限修改的計劃任務腳本,就可以去修改腳本實現提權,本質上就是文件配置不當
基本原理:借助root用戶的定時任務,去修改其運行的腳本,用關鍵命令授予SUID權限

5、環境變量提權
開發一段C程序進行執行,里面包含命令執行,包括cat、vi等等,然后進行編譯成新的文件,然后為編譯的程序授予S權限
假如說C程序里的命令是cat,我們就進入到系統的臨時目錄中,將/bin/bash復制到臨時目錄的cat文件里,然后為其添加新的環境變量,然后去執行這個文件就能實現提權,前提是用戶得有權限寫文件和添加新的環境變量

Linux權限維持

1、創建賬戶

1.1 修改/etc/passwd,創建擁有root權限的用戶
1.2 創建擁有sudo權限的賬號
先創建一個普通用戶,而后在/etc/passwd文件中為該用戶添加sudo權限
1.3 普通用戶?SUID shell
先將/bin/bash復制到/bin/.shell目錄里,是為了能夠讓.shell文件隱藏起來,不容易被發現,然后使用普通用戶去執行這個文件即可實現提權

2、文件屬性修改

2.1 修改文件創建時間
2.2 創建隱藏文件
2.3 文件上鎖,防止用戶直接刪除文件

3、SSH后門

3.1 軟連接后門
建立一個軟連接,然后通過5555端口掃描訪問ssh服務
3.2 SSH隱身登錄
隱身登錄系統,不會被last who w等指令檢測到
3.3 上傳公鑰,ssh免密登錄
客戶端生成對應的公鑰和私鑰,然后在服務端/root的目錄下創建一個.ssh目錄,上傳公鑰到此目錄下,并修改文件名為authorized_keys,上傳方式有很多種,比如使用scp上傳,接著去檢查服務器的ssh配置,要將允許使用公鑰登錄的設置打開
3.4 ssh warpper后門

4、Crontab定時任務

創建一個Crontab定時任務,但很容易被發現,我們可以利用cat隱藏將一部分內容隱藏起來,再添加no crontab for whoami,讓用戶以為沒有定時任務
原理就是cat打開文件時會遇到一些特殊的符號,比如\r,\n,\f,輸出內容換頁換行導致隱藏前面的部分內容

5、自啟動腳本

只要執行了這些腳本,在條件觸發的時候會進行任意提權命令

6、其他方式

6.1 cat隱藏
可以隱藏php一句話木馬
6.2 隱藏進程

基于Redis實戰

Redis : 緩存服務器,數據都保存到內存中,所有的I/O操作全部都在內存中進行,如果斷電或者停止服務,數據就會消失,而內存型數據庫恰好可以彌補類似于MySQL等關系數據庫在硬盤當中進行I/O操作的速度上的局限

如何利用Redis來實現提權甚至入侵
第一種方案就是使用Redis寫定時任務
第二種方案就是直接寫我們的后門文件、shell、一句話木馬

第一種方案:
為什么Redis可以進行寫文件的操作?
因為Redis有一個持久化的操作,默認情況下Redis寫的數據是寫到了后綴名為aof或者rdb的文件下,我們可以去配置這個路徑,使其寫到一個我們比較熟悉的目錄下,寫入進去之后就去訪問

第二種方案:寫定時任務
比如說就寫一個創建一個具有root權限的普通用戶的定時任務,然后使用該用戶去遠程登錄

SSRF+Redis內網滲透

基于SSRF來進行內網滲透
需要用到偽協議,dict和gopher
dict適用于Redis沒有密碼進行登錄的,因為它不支持維持session
gopher適用于Redis有密碼的,因為gopher可以構造各種TCP層面的請求包
然后我們就能通過gopher來寫入一句話木馬

第四個方法就是使用Python去進行連接并發送數據
其核心在于data值的構建,data里面要輸入一些參數,也就是說要將數據包構造出來,構造出來之后就可以進內網進行操作了
dict只支持Redis的單條命令,而gopher可以很好的處理批命令
對于gopher來說,遇見回車換行就要用%0d%0a進行一個替換,同時要將data數據進行url編碼,讓%替換%25

基于Redis提權實戰

對于修復建議,我們不僅要對Redis設置密碼,而且還要設置成復雜的密碼,然后將配置文件的r的那個權限給拿掉,不能夠o+r,只能讓root用戶去讀,其他任何賬號都不能讀取這個文件,還有一個,最好不要用root去啟動Redis,最好是新建一個賬號去啟動redis服務,這樣就不會像root一樣去處理了,這樣的話其他用戶就沒有權限往root根目錄那里去寫文件了

Windows系統提權

1、UDF提權
即用戶自定義函數
本提權適用于MySQL 5.5.59以下版本
先通過爆破獲取MySQL的賬號,如果能夠爆破出來密碼的話,就直接登錄到數據庫當中,然后使用navicat進行連接
連接上需要進行的操作是先確認MySQL的寫文件權限,看看師傅擁有任意路徑的寫文件
,然后再去確認MySQL的插件目錄,并由此推斷HTTP的主目錄,接著需要確認系統中是否存在sys_exec的函數,如果不存在的話需要使用UDF進行自行定義
然后進入到MSF中進行漏洞利用,使用的模塊是multi/mysql/mysql_udf_payload,run之后會將dll文件復制到plugin的目錄下,同時exec函數也會創建成功
exec只會返回一個指令,0和非0,0代表成功,非0代表失敗,而eval會返回結果
我們也可以運行以下腳本來創建用戶自定義函數eval,如果執行成功的話,我們就可以使用eval函數了,接著我們去看看該系統正在登錄的用戶有啥權限,如果權限高的話,可以通過創建一個角色將其放入到本地管理員組中,這樣我們就可以進行遠程登錄了,并且還是超級管理員的權限

2、MOF提權
MOF指的是托管對象格式,是一種文件類型,每隔一段時間就會以System權限執行一次,我們可以通過root權限下的mysql將該文件寫入到路徑下,以達到提權的目的,提權條件:
1、mysql允許遠程連接
2、secure_priv_file的值為空
接著我們使用漏洞模塊exploit/windows/mysql/mysql_mof進行入侵提權

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

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

相關文章

【數論分塊】數論分塊算法模板及真題

1.數論分塊的含義 數論分塊算法,就是枚舉出使得取整函數發生變化的地方。 例如,對表達式 ? n i ? \lfloor \frac{n}{i} \rfloor ?in??使用數論分塊算法,就可以在 O ( n ) O(\sqrt n) O(n ?)的時間復雜度下枚舉所有滿足 ? n i ? 1 ?…

SpringBoot 常用注解通俗解釋

SpringBoot 常用注解通俗解釋 一、啟動類相關 1. SpringBootApplication ? 作用:這是SpringBoot項目的"總開關",放在主類上 ? 通俗理解:相當于對電腦說:"開機!我要用SpringBoot了!…

棧應用:括號匹配

1&#xff1a;普通字符串括號匹配 #include <iostream> #include <stack> #include <string> using namespace std; bool mat(char,char); int if_match(string); int main(){string a;cin>>a;cout<<if_match(a)<<endl;return 0; } bool m…

某東h5st_5.1(補環境)

JS逆向實戰——某東h5st_5.1&#xff08;補環境&#xff09; 聲明網站流程分析結果展示總結 聲明 本文章中所有內容僅供學習交流&#xff0c;抓包內容、敏感網址、數據接口均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無…

新增Webhook通知功能,文檔目錄樹展示性能優化,zyplayer-doc 2.5.1 發布啦!

zyplayer-doc是一款適合企業和個人使用的WIKI知識庫管理工具&#xff0c;支持在線編輯富文本、Markdown、表格、Office文檔、API接口、思維導圖、Drawio以及任意的文本文件&#xff0c;支持基于知識庫的AI問答&#xff0c;專為私有化部署而設計&#xff0c;最大程度上保證企業或…

macOS安全隱私最佳實踐分析

1. 引言 隨著數字世界的不斷擴展&#xff0c;個人和組織面臨的安全與隱私威脅也日益增加。作為專業的安全合規與隱私保護研究團隊&#xff0c;Kaamel 對 macOS 系統的安全隱私現狀進行了全面分析&#xff0c;并提出了一系列最佳實踐建議&#xff0c;旨在幫助用戶更好地保護自己…

架構設計之異地多活與單元化(Set化)

公司的業務到達一定規模后,往往會考慮做多數據中心。一方面是面臨業務增長帶來的挑戰,單個數據中心變得難以支撐;另一方面出于對業務容災的考量,也可能在多個城市建立數據中心達到容災目的。單元化(Set化)是作為異地多活的一個解決方案。 一、什么是異地多活 異地多活是…

Kettle學習

一、Kettle 簡介 Kettle(現稱為 Pentaho Data Integration)是一款開源ETL工具,支持從多種數據源抽取、轉換和加載數據,廣泛應用于數據倉庫構建、數據遷移和清洗。其核心優勢包括: 可視化操作:通過拖拽組件設計數據處理流程(轉換和作業)。多數據源支持:數據庫(MySQL/…

蘋果計劃2026年底前實現美版iPhone“印度造”,以減輕關稅及地緣政治風險

基于 6 個來源 據多家媒體報道&#xff0c;蘋果公司計劃在2026年底前&#xff0c;實現在印度組裝銷往美國的大部分或全部iPhone手機&#xff0c;以減輕關稅和地緣政治緊張局勢帶來的風險。這一目標意味著蘋果需將印度的iPhone產量增加一倍以上&#xff0c;凸顯其供應鏈多元化戰…

【C++】googletest_TEST/TEST_F

在 Google Test 框架中&#xff0c;TEST 和 TEST_F 是定義測試用例的兩個核心宏&#xff0c;它們的區別主要體現在 測試上下文的管理方式 上。以下是二者的詳細對比&#xff1a; 1. TEST 宏 定義方式 TEST(TestSuiteName, TestName) {// 測試邏輯 }特點 獨立上下文&#xff…

14-DevOps-快速部署Kubernetes

在學習階段&#xff0c;為了能快速部署Kubernetes&#xff0c;這里用一個快速安裝工具&#xff1a;Kubeode&#xff0c;來完成Kubernetes的部署。 接下來部署一個單機&#xff0c;一主一從的Kubernetes。一主一從都部署在同一臺服務器上。 在虛擬機新開一個服務器&#xff0c…

Java 異常處理全解析:從基礎到自定義異常的實戰指南

Java 異常處理全解析&#xff1a;從基礎到自定義異常的實戰指南 一、Java 異常體系&#xff1a;Error 與 Exception 的本質區別 1. 異常體系核心架構 Java把異常當作對象來處理&#xff0c;并定義一個基類java.lang.Throwable作為所有異常的超類。 在Java API中已經定義了許…

redis 數據類型新手練習系列——string類型

redis 數據類型 Redis 主要支持以下幾種數據類型&#xff1a; &#xff08;1&#xff09;string&#xff08;字符串&#xff09;: 基本的數據存儲單元&#xff0c;可以存儲字符串、整數或者浮點數。 &#xff08;2&#xff09;hash&#xff08;哈希&#xff09;:一個鍵值對集…

Android12源碼編譯及刷機

由于google的AOSP源碼拉取經常失敗&#xff0c;編譯還經常出現各種問題。這里根據香橙派Orange Pi 5 Plus&#xff08;Android12電視鏡像&#xff09;源碼進行編譯演示。 RK芯片的開發板可玩性很高&#xff0c;這里以電視版本android系統為例子&#xff0c;學習的同時還可以當…

從零實現 registry.k8s.io/pause:3.8 鏡像的導出與導入

以下是為 registry.k8s.io/pause:3.8 鏡像的導出與導入操作定制的完整教程&#xff0c;適用于 Kubernetes 集群中使用 containerd 作為容器運行時的場景。本教程包含詳細步驟、常見問題解析及注意事項。 從零實現 registry.k8s.io/pause:3.8 鏡像的導出與導入 背景說明 Kuber…

Redis和MQ的區別

redis是一個高性能的key-value數據庫&#xff0c;支持消息推送功能&#xff0c;可以當做一個輕量級的隊列服務器使用。 redis只是提供一個高性能的、原子操作內存鍵值隊&#xff0c;具有高速訪問能力&#xff0c;雖然可以做消息隊列的存儲&#xff0c;但不具備消息隊列的任何功…

Centos7系統防火墻使用教程

CentOS 7是一種常見的Linux操作系統&#xff0c;防火墻作為網絡安全的第一道防線&#xff0c;對于服務器的安全至關重要。本文將介紹CentOS 7系統中防火墻的使用教程&#xff0c;包括如何開啟、關閉、配置以及防火墻規則的添加和刪除。 一、查看防火墻狀態 在開始操作之前&am…

Uniapp:navigator(頁面跳轉)

目錄 一、基本概述二、屬性說明三、具體使用一、基本概述 頁面跳轉。該組件類似HTML中的<a>組件,但只能跳轉本地頁面。目標頁面必須在pages.json中注冊。 二、屬性說明 屬性名類型默認值說明平臺差異說明urlString應用內的跳轉鏈接,值為相對路徑或絕對路徑,如:“……

大疆機場及無人機上云(航線規劃、指令飛行...)

系統操作預覽&#xff1a; 包含一鍵起飛、指令飛行、云臺控制、變焦、航線規劃、空域規劃、成果數據展示、實時飛行模擬、任務派發等 大疆無人機飛控平臺&#xff08;航線規劃、機場3、私有化部署&#xff09;_嗶哩嗶哩_bilibili 2025-04-02 更新 start、 已支持大疆機場3。…