挖洞神器之XRAY使用初体验

0x01写在前面

前几天白嫖了XRAY的高级版,因此试着利用XRAY + AWVS的形式来看看能不能找到CNVD上公布的问题CMS的漏洞。

我们都知道cnvd发布突破公告的时候是没有详细细节的,因此只能根据突破的种类自己去寻找突破点,如果cnvd公告里有存在突破文件的名称,相对于简单一点,但是没有的话,就相当于从头自己去审核整套系统,于是就找到了一个小型CMS当做演示:

挖洞神器之XRAY使用初体验_第1张图片

 

本文以cms的突破挖掘为基础,然后说说自己使用的感受。

0x02准备工作

XRAY + AWVS如何配置的,我就不在这里详细解析了,官网上已经写得很清楚了,有兴趣可以看:

https://chaitin.github.io/xray/#/scenario/awvs

需要注意两个点:

  • 要保证xray代理地址和awvs主机地址能够通信
  • 要保证XRAY配置文件中的允许扫描域为*或者你要扫描的地址(之前就是因为自己测试上一个地址忘了修改导致一直没有数据,所以这里突出一下)

然后就可以下载CMS进行建造,,建造过程也比较简单,因此没有多余的述,下载地址可见:

https://github.com/chilin89117/ED01-CMS

安装好后就可以添加扫描了。

首要是首先在本地运行起xray,命令如下:

./xray webscan --listen 0.0.0.0:1111 --html-output awvs.html

这里的端口可以自己设定,某些我设定的就是8888:

挖洞神器之XRAY使用初体验_第2张图片

 

然后添加已经建造好的CMS的地址:

挖洞神器之XRAY使用初体验_第3张图片

 

因为是测试环境,所以我们可以开启登陆选项:

挖洞神器之XRAY使用初体验_第4张图片

 

说不定挖掘的东西更多

其他配置就和XRAY官方介绍的一样,代理模板的端口要和你xray监听的端口一致:

挖洞神器之XRAY使用初体验_第5张图片

 

点击爬虫模式扫描,创建后,就可以正式扫描目标地址了:

挖洞神器之XRAY使用初体验_第6张图片

 

如下图,xray很快就接受到地址,并开始检测:

挖洞神器之XRAY使用初体验_第7张图片

 

最终扫描结果如下:

#Plugin / VulnTypeTargetCreateTime#1xsshttp://192.168.52.1/testcms/aposts.php2019-12-22 17:51:05#2xsshttp://192.168.52.1/testcms/registration.php2019-12-22 17:51:08 #3xsshttp://192.168.52.1/testcms/cposts.php2019-12-22 17:51:23#4xsshttp://192.168.52.1/testcms/post.php2019-12-22 17:51:38#5xsshttp:// /192.168.52.1/testcms/admin/users.php2019-12-22 17:51:59#6xsshttp://192.168.52.1/testcms/admin/posts.php2019-12-22 17:56:19#7sqldethttp:// /192.168.52.1/testcms/cposts.php2019-12-22 17:51:28#8sqldethttp://192.168.52.1/testcms/post.php2019-12-22 17:51:40#9sqldethttp://192.168.52.1 /testcms/admin/users.php2019-12-22 17:51:59#10sqldethttp://192.168.52.1/testcms/admin/posts.php2019-12-22 17:56:09#11struts / s2-007http:/ /192.168.52.1/testcms/admin/users.php2019-12-22 17:55:32

以上是我简化的结果,有的文件中可能存两个两个两个以上的ParamKey存在突破但只保留一个。

由于同一个文件存在不同的漏洞,因此我们选择以文件分类来分析漏洞。

0x03进攻挖掘

1,aposts.php文件

根据XRAY提供的信息:

挖洞神器之XRAY使用初体验_第8张图片

 

u参数存在问题,找到aposts.php,关键代码如下:

if(isset($_GET['u'])) {
        $uname = mysqli_real_escape_string($con, $_GET['u']);

     ....

    if(!$posts) {   
            $div_class = 'danger';
            $div_msg = 'Database error: ' . mysqli_error($con);
        } else {
            $post_count = mysqli_num_rows($posts);      
            if($post_count == 0) {
                $page_count = 0;
                $div_class = 'danger';
                $div_msg = "Sorry, no posts found for user '$uname'.";
            } else {
                $page_count = ceil($post_count / 8);
                $div_class = 'success';
                $div_msg = " Showing published posts for user '$uname'.";
                $div_msg .= " Show All";
            }
        }
    }

GET取得u参数后,通过mysqli_real_escape_string函数赋值给uname,然后判断posts参数,如果没有找到结果,输出uname

我们知道mysqli_real_escape_string函数主要是转义在SQL语句中字符串中的特殊字符,而不是XSS的过滤函数,因此运用最基本的语句:

你可能感兴趣的:(挖洞)