这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似TIPs或者文章出现,就写下此文。

本文作者:Auther : vulkey@MstLab(米斯特安全攻防实验室)

前言

“监控”一词,相信大家很常见,例如:xxx酒店厕所被安装监控、xxx明星被狗仔24小时监控,也有奶权师傅写过的《Python系列之——利用Python实现微博监控》和笔者写过的《从编写知乎粉丝监控到漏洞挖掘再到盗号》

但这跟”漏洞挖掘”联系起来的话似乎就让人摸不着头脑,其实不然,通过”监控”可以帮我们做很多事。

监控狂人的修炼之路

以大家最常见的一个东西起->扫描器,其可以辅助渗透测试工程师更好更简单的进行漏洞的信息发现,但是发现漏洞后要测试漏洞的时候哪些验证步骤是不是就很头疼呢?通过”监控”去完成是不是更好~

在我们做盲测漏洞的时候可能会考虑到一些问题,最主要的问题肯定就是什么时候平台能收到结果呢?

这时候就可以对接一些平台的API进行关键字监控了。

使用ceyeAPI接口对SSRF漏洞进行长期监控

API: /api/record?token={token}&type={dns|request}&filter={filter}
token: your ceye token.
type: type of query, ‘dns’ or ‘request’.
filter: match {filter}.{your domain}.ceye.io rule, but limit 20.

Python写一个监控然后再写个发信,这样在有些环境下迟迟到来的漏洞信息就会立即被在床上玩手机的你知道了。

其实如上的思路还可以利用很多结合dnslog的原理去监控,这里借助了ceye这个平台的API,还可以参考Bugscan的 dnslog平台 自己去搭建一个然后噼里啪啦,这里其实BurpsuiteScanner模块就借助了这样的思路去更快捷的扫描发现SSRF漏洞,但是却没办法做到长时间的”蛰伏期”(也就是在一些情况下,结果是需要一个等待才能到达),那其实大家可以继续开拓自己的思维去想些更有价值的东西。

如上说的一些”姿势”可能是废话了,很多人都自己多多少少都有想过也实现了,但是别急,前菜清淡,但主菜呢,邀君共品~

很多的时候,朋友就会问我xxCMS后台怎么GetWebshell,为什么那些牛人分分钟都可以Getwebshell了?除了看代码我怎么快速的获取GetWebshell的”姿势”呢?

一般后台GetWebshell的”姿势”有这几种:后台代码/命令执行代码闭合操作缓存文件上传等等…

那其实很多的都会本文件打交道,不如先造个文件监控出来:

造完监控,不如来写个后台GET/POST请求Fuzz,在做这个Fuzz的时候处理的时候遇到很多坑,脚本写的不是很好就不拿出来丢人现眼了~

这里我做的Fuzz是结合Burpsuite日志,进行筛选然后Fuzz:

这里筛选的脚本是根据 https://github.com/tony1016/BurpLogFilter去造了一个2.7版本的~

其实这个脚本大概的功能实现是这样的:

设置GET/POST传输参数对应值为随机字符串(这里使用了python的uuid),会生成一个Fuzz历史Log文件,以便跟文件监控对比。

历史Log对比文件监控:

这里Fuzz之后发现有两个文件被修改了,而这两个文件因为有CMS特征的存在就不一一例举了。为什么会被修改呢?因为这里传递的值被写入了文件中,找到对应功能点发现有CSRF,一结合就造成了CSRF+后台GetWebshell~

通过如上的姿势测试了不少的CMS,又在CNVD和补天提交相对应也获得了不少的Bounty。

在利用这种姿势的情况下偶然发现一个CMS前台访问的时候会生成一个缓存日志文件,而缓存日志文件的内容会记录用户的IP:

  1. <?php
  2. 127.0.0.1 GET /center/useredit/
  3. die();
  4. ?>

那其getip()函数的核心代码:

  1. ......
  2. if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
  3.     $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
  4. }elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
  5.     $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
  6. }elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
  7.     $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
  8. }elseif (getenv("HTTP_X_FORWARDED_FOR")){
  9.     $ip = getenv("HTTP_X_FORWARDED_FOR");
  10. }elseif (getenv("HTTP_CLIENT_IP")){
  11.     $ip = getenv("HTTP_CLIENT_IP");
  12. }elseif (getenv("REMOTE_ADDR")){
  13.     $ip = getenv("REMOTE_ADDR");
  14. }
  15. ......

可以通过伪造XFF头进行PHP代码的闭合造成前台无限制GetWebshell,但是缓存文件的路径是:/www/center/temp/md5(text).php

通过代码了解到其的文件的命名规则是md5(time()),那其实通过记录前后的一部分时间戳加上Burpsuite的Intruder模块进行md5加密枚举就行了。

那其实还可以做一些Fuzz然后实时监控Mysql的SQL执行语句:

首先来看下Mysql的记录Log功能开了没有:

  1. SHOW VARIABLES LIKE "general_log%";

看见其的功能OFF了~只要设置下ON就行了:

  1. SET GLOBAL general_log = 'ON';

使用BareTail进行监控或者自己根据Log的文本规则监控就行了:

结尾

本文不足之处欢迎指出,也希望大家可以GET到一点点思路,欢迎跟笔者交流。

浅析通过"监控"来辅助进行漏洞挖掘的更多相关文章

  1. xss漏洞挖掘小结

    xss漏洞挖掘小结 最近,在挖掘xss的漏洞,感觉xss真的不是想象的那样简单,难怪会成为一类漏洞,我们从防的角度来讲讲xss漏洞的挖掘方法: 1.过滤 一般服务器端都是采用这种方式来防御xss攻击, ...

  2. 【读书笔记】Android平台的漏洞挖掘和分析

    最近比较关注移动端的安全,以后也打算向安卓平台的安全发展.这篇博文主要是记录一些研究Android安全的读书笔记. Fuzzing技术的核心是样本生成技术 测试Android平台的组件间通信功能使用的 ...

  3. 关于PHP代码审计和漏洞挖掘的一点思考

    这里对PHP的代码审计和漏洞挖掘的思路做一下总结,都是个人观点,有不对的地方请多多指出. PHP的漏洞有很大一部分是来自于程序员本身的经验不足,当然和服务器的配置有关,但那属于系统安全范畴了,我不太懂 ...

  4. 小白日记38:kali渗透测试之Web渗透-手动漏洞挖掘(四)-文件上传漏洞

    手动漏洞挖掘 文件上传漏洞[经典漏洞,本身为一个功能,根源:对上传文件的过滤机制不严谨] <?php echo shell_exec($_GET['cmd']);?> 直接上传webshe ...

  5. 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含

    手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...

  6. 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

    手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...

  7. 小白日记35:kali渗透测试之Web渗透-手动漏洞挖掘(一)-默认安装引发的漏洞

    手动漏洞挖掘 即扫描后,如何对发现的漏洞告警进行验证. #默认安装 流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格 ...

  8. Shodan在渗透测试及漏洞挖掘中的一些用法

    渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易.而关于信息收集的文章网上也是有太多.今天我们来通过一些例子来讲解如何正确使用Shodan这一利器. 想要利用 ...

  9. 可编程逻辑控制器(PLC)漏洞挖掘思路与验证

    mailto wangkai0351@gmail.com 随时记录千奇百怪的漏洞挖掘思路,主要针对STEP7 v5+西门子S7-300/400系列PLC,欢迎同行前来交流. 组态信息下载完整性攻击 思 ...

随机推荐

  1. java基础之HashSet如何保证对象的唯一性

    首先Set集合是无序的 不可重复的 add的时候判断对象是否重复是用的equals HashSet<String> 存储String类型的数据时是可以保证数据的唯一性的 因为String类 ...

  2. [bzoj2648]SJY摆棋子(带插入kd-tree)

    解题关键:带插入kdtree模板题. #include<iostream> #include<cstdio> #include<cstring> #include& ...

  3. 【Unity】关于U3d与bip骨骼适配

    http://blog.csdn.net/kiki110120/article/details/50371662 写在2015/12/21 1.Generic 在拿到美术FBX文件后,导入u3d,默认 ...

  4. Chrome谷歌浏览器屏蔽百度搜索右侧广告推荐方法

    先上图百度广告,其实屏蔽广告很简单 主要分成以下三步: 下载Adblock Plus插件 安装Adblock Plus插件 开启屏蔽 一.下载Adblock Plus插件(官网离线版) 二.安装Adb ...

  5. Lunix7 开放指定端口

    systemctl unmask firewalld.service 此时可以正常启动Firewall了. 接下来顺便讲述一下Firewall的安装,及一些简单配置.   查看状态,看电脑上是否已经安 ...

  6. Qt程序无法输入中文的问题

    问题 在Linux环境下,用Qt编写的程序运行时不能在诸如输入框.文本框中输入中文(不会激活中文输入法). 注意与输入法类型有关(基于iBus或Fcitx) 原因 Qt程序的中文输入支持需要用Qt插件 ...

  7. Openssl base64命令

    一.简介 对文件件进行base64的编码与解码 二.语法 openssl base64 [-in filename] [-out filename] 三.实例 1.二进制文件与base64编码互转 o ...

  8. android开发环境完整搭建

    1.首先,要先下载安装包,共享一个网址,里面有非常全面的安装文件,不管是windows还是linux的,都有,网址如下:http://www.cnblogs.com/tc310/p/3938353.h ...

  9. 洛谷 P2850 [USACO06DEC]虫洞Wormholes 判负环

    虫洞(wormhole) FJ 在农场上闲逛时,发现他的农场里有很多虫洞.虫洞是一条特殊的有向路径,当 FJ 从它的一头走到另一头后,他将被传送到过去的某个时刻.FJ 的每个农场包括 N(1<= ...

  10. openpose 问题

    I ran into the above issue causing a core dump after compiling what I believe was successful without ...