您目前所在位置: 首页 > 游戏周边 > 游戏百科

xray挖洞使用方法介绍(xray工具使用全过程心得体验)

时间:2022-07-29 18:01:46 | 访问:51 次 | 责任编辑:访客 | 来源:本站

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

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


本文以 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:


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


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


说不定挖掘的东西更多

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


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


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


最终扫描结果如下:

#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 提供的信息:


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 <strong>'$uname'</strong>.";
            } else {                $page_count = ceil($post_count / 8);                $div_class = 'success';                $div_msg = " Showing published posts for user <strong>'$uname'</strong>.";                $div_msg .= " <a href='index.php'>Show All</a>";
            }
        }
    }

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

我们知道mysqli_real_escape_string函数主要是转义在 SQL 语句中字符串中的特殊字符,并非是 XSS 的过滤函数,因此运用最基本的语句:<script>alert(0)</script>,即可触发 XSS 漏洞:


2、registration.php文件

根据 XRAY 提供的信息:




本类TOP10
最新内容
金融习题 考研百科