去除讨厌的手机淘宝启动图

最近手机淘宝多了一个很讨厌的启动图,上面是一个笑的很脑残的人拿着手机的样子,每次早上在被窝里查快递的时候,我都会被丫的脑残笑恶寒的立刻就醒了。(你们看我最近起的这么早不是没有原因的!

然后今天我终于忍不住了。

使用神器 Charles 分析后可以发现,手机淘宝客户端启动的时候会请求这样一个 URL www.taobao.com/go/rgn/taobao2013/bootimage.php,里面内容就是启动图片的信息咯:

1
{"url":"http:\/\/gtms02.alicdn.com\/tps\/i2\/T1Du9PFqtcXXbzlxAc-640-1136.png","smallurl":"http:\/\/gtms01.alicdn.com\/tps\/i1\/T1YceMFBNgXXXz0cAs-640-960.png","starttime":"2014-03-01 16:01:00","endtime":"2014-03-08 23:59:59"}

⊙﹏⊙b 一号就出来了这个图片我七号才忍无可忍你们看我的耐心是多么好呀~ 忍了差不多有七天呢~

然后大家都知道怎么做了,我家里的网络使用的 DNS 是我用 DNSMasq 自建的,把 www.taobao.com 指向到我本地的 nginx 反向代理即可,反向代理配置如下:

1
2
3
4
5
6
7
8
9
10
11
server {
server_name www.taobao.com;

location = /go/rgn/taobao2013/bootimage.php {
return 403;
}
location / {
proxy_pass http://www.taobao.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

然后重启手机淘宝客户端,啊,一切都清净了,再也没有讨厌的棒子男人出现了!

最后,我就是觉得李敏镐没有洛阳铲好看你们这群棒子粉不服来咬我啊!

Docker Linode 部署笔记

运行环境为 Ubuntu 12.04 LTS 64bit,Docker 0.8.0。
在开始之前,建议部署一个全新的 Linode 来进行操作以防止历史遗留的配置造成意外 :-D

咳咳,以下运行的命令都是以 root 身份运行的,我比较懒喜欢直接 sudo -s,不过这不是一个好的习惯各位不要学习啊哈哈~

  1. 更新系统

    1
    2
    apt-get update
    apt-get upgrade
  2. 替换内核和 GRUB

    1
    2
    apt-get install linux-virtual grub-legacy-ec2
    apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
  3. 编辑 /boot/grub/menu.lst,找到

    1
    # defoptions=console=hvc0

在后面加上 rootflags=nobarrier,注意 不要 取消这行的注释

1
# defoptions=console=hvc0 rootflags=nobarrier

  1. 编辑 /etc/default/grub,找到
    1
    GRUB_CMDLINE_LINUX=""

里面加上 cgroup_enable=memory swapaccount=1

1
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

  1. 重新生成 /boot/grub/menu.lst

    1
    update-grub-legacy-ec2
  2. 修改 Linode Profile

    Boot Settings 里的 Kernel 修改为 pv-grub-x86_64
    然后取消勾选 Filesystem/Boot Helpers 里的 Xenify Distro,保存,然后重启。
    重启之后 uname -r 即可看到当前内核版本:

    1
    2
    root@linode-x1:~# uname -r
    3.8.0-35-generic
  3. 安装 Docker

    嘛,这里说过了就不说了,可以翻阅之前写的 Docker 简明部署教程 或者官方文档 Installation on Ubuntu - Docker Documentation

    1
    2
    3
    4
    5
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
    sh -c "echo deb http://get.docker.io/ubuntu docker main\
    > /etc/apt/sources.list.d/docker.list"

    apt-get update
    apt-get install -y lxc-docker

装完之后可以 docker info 看一下~是不是很完美呐~

1
2
3
4
5
6
root@linode-x1:~# docker info
Containers: 5
Images: 106
Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 116

最后抱怨一下 Markdown 其实没那么好用,幸好还能往里加 HTML :-(
以及 AppEx 什么时候支持 3.8 的内核啊魂淡前面加一台 3.2 内核的 Linode 跑它很贵的好吗一个月 20 刀呢!(果然人穷就是尼玛事儿多

参考文章:

  1. PV-GRUB - LinodeWiki
  2. Installation on Ubuntu - Docker Documentation

使用 Runkit 实现简易的 PHP 后门检测

这是今天在帮某大检查他被黑的机器的时候想出的歪门邪道。
原理很简单,就是把 PHP 原有的函数改名,然后用自己的函数替换掉那个原来的函数。

啊,首先呢,你必须要有 root 权限~ 用虚拟主机的同学们请自觉做鸟兽散。

Runkit 在 PECL 的版本非常老,最新的版本居然是 2006-06-06 年的。
当然老没有关系,有些发行版就喜欢用老的东西,以及大部分虚拟主机用户还喜欢用 PHP 5.2 甚至更老的版本呢。不过这个例外,由于版本太老了所以连在 PHP 5.2 上都跑不了,所以我们要去 GitHub 上下最新的开发分支。

1
2
3
4
5
6
7
cd /tmp
git clone https://github.com/zenovich/runkit.git
cd runkit
phpize
./configure
make
make install

然后在 php.ini 里加上相关条目:

1
2
3
[runkit]
extension="runkit.so"
runkit.internal_override = On

找不到 php.ini 在哪儿的,请在 Web 目录下放置如下文件,然后用浏览器打开就能看到咯:

1
2
<?php
echo php_ini_loaded_file();

当然呢,对于蛋疼的 DirectAdmin 用户,我们还需要在 php.ini 里把 extension_dir 修改为 /usr/local/bin/php-config --extension-dir 所显示的目录才行。

然后找个地方放下这个文件,我是放在了 /usr/local/lib/php/security.php,下文也以此为例子。
注意的是:

1. 必须去掉这个文件的写权限,不怕死的可以不去掉。
2. 开启了 **open_basedir** 选项的,这个文件需要放置在 **open_basedir** 里面所列出的目录里,不然会出错。
3. 请把 `/tmp` 换成其他可写的日志目录,或者换成 syslog 什么的。

再修改 php.ini,找到 auto_prepend_file 这行,改为:

1
auto_prepend_file = /usr/local/lib/php/security.php

最后重启 apache 进程即可看到效果啦~ 日志是介个样子的

1
2
3
4
5
6
================
URI = /login.php
Client = 125.33.92.240
Header = Location: index.php
Backtrace = /home/xxxxxx/domains/xxxxxx.net/public_html/global.php:354:header
/home/xxxxxx/domains/xxxxxx.net/public_html/login.php:45:ObHeader