欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

小议session欺骗的利用以及价值

程序员文章站 2022-05-04 10:45:48
对于session欺骗 大家都蒙了。 百度上有一篇文章 骗了整个网络界 虽然有不少人已经发现是错误的理论 误导的文章 。使不少人觉得 session欺骗很牛x 其实不然那篇文章叫eWebEditor sess... 09-08-28...

对于session欺骗  大家都蒙了。 
百度上有一篇文章 骗了整个网络界 虽然有不少人已经发现是错误的理论 误导的文章 。使不少人觉得 session欺骗很牛x 其实不然
那篇文章叫ewebeditor session欺骗漏洞
没错 ew的确存在那漏洞 但是那个作者说错了 原文:
ewebeditor session欺骗漏洞
文章作者:nowthk
ewebeditor在线编辑器
漏洞文件:admin_private.asp
漏洞语句:<%
if session("ewebeditor_user") = "" then
response.redirect "admin_login.asp"
response.end
end if
只判断了session,没有判断cookies和路径的验证问题。
漏洞利用:
新建一个test.asp内容如下:
<%session("ewebeditor_user") = "11111111"%>
访问test.asp,再访问后台任何文件,for example:admin_default.asp
漏洞影响:虚拟主机的克星.      by nowthk

noethk大牛想法不错 但是很可惜 背离了session的运行机制。要知道 session是存放在服务端的 而放在客户端的只是一个服务端分发的sessionid 。原文作者是在本地架设的环境 所以根本不存在客户端服务端之说.如果文章没有加上 虚拟主机的克星这几个字 估计就不会有什么争议。 的确 session是可以被欺骗。这个话题我丢到后面再说。先说机制。


  虽然sessionid的唯一性大大地提高了session认证的总体安全 但是这世界上还有一样东西叫盗窃.
  我们来说说session的运行机制 . 例如你访问 这个站 那么服务端就会分给你一个sessionid值(前提是他们开启session) 什么时候你不爽 你关了浏览器 那么sessionid就失效了吗?
个人通过收集资料觉得 session在服务端是有存活期的。 你关了浏览器的话 那么就只是注销了该站的sessionid值 但服务端还残留着 iis默认是保存20分钟 这样就给了我们可乘之机。
  继续说到session运行机制 有一个很重要的知识点就是 服务端与客户端交接 是通过cookies存放在某一文件夹里面的 也就是说 xss也可以盗取session。
先别慌,看这一捉包来的数据:aspsessionidgqggqafc=fpgbgnocagplapofopjgodcj
看到没 asp sessionid*********** 等号后面就是他的sessionid值。  为了方便大家理解和验证方法的可行。我与老大 樱木花盗 做了一实验(部分修改)。
  老大登陆一后台(当然是session有验证)。然后捉包 发他的sessionid给我 然后他关了浏览器。也就是结束了客户端与服务端的连接 但那sessionid没过期。 我这边用啊d修改session 然后直接点击登陆 。 结果可想而知 成功登陆。
这是说明 客户端与客户端之间对服务端的欺骗 文绉绉地说 也就是中间人攻击,
这里 可能你会问 入侵的时候 别人会那么傻给你sessionid么。嘿嘿 问得好 。这里就出现了xss。
要知道 我们可爱的xss可以盗取cookies。。 我们直接把他的cookies相关直接盗过来。
xss恰恰可以做到这一点。 至于怎么触发跨站就不用说了把。。  盗取cookies的文件 网上一堆 自己找一下 改一下就可以。跨站的时候拿cookie可以,但是拿session就麻烦。session很快就要失效,除非没事一直等着目标中招后立即行动,不然就算拿到了session早就过期n久了
上面说的是中间人攻击 , 下面就说一下另一种情况。直接”欺骗”服务端。

这里就要纠正不少人的观点了。回到文章一开始说的那个ew编辑器session欺骗的文章 作者当然是想错了 看了我前部分所说的运行机制 应该就能弄个半懂把。也就说 客户端不能提交修改后的sessionid值到服务端 让服务端信任你。那样是不成立的。并且实验证明 不是行的。
另外一个实验如下:
win2003 sp1 +iis6.0 不是虚拟主机,iis建的两个网站a、b。
a -->s.asp : <%session("test")="ok"%>

a -->e.asp :<%if session("test")<>"" then response.write("good!")%>
b -->e.asp :<%if session("test")<>"" then response.write("good!")%>

1.访问http://a/e.asp 显示为空
2.访问http://b/e.asp  显示为空

3.访问http://a/s.asp
4.访问http://a/e.asp 显示"good!"
5.访问http://b/e.asp 显示为空

6.访问http://b/s.asp
7.访问http://b/e.asp 显示"good!"
实验三:
在写下了如下代码:
<%
session("username")="abddwww"
%>
又在同一主机另一个站点下写下了如下代码:(test.asp)
<%
if session("username")<>"" then
  response.write "ok"
else
  response.write "no session"
end if
%>
先访问test.asp返回no session,然后访问1.asp,再次访问test.asp还是返回no session(同一ie进程下)
说明想跨站欺骗是不成功的
假如要成功运用那个漏洞,除非和是绑定在同一主机头下,同目录。
为什么? 这又与iis用户有关.. 假如权限设置得适当 是没办法read目录 +write目录的话 那样session欺骗是不成立的
所以 要使成功 就必须以下几个条件
1:成功获取了该域名下的一个webshell
2:有读权限
3:需要入侵的系统采用了session认证
4:管理员使用的密码无法破解
5:可以获得session验证的语句
6. 同iis用户
7. 同域名(一级or二级).:
例如 ,那么二级域名就可以是这样: fuck.sb.cn
8. 同目录

这样的洞洞是不是很难利用? 其实一般小站都用不上 大站才用得上
我曾经检测国内某某大学的时候 就是靠这洞弄下不少shell 然后提权之。
所以 事实证明 session欺骗是存在 但是 利用范围比较狭窄 一般小站用不上 大站用这方法的话 倒是百试百灵~