发新话题
打印

[讨论]另类的旁注方式 seesion欺骗+dns欺骗

[讨论]另类的旁注方式 seesion欺骗+dns欺骗

议题提交:Linzi [混客联盟]
信息来源:邪恶八进制信息安全团队

以下内容的动画下载地址如下:
http://61.129.112.74/1.exe
http://61.129.112.74/1.exe
http://61.129.112.74/_vti_cnf/dvbbs.rar

我的测试:
我用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。需要对此进一步了解。[/b:8e83c11df9]
在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 资料编码。  
[b:8e83c11df9]
但是我觉得函数不是关键的问题,主要是先搞清session到底是怎样的机制。我稍微看了一下有关的资料。给人的感觉是session其实是在服务器端的tmp目录下的某一个文件中为每个用户储存一些变量,对session的操作其实是对文件读写操作。请有关高手高谈阔论![/b:8e83c11df9]   

[b:8e83c11df9]我想知道tmp目录到底放在哪里呢,我好像在win2000用搜索找不到tmp目录。只有[color=red:8e83c11df9]temp[/color:8e83c11df9]目录[/b:8e83c11df9]   

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

[b:8e83c11df9]/tmp
[color=darkred:8e83c11df9]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&#39;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[/b:8e83c11df9]    [/color:8e83c11df9]   

[b:8e83c11df9]现在我已经知道上面引起的原因了!Cannot send session cache limiter - headers already sent [color=red:8e83c11df9]是由于在前面有echo[/color:8e83c11df9]
Warning: Failed to write session data (files). 是由于
复制内容到剪贴板
代码:
在windows2000+IIS下,没有php.ini文件。session_save_path没设置。    [/b][b]  我在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 目录,它的权限为可读写!就行了!    [/b:8e83c11df9]
[
复制内容到剪贴板
代码:
color=blue:8e83c11df9]在php中,seesion的机制是文件,还不是想asp那样是对象的概念,也不是放在内存,觉得在session就像存储在文件里一个全局变量。而且需要session cookie的配合。(即如果客户端cookie关掉就不行了,虽然url的方式也可以)session最对提供了方便管理全局变量的方式,其实自己用文件操作可以实现,在速度方面好像没有优势。
对session的认识的补充![/b:03c3ca8536][/size:03c3ca8536][/color:03c3ca8536][b:03c3ca8536][color=red:03c3ca8536]session在各个窗口是如何运行。[/color:03c3ca8536][/b:03c3ca8536]   
[b:03c3ca8536]我先来做个试验[/b:03c3ca8536][color=red:03c3ca8536]我php版本是4.02,[/color:03c3ca8536]
首先我们来建立两个文件。

test1.php
复制内容到剪贴板
代码:
<?
session_start();  
session_register("count");  
echo $count=0;  
?>
test2.php
复制内容到剪贴板
代码:
<?
session_start();  
echo $count++;  
?>
复制内容到剪贴板
代码:
[b:03c3ca8536]打开两个浏览器窗口,标记为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。[size=18:03c3ca8536][color=red:03c3ca8536]这说明session不能跨窗口运行。并且每个窗户生成一个文件    [/color:03c3ca8536][/size:03c3ca8536]如果在A窗口用文件》》新建窗口得到窗口D时,刷新,浏览器中的数值在不断的递增  ,sess_72449e735acfa944d629d05f12e26d81  内容count的值变化了,[color=red:03c3ca8536][size=18:03c3ca8536]所以窗口具有继承性!session可以在 继承的窗口传递。[/size:03c3ca8536][/color:03c3ca8536]   [/b:03c3ca8536]  

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

[color=blue:03c3ca8536][size=18:03c3ca8536][b:03c3ca8536]我的留言版
[url]http://www.my8868.com/second_folder1/message_board/message_board_index.php[/url]
的用户注册功能的实现,我首先想到是用session的机制,因为在以前的印象中seesion是服务器端,执行速度一定比cookie快,不需要受客户端的限制,(因为cookie在用户端关掉cookie支持后就不能用了)可是现在发现 session也需要cookie机制的支持,所以我真怀疑php中session的优越性!用户注册 ,网上购物,这些系统应该是用se&#39;ssion的,可是.....
你们会选择用session还是cookie
此ID为马甲.多人使用.

TOP

职业欠钱 13:41:57
我的理解
职业欠钱 13:46:39
当你访问
192.168.0.1/mt/
时产生了一个session:
ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC
那么IBOMFONAOJFEEBHBPIENJFFC
因为是而你访问
192.168.0.1/yes 时,因为没有关闭浏览器
所以session依然是IBOMFONAOJFEEBHBPIENJFFC

因此SESSION("IBOMFONAOJFEEBHBPIENJFFC")("admin")="admin"
因此你可以随便登陆一个就访问另一个
而如果你此时关闭了浏览器,或者是,访问了127.0.0.1
IIS会把它当作一个新的访问,因此有新的session
ASKDJGIAEKGJKALJDIS
无论你怎么弄,要进行欺骗,你只有使用
IBOMFONAOJFEEBHBPIENJFFC来访问才可能登陆后台,而你的更改本地的域名指向或者别的动作,都不会使你的session值变为IBOMFONAOJFEEBHBPIENJFFC
因此是徒劳的
个人论坛: http://www.xdxf.net

TOP

引用:
进入www.cnbct.org后台,然后修改hosts
www.71345.com www.cnbct.org
这个时候再打开www.cnbct.org也就变成是在www.71345.com
这样也就达到seesion欺骗的目的了。
你这种理想状态是不可能实现的。(我从纯理论上说,可能有错。各位大峡门指点指点)
即使你能把www.cnbct.org变成是www.71345.com
但是因为session是保存在服务器上的。他有个作用域(没记错的话是这样的),你原来的session只能在www.71345.com及其下的目录里起作用。而你到了www.cnbct.org(即使你浏览器上显示的是www.71345.com)他还是会去找你在www.cnbct.org的session。结果当然是没有找到。所以你还是不能欺骗成功。
另外。我怀疑你改过hosts后。服务器返回的会是www.71345.com的网页。
从你浏览器发的http包来说。你把www.71345.com重定向到www.cnbct.org(如果可以)他发的http请求包里主机头就还是:www.71345.com
于是服务器就查找到www.71345.com对应的网页传送给你了。而不是www.cnbct.org的了
http://www.phpweblog.net/GaRY/

TOP

和职业欠钱,我非我讨论后,我觉得我的观点有点问题,现在我觉得更向于职业欠钱那边,我再去找些资料。
此ID为马甲.多人使用.

TOP

修改了一下 抱歉 如果不这样修改 排版就乱了 phpwind的代码不好
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

呵呵。。我看标题还真以为是session欺骗呢

^_^

潜了这么久,出来冒个泡。。。^_^

TOP

A站(sessioned to IE)---->IE(get the session)
HOST(redirect IP)---->IE(A&#39;s session)---->B(no sessioned)---->-Spoof Failed
me=\"kEvin1986\" & chr(0) & \"at solitude\" msgbox len(me)  \' You can see somthing. msgbox me  \' But just part of it. \'i think i will hide part of myself

TOP

呵,至少理解了session和cookie,8错。

TOP

利用session做个后门倒是不错,
比如动力3.51,我做过测试,文章是看黑防的,
比如先在版权文件里明,先将session语句放进去,利用该文件,进入后台,不用密码
程序看得越多,对技术文章的理解越深!

TOP

我非我同学和凯文已经说完了,以前我尝试过这种欺骗,至少我从成功率+实际环境下,成功率基本上可以忽略,欺骗是有可能,但是文中后面的拓展思维方面有问题,理解严重有问题

TOP

不错 顶了再看。。。


--Administrator--
按照本版面的规定 在本版面技术主题后进行非技术回复或者发无意义灌水的废帖的 本该封杀ID
念在初犯 禁言30天 其他的请参照置顶主题 不严格就永远没有纯技术讨论的净土

TOP

很好,让我又明白了一点几种欺骗

TOP

发新话题