运维    2017-01-06 00:00:29    40    0    0

需求

    当Iphone/Ipad/Android 等访问 http://www.xxx.com 时跳转到 http://www.xxx.com/mobile/xxx/mobile.html?ref=www.xxi.com/


分析

    squid不自带 url重写/跳转 功能, 要实现这些功能需要借助重定向器来解决通过redirect_program指令 指定一个重定向器 来处理url的重写/跳转redirect_program 可以用perl/php/python 甚至shell来编写

 

思路

    使用squid的redirect_program 指令 ,指定一个重定向器处理url跳转, 使用acl 匹配Iphone, Ipad, Android 平台


过程

tip

    根据[squid权威手册]得知,重定向器从标准输出接收squid数据, 每一行包括以下4个元素:

1. 请求url

2. 客户IP地址和完全可验证域名

3. 用户名,通过RFC 1413 ident或代理验证

4. HTTP请求方式

exp: http://www.example.com/page1.html 192.168.2.3/- - GET

 

了解这个是非常重要的,本人就是因为一开始不知道这个,导致我的重定向器无法使用

    

    然后, 重定向程序永不退出,除非在标准输入里发生end-of-file 这个也是很重要的,不然会导致重定向器的进程占用大量的cpu.最后, 重定向器返回空行, squid将不会对url做任何处理,该怎样还是怎样

 

产生一个重定向消息

    网络上很多是基于perl的. 由于我不擅长那家伙, 于是我就用python写了一个例子.


#!/usr/bin/python
import sys
import re
URL_PATTERN = re.compile('(?P<scheme>https?://)(?P<host>[^/]*)(?P<request>.*)')
GUIDE = re.compile("^/mobile/xxx/mobile\.html")
def redirect(line):
    old_url = line.split()[0] 
    m = URL_PATTERN.match(old_url)
    if not m: return '\n'
运维    2017-01-05 23:46:27    26    0    0

背景


    2013年03月29日,eleven所属单位 被未知生物ddos攻击, 攻击时间 凌晨00:15 左右, eleven不在现场.其他同事处理的, 第二天eleven来到公司, 接到上面命令找出服务器弱点.同时还原攻击现场,


检查


    通过Zenoss监控图, 看见在00:15左右, 突然进来了大量的数据包, 大概40w左右, 但是流量没有明显异常(即没有瞬间增高), 好吧, 看见这个

信息安全 限制绕过    2017-01-05 23:36:52    22    0    0

背景

    原本是想寻找让mplayer播放youku视频的. 但是想了好多种方法. 都不知道如何让mplayer接管flash来播放视频. 最终在研究这个问题的过程中.发现了flvcd居然出现了,广告!!!, 虽然我能理解flvcd的做法.毕竟他们破解了人家视频网站的加密url, 让他们损失了不少的广告流量. 但是flvcd好歹提供一种更加友好(自动化)的广告播放方式吖. 你用flash是算什么

信息安全 代码审计    2017-01-05 11:42:10    123    0    0

漏洞描述

xiaocms后台文章发布存在缩略图上传. 该处并没有对文件类型进行校验. 导致可以上传任意文件, 直接getshell.

漏洞分析

通过xiaocms后台的文件上传URL可以得知URL是c=uploadfile&a=uploadify_upload&type=gif,jpg,jpeg,png

根据core/xiaocms.php中的parse_request()可以知道c参数是控制器,a参数是方法名, 可以定位到admin/contronller/uploadfile.php

而后根据a参数找到uploadify_upload方法定义的位置:

/** 
* uploadify_upload 
*/ 
public function uploadify_uploadAction() { 
     $type = $this->get('type'); 
     $size = (int)$this->get('size'); 
     if ($this->post('submit')) { 
     $data = $this->upload('file', explode(',', $type), $size); 
     if ($data['result']) echo $data['path']; 
     } 
} ​ 


可以看见实际的文件上传动作是由$this->upload完成的, 对$this->upload传入了三个参数, 一个字符串常量'file' , 一个$type参数从URL中获取的, 然后一个文件大小$size, 其中$type是我们可以控制的, 这里没有对$type做任何处理.

我们继续跟入$this->upload看看它的实现:

/** 
* 文件上传 
*/ 
private function upload($fields, $type, $size) { 
    $upload = xiaocms::load_class('upload'); 
    $ext = strtolower(substr(strrchr($_FILES[$fields]['name'], '.'), 1)); 
    if (in_array($ext, array('jpg','jpeg','bmp','png','gif'))) {