对某一网站的渗透测试

还挺有意思的,注入->getshell->提权->破解php加密(网站防护做的。。)

Posted by BY Diego on November 10, 2020

对网站的渗透

端口扫描

存在mysql,ftp,ssh,http,ajp,tomcat 多个服务

ajp 存在漏洞 2020-10487 Tomcat apj

存在任意文件读 ,但没啥用

WEB-INF/web.xml 里没有任何东西

app上抓了个包,发现了比较可以的api

name进行注入, 输入"||1||" 返回正常数据 ,但无法注释后面的内容,只能布尔注入

sqlmap 一把梭

python .\sqlmap.py -r res --tamper=space2comment --level 5 --dbs --random-agent

存在读文件

不知道nginxweb目录,默认路径不存在

读到mysql的目录,根据大佬的猜测,同目录下存在nginx 服务,于是读取***/nginx/conf/nignx.conf

成功读到配置文件, 存在多个应用 以及对应的路径

        location /** {
                autoindex on;
               root /***/***/******;
               index index.html index.htm index.php;
                if (!-e $request_filename) {
                        rewrite ^/xx/(.*)$ /xxxx/admin.php/$1 last;

        break;
                }
        }

        location = /xxx {
               #autoindex on;
               root /xxx/xxx/xxxx;
               index index.html index.htm index.php;
                if (!-e $request_filename) {
                        rewrite ^/xx /xx/index.php last;
                        break;
                }
        }

两个后台(其中一个还挂了),和一个应用

暴露了 框架和绝对路径

存在目录遍历,发现了个比较有意思的页面mysql.inc.php,读取获取了 mysql 的账号密码

企图直接连接,但失败了,

看了看数据库,只能本地登录和指定ip登录

然后发现是tp3.0的远古框架 ,根据框架读了一下配置文件(也就是入可文件index.php)

按照这个配置文件本搭建了一下,目录结构清晰可见

├─caches
│  ├─cache
│  ├─data
│  ├─logs
│  └─temp
├─common
├─Conf
├─language
├─library
│  ├─Action
│  ├─****
│  ├─Model
│  └─****
└─themes

根据手册 tp3的编程风格,确定 项目的文件为IndexAction.class.php,通过sql注入读取发现乱码。。。

然后尝试tp3.0的RCE

poc如下

http://**/index.php/Index/index/name/$%7B@phpinfo%28%29%7D

直接打不行

仔细看了一下 发现必须为精简模式下才可以使用,即index.php得包含如下

define('MODE_NAME','Lite');

未果 想起还有管理的账号密码

通过之前注入拿到数据库,找到管理员的账号密码,然后登入(后台有点东西

后台同样存在注入漏洞(随便一个地方就有),并存在 联合注入,并且具有写文件权限

0 union select tohex('webshell'),1,2 into outfile '/**/**/**/shell.php'

蚁剑连接上

但自己是 www用户

查看进程

发现root启动的 tomcat

尝试往tomcat 写 jsp马

但是没有写权限

在检索可操作文件时,存在所有服务的一个日志文件夹

发现tomcat日志可读(心想 tomcat不是个空壳来着,怎么还有日志

看日志才发现还运行服务

检索对应文件

发现在tomcat外的目录 部署了服务并运行在8080上,且属性位777,写个jsp马

看了看源码 (蒙🖊 怪不得是乱码

根据PM9SCREW 检索了一下 是screw 加密

根据教程先获取 编译好的php_screw.so 文件

下载下来拖到IDA

找到_pm9screw_ext_fopen 加密函数

f5

跟进

进入红色部分发现key(打码部分

导出

然后用

https://github.com/firebroo/screw_decode 进行解密

克隆下来 修改screwdecode.c

然后编译make

./decode ./xx.php

解密完成