月度归档:2013年08月

mysql用户最小权限那些事

0×00 mysql用户权限简介

mysql root 用户权限最高,下面我们执行权限查看命令,看下root的权限

show grants for root@localhost //查看root用户权限
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+

根据上面的输出看出,root 是拥有all privileges ,那么我们把全部的权限列出来
privileges
你可以指定的权限可以分为三种类型:

数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

全局管理MySQL用户权限:

file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

特别的权限:

ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

0×01 权限的设置

我们从新开始,先登录root用户,创建个普通用户,用户名和密码 都为leesec

insert into mysql.user(Host,User,Password) values('localhost','leesec',password('leesec'));

接下来我们再对leesec用户设置对数据库或者表的各种控制权限
1.对数据库leesec, 表 admin 设置只允许查询、修改、插入 权限

grant select,update,insert on leesec.admin to leesec@localhost identified by 'leesec';

然后我们登录leesec用户,对表admin 执行删除记录操作
ERROR 1142 (42000): DELETE command denied to user ‘leesec’@’localhost’ for table ‘admin’
2.给mysql用户leesec对表admin有删除权限

grant delete on leesec.admin to leesec@localhost identified by 'leesec'

3.删除Mysql用户leesec 的删除权限

revoke delete on leesec.admin from leesec@localhost;

现在最小权限设置 你懂的 🙂

Clickjacking的那些事

0X00 简介

什么是clickjacking ? 能干什么坏事 ?

首先我们来了解什么是clickjacking ,建个页面为index.html

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf8">
  </head>
  <body>
<style>
div{
  left:10;
  bottom: 35;
  position: absolute;
  margin-left: 130px;
}
 
</style>
 
<script>
function fun(){
  alert("just for fun");
}
</script>
 
<div><a href="http://www.qq.com" onclick="fun();">QQ网址</a></div>
<iframe src="http://www.baidu.com" width="500px" scrolling="no" style="opacity: 0;position: absolute;left: 10;bottom: 10;"></iframe>
</body>
</html>

上面的代码是实现点击劫持www.qq.com 这个链接,使它访问news.baidu.com 这就是个例子,当面我这个简单的例子会被发现,但是按钮劫持会更有效果的

0X01 了解HTTP Header

先说下X-Frame-Options

X-Frame-Options : ALLOW-FROM uri 允许指定的哪些URL 嵌入该页面

X-Frame-Options : SAMEORIGIN 允许同源的网站

X-Frame-Options : DENY 禁止所有的网站 嵌入该页面

以下是视自己业务的安全情况,进行设置的

Field name Description Example
Strict-Transport-Security Enforces   secure (HTTP over SSL/TLS) connections to the server. This reduces impact of   bugs in web applications leaking session data through cookies and external   links. Strict-Transport-Security:   max-age=16070400; includeSubDomains
X-Frame-Options , Frame-Options Clickjacking protection. Values: deny   – no rendering within a frame, sameorigin   – no rendering if origin mismatch, allow-from:   URL – allow rendering frame if loaded from URL X-Frame-Options:   deny
X-XSS-Protection This   header enables Cross-site   scripting (XSS) filter built into most recent web browsers.   It’s usually enabled by default anyway, so role of this headers is to   re-enable for this particular website if it was disabled by the user. X-XSS-Protection:   1; mode=block
X-Content-Type-Options The   only defined value, “nosniff”, prevents Internet Explorer and   Google Chrom from MIME-sniffing a response away from the declared content-type.   This also applies to Google Chrome ,   when downloading extensions. This reduces exposure to drive-by download   attacks and sites serving user uploaded content that, by clever naming, could   be treated by MSIE as executable or dynamic HTML files. X-Content-Type-Options:   nosniff
X-Content-Security-Policy,   X-WebKit-CSP Content Security   Policy definition. Requires careful tuning and   precise definition of the policy. If enabled CSP has significant impact on   the way browser renders pages (e.g. inline JavaScript disabled by default and   must be explicitly allowed in policy). CSP prevents a wide range of attacks,   including Cross-site   Scripting and other cross-site injections. X-WebKit-CSP:   default-src ‘self’

 

0×02 设置 HTTP Header 防御clickjacking

Apache 服务器配置 header

我是用wamp 一键安装环境的,在配置文件httpd.conf中进行以下修改

首先看你的mod_headers.so 是否开启了,开启就把前面的#去掉即可

LoadModule headers_module modules/mod_headers.so

然后在添加

 
<IfModule headers_module>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

或者

 
<IfModule headers_module>
header add X-Frame-Options SAMEORIGIN
header add X-XSS-Protection 1;mode=block
</IfModule>

Nginx 服务器配置 header

add_header X-Frame-Options SAMEORIGIN;

上面这些适合浏览器版本

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic   support 4.1.249.1042 3.6.9   (1.9.2.9) 8.0 10.5 4.0

对于浏览器版本低下的浏览器,这需要自己定义的代码来防御clickjacking

0X03 js防御 clickjacking代码

<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self == top) {
var theBody = document.getElementsByTagName('body')[0];
theBody.style.display = "block";
} else {
top.location = self.location;
}
</script>

腾讯微博也就是用这类似方法防御的,当iframe腾讯微博页面时,顶级页面会被重定向到腾讯微博里面去。