另类的旁注方式 seesion欺骗+dns欺骗 登陆 -> 注册 -> 搜索 分享

我的测试:
我用MYPOWER3.51做试验:
1.建立两个目录test1和test2,放在目录e:\wanbin\下,这时e:\wanbin目录下有两个文件夹分别是test1和test2
2.打开http://127.0.0.1/test1/admin_login.asp,进行后台修改默认密码,改后的密码为123456,另一个目录的用户名还是admin密admin888
现在test1的动力用户资料是 admin 密 123456
现在test2的动力用户资料是 admin 密 admin888
3.进入http://127.0.0.1/test1/admin_login.asp,然后登入后台,接着再打开
http://127.0.0.1/test2/admin_index.asp
直接进去了,没有输用户名和密码,而且这两个用户名和密码是不一样的。


一:原因分析
查看一下admin_index.asp的关键代码如下:
<%
if session("AdminName") = "" then
  response.Redirect "Admin_Login.asp"
end if
%>
通过上面我们知道只要满足session("AdminName") 不等于空就可以,因为seesion是在服务端,所以当我们登入http://127.0.0.1/test1/admin_login.asp的时候,有了一个seesion,所以再打开http://127.0.0.1/test2/admin_index.asp,因为满足session("AdminName") <> "",所以直接进去。

二:攻击延伸
再来测试同一服务器的跨站攻击:
http://www.71345.com/和http://www.cnbct.org放在同一服务器下账号和密码和刚才测试的一样
打开http://www.71345.com/admin_login.asp登入后台。再直接打开
http://www.cnbct.org/admin_index.asp
失败。
理论上讲也已经得到了一个seesion,但为什么却不行,

三:再分析
我一开始以为是同一目录是可以的,所以我在同一目录再建一个目录,但这次不同的是,我让他们的
端口不同,一个是127.0.0.1:80,一个是127.0.0.1:81,再手工打开发现失败,再次测试来确定一下
我的判断,登入http://127.0.0.1/test1/admin_login.asp后,再手工打开http://61.154.6.1/test1
/admin_index.asp,其中61.154.6.1是127.0.0.1的公网IP,两个是等价的,但是打开,发现失败,终于
我确定了,不是目录的原因,是域名的原因,所以只要可以构造域名欺骗,就可进行其它站,再加上自己
对seesion的了解,我可以肯定的说,能不能seesion成功的关键是在于对域名的欺骗,那名怎样欺骗域
名呢,我想到了修改hosts,对于hotst,我就不多说了,这个东东地球人都知道。

四:失败的测试:
修改hosts如下
www.71345.com www.cnbct.org
本来是想打开www.cnbct.org会自动转到www.71345.com
但是事实不是,因为hosts不支持域名,他只支持IP,也就是说前的www.71345.com要换成IP.


五:总结,我为什么这么拼命的原因
我们在入侵的时候得到一个shell.www.cnbct.org/shell.asp,这个时候我们想进到同一服务器下的另一个站点,www.71345.com.
这两个站都是用同一个程序mypower3.51
理想中的入侵开始:
进入www.cnbct.org后台,然后修改hosts
www.71345.com www.cnbct.org
这个时候再打开www.cnbct.org也就变成是在www.71345.com
这样也就达到seesion欺骗的目的了。

seesion一点点的相关资料如下
session和cookie的最深刻理解
 去先说session

对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。
但还是讲讲,别嫌老~

有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法

如果有错误请不要朝丢东西,金条和硬币除外。

有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而

从一些比较实际的角度看SESSION。

首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当

前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边

先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以

及对各个类型数据的下载许可,如图片,声音以及FLASH。
数据实际传输内容:IE到服务器
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language0: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: www.jh521.com
Connection: Keep-Alive
服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储

并同时返回相关页面的下载数据,如下:服务器到IE
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
Cache-control: private
然后就是页面HTML代码

此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC

而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送

给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你
而在服务器上设置SESSION("name")="name"
完全可以看成是
SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
或者
SESSION(SESSIONID)("name")="name"
这样,SESSION就区分开用户了。
而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个
反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到

对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。

不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲

想必一些人明白了了SESSIONID到底是如何工作的

那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类

但是属于一种工作模式,用户和服务器传输私有数据

当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并

存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。

那么为什么要用COOKIE而不用SESSION呢
看下区别

有效时间以及存储方式 传输内容
COOKIE 可设置并在本地保留 明码信息

SESSION 在IE不关闭并服务器不超时 只有SESSIONID

当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,

因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)

而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录

在下次登入的时候会请求新的SESSIONID

而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE

如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。

那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~

就麻烦了。

但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的


好,有点累了,在说说这个东西
Request.ServerVariables("HTTP_REFERER")

我想有一些人通过这个Request.ServerVariables("HTTP_REFERER")
来进行一些关键性限制,特别是对付远程提交以及非法侵入。
那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟
而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。
(可惜我原先那他没干正经事情,做WEB游戏挂机程序来的)
我虽然接触php的时间也不短了,但我在php中却对session和cookie却在具体的编程中没有用过。

我最早认识session和cookie的概念还是三年前学习asp知道的,后来一直没用过。
在asp中还有applaction的概念。在我的脑海中,applaction和seesion都是服务器上存储机制,applaction(在php似乎没有这个概念,当我在asp中用这个编过计数器)对于每个浏览者是共享的,而seesion是每个用户都有自己的session。他们的生命周期一般是用户打开某网站浏览器到关闭与次网站连接所有的浏览器后结束。cookie这是在用户端的存贮机制,他需要用户的大开cookie支持,

目前在用户注册登录时,我觉得有必要用到session。需要对此进一步了解。
在php中有关session的函数主要有如下这些:
session_start: 初始 session。
session_destroy: 结束 session。
session_name: 存取目前 session 名称。
session_module_name: 存取目前 session 模组。
session_save_path: 存取目前 session 路径。
session_id: 存取目前 session 代号。
session_register: 注册新的变数。
session_unregister: 删除已注册变数。
session_is_registered: 检查变数是否注册。
session_decode: Session 资料解码。
session_encode: Session 资料编码。

但是我觉得函数不是关键的问题,主要是先搞清session到底是怎样的机制。我稍微看了一下有关的资料。给人的感觉是session其实是在服务器端的tmp目录下的某一个文件中为每个用户储存一些变量,对session的操作其实是对文件读写操作。请有关高手高谈阔论!    

我想知道tmp目录到底放在哪里呢,我好像在win2000用搜索找不到tmp目录。只有temp目录    

如下的代码在我本地机上会出现错误警告信息,上传到my8868.com
网站(我在虎翼的服务器)上没问题。我想可能是tmp目录所在的目录的权限没有弄好,当有不知道tmp目录所在的地方
<?
echo session_save_path();
session_start();
session_register('count');
$count++;
echo "<P>You've been here $count times.</p>";
?>

/tmp
Warning: Cannot send session cache limiter - headers already sent (output started at c:\inetpub\wwwroot\my8868\test.php:2) in c:\inetpub\wwwroot\my8868\test.php on line 3

Warning: open(/tmp\sess_5a0e8bd0b49308a4abf652cbff6fcd1b, O_RDWR) failed: m (2) in c:\inetpub\wwwroot\my8868\test.php on line 3

You've been here 1 times.


Warning: open(/tmp\sess_5a0e8bd0b49308a4abf652cbff6fcd1b, O_RDWR) failed: m (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0      

现在我已经知道上面引起的原因了!Cannot send session cache limiter - headers already sent 是由于在前面有echo
Warning: Failed to write session data (files). 是由于
Copy code在windows2000+IIS下,没有php.ini文件。session_save_path没设置。     我在win2000+IIS下没有php.ini也可以正常运行!
我的系统是win2000+IIS,没有想常规一样把php.exe和php.ini文件复制到winnt目录下,把dll文件拷到system32目录下,但是ph可以很好的运行,是不是在没有php.ini配置文件的情况下win2000+IIS,会调用一个默认的配置文件?
但是我最近想使用session的功能,出现上面的警告信息:后来加上php.ini文件并把session.save_path = c:/temp
默认为session.save_path = /tmp
并在c:目录下建一个temp 目录,它的权限为可读写!就行了!      

在php中,seesion的机制是文件,还不是想asp那样是对象的概念,也不是放在内存,觉得在session就像存储在文件里一个全局变量。而且需要session cookie的配合。(即如果客户端cookie关掉就不行了,虽然url的方式也可以)session最对提供了方便管理全局变量的方式,其实自己用文件操作可以实现,在速度方面好像没有优势。
对session的认识的补充!session在各个窗口是如何运行。    
我先来做个试验我php版本是4.02,
首先我们来建立两个文件。

test1.php
Copy code<?
session_start();
session_register("count");
echo $count=0;
?>

test2.php
Copy code<?
session_start();
echo $count++;
?>

Copy code打开两个浏览器窗口,标记为A和B
在A浏览器的窗口中执行test1.php,这时我们应该看到浏览器中显示的值是0。这时在tmp目录下会生成一个文件名为sess_72449e735acfa944d629d05f12e26d81的文件。内容count|i:0;
继续在A浏览器的窗口中执行test2.php,并不断的刷新它,我们就会看到浏览器中的数值在不断的递增,这时在tmp目录下仍然是只有上面那个文件名,内容count的值变化了,说明我们的session是起作用的。我们继续看看其他的情况,在B浏览器的窗口中执行test2.php,没有显示,继续刷新,仍没有显示。这时在tmp目录下会生成一个文件名为sess_26c0deb5b640cd9d9466b174dc051816,内容为空!再打开第三个浏览器窗口C并在其中执行test2.php,也是没有显示,这时在tmp目录下会生成一个文件名为sess_8b6934cd6a2f5a60e3d1c4eca9b3609e。这说明session不能跨窗口运行。并且每个窗户生成一个文件   如果在A窗口用文件》》新建窗口得到窗口D时,刷新,浏览器中的数值在不断的递增 ,sess_72449e735acfa944d629d05f12e26d81 内容count的值变化了,所以窗口具有继承性!session可以在 继承的窗口传递。    

可是问题有出来了,我把这两个文件上传到我网站做试验,
www.my8868.com
结果是不同的窗口也可以传递!我不知它的php版本是怎样以及php.ini是如何配置的,  
后来我有发现,www.my8868.com网站上session的保存期好像是永远,我关掉所有连接此网站的窗口,重新打开网页,session的值还是保存着,电脑用户注销后,也是不消失,重新启动也一样,但同样是这些文件在我机子上执行,session的值消失了。这里又出来一个session生命周期的问题。这样session与cookie不是一样了吗,在我的印象中session的生命周期应该是从用户连上服务端网站到用户离开结束。如果session的生命周期可以变化,而且是需要cookie session的支持,又是读文件操作,效率不高,还不如用cookie实现有关功能,在我看来seesion没有什么作用,其他人有没有其他的看法!

我的留言版
http://www.my8868.com/second_folder1/message_board/message_board_index.php
的用户注册功能的实现,我首先想到是用session的机制,因为在以前的印象中seesion是服务器端,执行速度一定比cookie快,不需要受客户端的限制,(因为cookie在用户端关掉cookie支持后就不能用了)可是现在发现 session也需要cookie机制的支持,所以我真怀疑php中session的优越性!用户注册 ,网上购物,这些系统应该是用se'ssion的,可是.....
你们会选择用session还是cookie     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值