这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似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:

<?php
127.0.0.1 GET /center/useredit/
die();
?>

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

......
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
    $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
    $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}elseif (getenv("HTTP_X_FORWARDED_FOR")){
    $ip = getenv("HTTP_X_FORWARDED_FOR");
}elseif (getenv("HTTP_CLIENT_IP")){
    $ip = getenv("HTTP_CLIENT_IP");
}elseif (getenv("REMOTE_ADDR")){
    $ip = getenv("REMOTE_ADDR");
}
......

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

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

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

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

SHOW VARIABLES LIKE "general_log%";

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

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. UV-Sprite动画

    [UV-Sprite动画] 下文以单行Sprite纹理作为动画贴图.首先需要输入纹理宽度.Sprint数量.速度: 计算每个Sprite的像素宽与UV宽: 根据_Time,计算当前显示第几个Sprit ...

  2. UV mapping

    [UV mapping] UV mapping is the 3D modeling process of making a 2D image representation of a 3D model ...

  3. OPEN LDAP

    一.安装OPENLDAP 安装完成后退出 编辑两个文本,输入以下内容,并把文本文件改名为ldap01.ldif和ldap02.ldif. ldap01.ldif: dn: dc=maxcrc,dc=c ...

  4. Android开发实战之ViewPager实现向导界面

    当我们更新应用,或者第一次进入应用时都会有一个向导界面,介绍这个app的内容和使用方式. 如果你细心你会发现其实这就是个viewpager,本篇博文将介绍应用的向导界面是如何制作的.希 望本篇博文对你 ...

  5. 10 华电内部文档搜索系统 search01

    Lucene解决搜索问题.ibatis实现存放问题,就是解决持久化问题.Struts 2做页面显示,就是实现业务层对应的功能. Spring与ibatis结合, 添加Spring支持 右击项目名s2i ...

  6. QScopedPointer

    QScopedpointer detailed description the QScopedpointer class stores a pointer to a dynamically alloc ...

  7. [Plan]计划

    1. scala 2. kafka 1. lua 2. openResty 1. 日志收集 - python 2. 代码生成 3. 权限系统

  8. BBS项目(2)

    我们实现登录功能的随机验证码的产生 views.py def get_random_color(): return ( # 创建三个0-255的随机数 random.randint(0, 255), ...

  9. Java书籍经典Top10

    1)Java Language Specification, Third Edition (by James Gosling) 本书由Java技术的发明者编写,是Java TM编程语言的权威性技术指南 ...

  10. Lua的文件IO操作

    Lua 标准库 - 输入输出处理(input and output facilities) 转载于:http://blog.csdn.net/duanxuyun 文本Tag: Lua [IT168 技 ...