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

幸运草
幸运草
幸运草
896
文章
3
评论
2020年5月21日20:54:23 评论 42

写在前面的话

当PornHub公布了他们的公开漏洞奖励计划之后,我敢肯定的是该网站之前存在的一些低级漏洞或比较容易发现的漏洞都已经被别人挖出来了。但是当我开始着手挖PornHub的漏洞时,我却在15分钟之内就发现了第一个漏洞,而在几分钟之后我又找出了第二个漏洞。在我整个挖洞生涯中,我从来没有以这么快的速度挖出过漏洞,所以我觉得非常的激动!

作为回报,我收到了PornHub所提供的总共500美金的漏洞奖励,外加一件非常炫酷的T恤衫,衣服的图片我已经发到Reddit上了,如下图所示:

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

当我将这张照片发到Reddit上之后,我压根没想到它会受到如此多的关注,而且很多人都向我私信并问我有关挖洞的事情,例如“你是怎样完成攻击的?”以及“你为什么要攻击PornHub?”等等。由于要遵守漏洞奖励计划的规定,我当时并不能给大家回答这些问题,但是现在这些漏洞已经被修复了,所以我打算在这篇文章中跟大家描述一下挖洞的整个经过。

挖洞过程

我当时正在使用浏览器浏览PornHub Premium网站,而我仅在20分钟之内就发现并报告了两个反射型跨站脚本(XSS)漏洞。跨站脚本漏洞将允许攻击者在一个网站中执行恶意脚本,OWASP给出的XSS漏洞定义如下:

“一名攻击者可以利用XSS漏洞向不知情的用户发送恶意脚本。终端用户的浏览器无法确定这些脚本是否可信任,并且会自动运行这些恶意脚本。因为它会认为这个脚本来自一个可信任的源,而恶意脚本将访问浏览器中保存的cookie、会话token或其他的敏感信息,并利用这些信息来完成其他的恶意目的,而有些脚本甚至还可以修改页面的HTML代码。”

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

我所发现的第一个漏洞存在于网站的“兑换码”区域,这个文本框并不会对用户的输入数据进行检测,而我们就可以在这个输入框中输入攻击payload了,于是我就可以用下面给出的payload来让页面显示我们的脚本信息:

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

这个payload的第一部分“PAYLOAD STACK”用于确保我们的payload可以被正常发送。如果我输入的是:

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

如果没有输入刚才的“PAYLOAD STACK”,那么Web应用将会屏蔽我所输入的内容,此时页面就不会显示任何脚本内容了。在payload前面输入一些无害内容可以欺骗网站的验证器,而我们的payload就可以正常执行了。

我所发现的第二个漏洞同样是一个XSS漏洞,这个漏洞的发现过程就更简单了。我当时发现了一个只会对新用户显示一次的URL参数,当我在这个参数中输入了一个payload之后就成功触发了网站的XSS漏洞,也许这就是该漏洞为何迟迟没有被发现的原因吧。大多数漏洞猎人会在开始挖洞之前先熟悉一下目标站点,有些人甚至会凭感觉来尝试找出漏洞,但是我一般采用的是一种不同的方法。我个人比较喜欢从匿名窗口入手,此时网站通常会认为我之前从未访问过它,而这些窗口中一般都会存在安全漏洞。

我发现如果我没有付费的话,我基本上是无法查看PornHub Premium的网站内容的。但是在我支付之前,网站会弹出一个窗口并告知用户当前正在访问色情网站,用户需要点击窗口中的按钮来确定是否急需访问。除此之外我还发现,当我点击了“Enter”(进入)按钮之后,网站URL地址的其中一部分会发生改变并增加了一个参数。这个存在漏洞的参数就是“&compliancePop=no_gateway”,而我就可以在这个参数中输入下面给出的payload:

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

加载了这个payload之后,我就可以让网站显示出“1”,也就是我们payload中的信息,而这就意味着这里存在一个XSS漏洞。

总结

我将这两个漏洞都上报给了PornHub,他们也在24小时之内对漏洞进行了审核确认。我很感谢PornHub的工作人员给我们提供了一个非常公平的漏洞奖励计划,而且我也要为他们的工作效率和快速响应能力点个赞。更重要的是,他们非常在意用户的安全,这也是很多其他的网站应该学习的地方。

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
网站SEO优化基础流程(新手必看) 优化

网站SEO优化基础流程(新手必看)

宝塔面板搭建一个获取网站的Favicon图标的APIgetFavicon是一个可以获取网站的Favicon图标并显示在你的网页上的项目。安装方法很简单,属于开箱即食。这篇文章还是基于宝塔面板来搭建。 1、简介 项目:https://github.com/owen0o0/getFavicon 2、准备 宝塔面板(…网站SEO优化属于市场营销的一种,在外行看起来专业性非常强。但在内行眼里,网站SEO优化基础流程是有规律可行的。只要在SEO优化前搞清楚一些基础流程,然后按照流程一步步实施,就算是刚入行的新手,也能少走很多弯路。下面MAY的SEO博客为您讲解SEO优化基础流程。 01 选择网站建站程序 您可能会看到很多的博主介绍第一步应该是购买域名和空间,而May不建议您这样做。 ①. 从网站SEO优化的角度,网站建设最好是先在本地搭建,待网站搭建出来后再上线,一般网站搭建可能会花2~3个月时间; ②. 而您购买的域名和空间刚开始会选择按年购买,网站在本地搭建时,您的域名和空间处于完全闲置的状态。买来也是空置在那里。当然对于比较热门的域名,建议您还是先下手为强。 ③. 推荐WordPress建站。即使是新手,WordPress算是轻松易上手的一款建站程序。丰富的网站模板及插件可以实现多样化功能。 02 选择网站域名和空间 域名:不言而喻,是访客识别您网站的一种标识。一个简单好记的域名至关重要。当然在您选择域名前,最好查看域名历史。 空间:也就是我们常说的网站服务器,是存放网站内容的容器。一个安全稳定的空间/服务器为网站长远发展保驾护航。 03 网站备案 选择国外空间或服务器,可以忽略这一步骤。 选择国内空间或服务器,目前是逃不掉网站ICP备案这一环节。您选用的哪家空间/服务器,就在哪家备案(这是朝廷的规矩)。当然,还有一些省份要求公安联网备案。 04 网站基本设置 ①. 网站TDK T: 网站标题Title是影响排名的一个重要的因素,也是展示在搜索结果第一行。好的标题会决定用户是否点击进入网站。 D: 网站描述Description大致简要介绍网站的主要内容。 K: 网站关键词Keywords,可写也可不写。 ②. 301重定向、404页面、伪静态、站点地图、robots.txt 301重定向:确定网站首选域后(是带www还是不带www),将非首选域301重定向到首选域,避免网站权重的分散。 404页面:当用户访问到不存在页面时,能返回404页面,提示用户这是错误的页面,另外建议404页面设置返回首页或其他分类页导航,帮助用户返回,能大大降低网站跳出率。 伪静态或纯静态:随着搜索引擎越来越智能化,动态页面虽说可以被搜索引擎抓取;但是为了降低搜索引擎工作难度,还是建议将网站伪静态或纯静态化处理。 站点地图:地图一般分为两种,一种是给搜索引擎看的,格式一般为.xml;另一种是给用户看的,格式一般为.html。 robots.txt:搜索引擎访问网站时,会查看站点下的robots.txt,来查看哪些页面可以访问。如果您的网站所有页面都允许搜索引擎抓取,则可以不使用robots.txt;但一般都建议网站配置robots.txt,来禁止搜索引擎抓取一些不重要的页面。 05 网站内容的丰富 保持定期更新优质原创内容,保证网站的活跃,丰富的网站内容不仅可以获得用户的喜爱,也更容易获得搜索引擎的青睐。 06 网站内链建设 网站内链建设包括导航栏链接、面包屑导航链接、侧边栏链接、底部链接、文章中链接等,整个网站内部形成一个巨大的网络结构。以便蜘蛛可以爬行网站的每个角落,提高网站收录量。 07 网站外链建设 也许您会听到很多声音说网站外链建设已经不重要了。但是May觉得外链还是有必要的。先不说外链会不会有助于网站排名,但您不可否认的是外链为搜索引擎和用户多提供进入您网站的入口,及时发现您的网站并访问您的网站。一个优质的外链会给您带来源源不断的流量,您还会说它没必要吗? 写在最后:网站SEO优化是一个细活,也是一个长期的过程,特别是前期会很难看到效果。但坚持下来,一定会获得意想不到的收获。 变化吧:手把手教你建站(基础篇)说起第一次使用Wordpress建站,相信大部分人的印象都是虚拟主机、空间搭网站,因为便宜、省心,自己搭个小站放上去也算足够,但是随着各种技术的迅速发展,原来的很多虚拟主机已经不能再满足Wordpress配置要求,再加上各种云服务、VPS的降价,服务器性价比已…
宝塔面板LNMP从零开始配置NextCloud超详细教程,同时配置外部七牛云存储 优化

宝塔面板LNMP从零开始配置NextCloud超详细教程,同时配置外部七牛云存储

SQLMap-常用命令SQLMap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系…无奈死了,网络上完全没有对于宝塔面板LNMP对于NextCloud的配置教程,官方也没有任何中文文档,不披马甲官网慢得要死,这里给各位排排坑,科普一下。 准备 马甲一个,用来下载最新的NextCloud安装包,注意不要运行包和其他需要依赖的包,最简单的php包就可以。当然,如果你没有马甲,但是能上官网的话也可以直接去下,就是速度慢成蚂蚁...... 在整个配置过程中,关闭宝塔当前站点的防火墙,关总开关,不要一个一个关。 宝塔面板php安装好7.1-7.3版本,低于该版本不能运行。 完全按照教程操作,不要少步骤。 开始配置 在宝塔面板中准备好空壳网站 主要内容: 数据库:MySQL数据库。 PHP:7.1及以上版本。 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,静静地等待安装完成。 添加后,绑定好域名,配置好SSL(推荐)。 在“网站目录”中,关闭“防跨站攻击”。 在“文件”中,找到刚刚创建的网站的根目录,删除所有文件,包括上传的NextCloud源码包。 如果全部删除后,发现仍有.user.ini文件,删掉它。 上传源码 直接上传,并且完全解压、覆盖。 如果发现解压到子目录里面了,进入子目录,全选——剪切,然后粘贴到根目录,然后把那个子目录删掉,保证没有多余文件。 这套系统自带程序完整性检查,对于每个文件都要进行md5匹配,否则会有安全提示。 为了避免这些警告,我们还是最好先处理好。 配置系统 打开绑定域名,系统会自动进入安装界面。 填写管理员用户名、密码。 注意!不要在填写完管理员帐号密码后就直接点击“安装完成”!你还没有配置数据库! 点击“存储与数据库”选项,弹出了“数据目录”和“配置数据库”选项。 改变数据目录,不要使它在网站目录内,否则之后还需要在网站配置里面添加deny项。 最好是放在/www目录下。 然后选择数据库为MySQL/MariaDB! 在宝塔面板内创建一个MySQL空白数据库,记下用户名和密码,然后填写到配置项内。 填写后的配置应该像这样: 注意数据库端口的问题,在localhost后面,输入冒号加上端口号,端口号应该为宝塔面板安装的MySQL的运行端口,如果你没有修改过,应该为3306。 然后点击安装完成,等待几十秒钟,就会进入首页了。 解决网络安全警告 直接点击右上角头像,进入“设置”页面,点击左侧“管理——概览”进入安全管理页面。 等待转圈完成,你会看到十多个安全提示,例如(我这里因为之前修复过一次了,有一些错误提示没有出现,具体的在下面): 先说明一点,我如果标出“这个问题可以通过修改配置文件解决,不需要单独修复”,代表这个问题可以通过修改完主要问题后,通过修改配置文件的方式一起解决,就不用单独操心修复了。 这些提示我几乎都看到过了......(心塞塞) 一些文件没有通过完整性检查。了解如何解决该问题请查看我们的文档 请点击右侧“无效文件列表”,查看提醒的错误文件,一般都是.user.ini文件不匹配,或者是你没有删除你的程序源码包,有了多余的文件。 PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(”PATH”) 测试时仅返回空结果. 编辑/www/server/php/73/etc/php-fpm.conf文件,路径中的73请替换为你的php版本,71为7.1,72为7.2,以此类推。 在文件的最后面添加如下代码: env = $HOSTNAME env = /usr/local/bin:/usr/bin:/bin env = /tmp env = /tmp env = /tmp 注意是在文件最后,也就是下面,而不是在下面,否则php会无法启动(不要问我怎么知道的)。 HTTP的请求头 "Strict-Transport-Security" 未设置为至少 "15552000" 秒。为了提高安全性,建议参照security tips ↗中的说明启用HSTS。 这个问题可以通过修改配置文件解决,不需要单独修复 PHP 模块 ‘fileinfo’ 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果. 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,静静地等待安装完成。(一劳永逸,不要用哪个安装哪个,都会用到的) 您的网页服务器未正确设置以解析“XXXX”。更多信息请参见文档。 这个问题可以通过修改配置文件解决,不需要单独修复 内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。 在宝塔面板——软件商店,安装Redis,里面的配置不需要修改。 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,静静地等待安装完成。(如果在准备中已经安装好,跳过这个步骤) 进入网站根目录,打开config文件夹,编辑config.php文件,在最后一个逗号后面回车,添加以下内容: 'memcache.local' => 'OCMemcacheAPCu', 'memcache.distributed' => 'OCMemcacheRedis', 'redis' => array( 'host' =>...
SEO如何避免站内重复内容,排名相互竞争? 优化

SEO如何避免站内重复内容,排名相互竞争?

宝塔面板搭建一个获取网站的Favicon图标的APIgetFavicon是一个可以获取网站的Favicon图标并显示在你的网页上的项目。安装方法很简单,属于开箱即食。这篇文章还是基于宝塔面板来搭建。 1、简介 项目:https://github.com/owen0o0/getFavicon 2、准备 宝塔面板(…如果你关注过早期百度熊掌号,你会发现它要求每个内容页面必须包含:rel="canonical"这个标签,目的就是为了避免原创文章,产生过多的重复页面,导致搜索引擎收录多个URL,影响搜索排名。 那么,重复内容会导致搜索引擎惩罚吗? 当你在对比网站索引量与收录量的时候,经常会发现,搜索结果中的收录量往往高于索引量,很多SEO初学者并不清楚这是为什么,它很有可能的原因就是搜索引擎抓取了大量重复内容。 当你利用site:网址,查询页面的时候,经常会遇到百度提示:为了提供最相关的结果,我们省略了一些内容相似的条目。 简单理解:百度为你过滤了一些重复页面,如果你的站点内容页面并没有采用rel="canonical"这个标签,搜索引擎很难判断,哪个页面是标准化的页面,往往造成误伤,删除相关内容页面的索引,如果大量产生这样的页面,就很容易导致站点被降权。 那么,我们如何避免站内产生这些重复页面? 1、nofollow打印机页面版本 当你的文章发布成功后,你经常会在内容页面右上角发现一个打印机小图标,你点击它会快速创建打印内容,这本来是一个人性化的设置,但稍微不注意,就会容易产生重复的URL。 因此,你需要在CMS模板中,nofollow掉着个小图表,禁止蜘蛛爬行与抓取。 2、网站改版,需要301重定向旧链接 一个网站在不定期的时候,会根据自己的用户规模,调整网站模板,甚至系统内部插件,它往往很容易造成URL地址的变更,当你遇到这样的情况时,你需要尽可能的301重定向每个旧网址到新网址。 3、转发内容,标注版权 基于对网站的需要,你可能要适当的转载网络上大量的内容,用一个不恰当的词来解释,它可以用“采集”这个词,我们知道百度的飓风算法,严厉打击采集内容,如果你并不是一个高权重的站点,那么你可能需要注意一些小细节:除了在内容页面,标注原文链接地址外,尽量利用rel="canonical"这个标签指定内容的原始来源。 4、注意域名与HTTPS的配置 域名的样式与HTTPS的配置,有一个类似的地方,比如:一个站点可以通过www访问,也可以通过无www的主域访问,同样当你配置HTTPS的时候,你的HTTP链接,有的时候也是可以访问的,为此,你需要: ①选择唯一域名,将另外一种形式301重定向。 ②将HTTP,301重定向到HTTPS。 5、避免标题统一不变 在以前这是一个老生常谈的问题,随着SEO技术不断被广大站长认知,虽然同质化标题在很大程度上,有了改变,但目前仍然有大量网站,仍然是网页标题,都是同一标题,而在内容页面中的H1,采用不同的标题。 这虽然并不算是严格意义上的内容重复,但它同样严重制约网站关键词排名。 6、URL标准化 所谓的URL标准化,这基本上算是一个常识了,每个SEO人员都应注意的问题,这里蝙蝠侠IT还是要旧事重提,我们需要确保在静态、伪静态、动态页面中,只选择一种链接样式,特别是当你的站点内容是伪静态的时候,一定要在robots.txt中,屏蔽动态URL相关参数。 总结:避免大量产生重复内容,是每个SEO人员需要学习的地方,也是SEO工作顺利进行的一个前提条件。高并发Day14--京淘前台搭建1 项目结构介绍 1.1 项目架构图 2 搭建京淘前台项目 2.1 创建项目 2.2 选择打包方式 2.3 添加继承/依赖/插件 编辑POM.xml文件,添加继承依赖和插件 <parent> <groupId>com.jt</gr…
linux运维——基础篇 运维

linux运维——基础篇

变化吧:WordPress优化教程近些年来,Chrome等浏览器一直在推动https网站,所有的http协议网站被标记为不安全,而在今年的7月份开始,Chrome将对非https网站进一步加入明显的非安全标记,如果这时再不对网站进行https改造的话,那么可能会对信任度造成一定的影响,所以说对…说到服务器操作系统,linux的各种发行版本以毫无悬念的姿态占领了绝大部分的市场份额。常见的桌面操作系统Windows与Linux在操作上有着很大的区别。 容器技术最初发源于linux,也成熟结果与Linux,因此要掌握容器技术与云运维技术免不了对Linux有一定的了解。 1、systemd 计算机在启动一个操作系统时必须加载并初始化操作系统,方能运行其他的应用程序,这是计算机初始化必不可少的一个启动过程,也就是说计算机启动需要一款初始化系统。systemd是目前Linux系统中最流行的初始化系统之一,能提高系统的启动效率与质量,它不仅可以让系统进程并行启动,还能很好地守护init进程,减少系统内存的不必要开销。 在systemd诞生以前,还有两个系统初始化工具,分别是systemvinit和upstart,systemvinit是一套传统的初始化系统,已经逐渐地淡出了Linux历史舞台,现在已经基本被systemd和upstart取代了,systemd和upstart各有各的特点,不过目前已经有绝大多数的Linux发行版都默认使用systemd,比如Fedora、openSUSE、Ubuntu、Gentoo、Arch Linux等一系列Linux发行版。 2、shell基础编程 在Linux系统中,shell是一种命令行的解释器命令,是用户与系统内核之间进行通信的一种语言。第一个Unix Shell是sh,除此之外还有很多优秀的shell,例如:ksh、bash、csh、tcsh等。 Shell具有两种工作模式,分别是互动模式和脚本模式。互动模式就是用户直接在终端上输入指定的命令并执行,等待命令执行完毕并分析返回的结果,然后再执行下一条命令。脚本模式就是在执行Shell命令的过程中,不需要用户去干扰或控制,它会自动执行下去。脚本模式的执行效率是非常高的,也就是我们经常说的自动化运维,只要我们编辑好了Shell任务,然后跑在Linux进程中,这些任务将会被自动处理。SQLMap-常用命令SQLMap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系…