拿下了一个美女图片网站!

a2a3cee3da7db8e9c7197a4fd2ae5d9c.png

原文链接:https://www.freebuf.com/articles/web/250308.html

大家好,我是鸟哥,一个半路出家的程序员。

这几天一直再出搭建个人网站的文章,为了进一步提高大家的积极性,我准备搭建一个美女图片的网站,于是就开始找相关的主题,结果就看到了今天要分享的这篇文章。很不错,也很刺激,决定分享给大家。希望大家本着技术第一,看图第二的态度认真阅读。

某天在无聊的浏览网页的过程中,偶然间,偶然的点进了某个美女图片网站。
想着也是无聊,就随便看看呗。结果一个图集就放出3张图,剩余的就要VIP(充钱),太可恶了!无聊的我就想看看能不能绕过限制,直接看到整个图集。

7c04e87786dc444ae6d56697c46d27ce.png


一. 基本判断

这个网站看上去没有使用一些现成的网站框架,比如wordpress,所以有可能出现低级错误。


如果使用的是网站框架,那我基本就直接放弃了,低版本框架虽然会有通用的漏洞(我没能力利用),但低级错误基本没有的。

先创建了个账户,登录之后查看了下存储,发现没有使用cookie,反而使用了sessionStorage和localStorage:

cookie

788cd3981b2b8f3a4acb8ec31aa8df1c.png

sessionStorage

4cdee9d8ea23c4ea3fb7408d721764c2.png

localStorage:略,没什么有价值的内容。

从这里以及文章最开始的图来判断,这个网站使用了不少前端的东西,很可能有些功能就是在前端实现的,或者使用了ajax技术。

二. 登录、权限认定

登录账户后,先判断图集加载页面怎么认定用户的权限的,看看会不会用到sessionStorage的uid或者token。


这里就要介绍下怎么使用火狐浏览器分析前端的代码了。

按F12打开开发者工具,然后按照图中的说明,查看加载图集页面时所发起的ajax请求:

2c9c48f81b91fc28d790d39ef5a46816.png

从上图得知,一共发起了4次ajajx请求,根据相应的内容,getContentInfo接口返回了图集的数据。

2741a550d7bcf317fccd92ec9a1dffa8.png

从url这个字段来看,也刚好返回了3个图片的url(用英文逗号分隔即可),也就是可以免费看的那3张图。

那看看发起请求的代码是怎么样的吧,选中堆栈跟踪,可以看到请求代码的调用过程,从下至上:

68c106f18d8f5952c386ec6a64bcd52d.png

意思就是,在windows.onload中调用了getContentInfo函数,getContentInfo函数中又调用了ajaxGetUser函数……

具体的位置,我们通过点击堆栈跟踪函数名右侧的蓝色链接,就可以直接跳转过去:

9816d55b7562602a0d3d1d549d4c1270.png

window.onload

a3dd066a301672ab4c78ceb91ac07065.png

getContentinfo

6152b9d544949589283b5f629b5bc511.png

这里可以看到传入了一个object,就是getData,里面的token就是sessionStorage的token:

4606df566ad5b4898c6aff3c46dcfc26.png

至于cid,就是图集的id,这里我懒得去找在哪赋值的了。


如果前端代码编写不规范(比如这里对前端代码都没有混淆),那么变量很可能暴露在全局环境中。

直接在开发者工具的控制台中输出cid就能看到值了:

那其实到这我又没法进行下去了,传入token是为了判断用户身份,传入cid是判断是哪一个图集。


而对于token我也没办法对它做什么事情,也没法冒充其他用户的身份。
如果他传入的是uid,也就是用户id,那倒还可以试一试。

最后跟着代码走下去的结果果然是这样,没有什么可以插手的地方。

三. 碰运气

我的思路都是建立在对方犯低级错误的前提下的,那么这种不在后端实现全部的数据处理,而是在前端实现,限制对方观看的某些资源的,还有哪些低级错误呢?


想了下,有没有可能接口返回的数据是完整的,然后只是用js代码将其隐藏而已……

但是最开始查看的返回数据的时候,返回的图片的url就3个:

cc8c06ba2fd6b9566847aa628a39e8a5.png

哦,另外,图片的加载虽然不需要任何权限,基本没有多少的防盗链措施(意思就是可以直接通过图片地址访问图片),但图片的地址是没有规则可言的,如果是按照数字顺序命名,那就可以直接获取到整个图集的图片了。

我不死心,把所有的字段都看了遍,还真有发现,在图集的下面,有一个推荐图片:

0784fa579f9e9e3089e874545d6c9ac1.png

所以也返回了这部分的数据:

86fa726690d78ee91cfacb1587d50fb4.png

点开一看,终于发现低级错误了,url没做处理,返回了整个图集图片的url:

dfeb5f524a4484ce42aa94b7281088c9.png

也就是说,虽然这页面的图集本身的其余图片我没法看到,但是它页面中推荐的图集的图片我全都可以看到:

e257c820df138876fdeb3f30d76d53c0.png

注意:直接使用图片地址其实还是不能查看到图片,需要在地址后面加上一个参数:

6a5a64eaed4e1994a37954fb7a9d86bf.png

但是这个参数每次登录后都是固定的,可以从localStorage中得到,也可以从免费可观看的图片地址中得到,意义不大。

四. 弱口令

理论上有这招就可以把查看到大部分图集的所有图片了,不过我不是无聊吗,又闲着看了看有没有其他可以做的。


在图集的下面,有一个评论区,当然,也是接口返回的数据。


在这里还是没进行处理,把所有评论用户的用户名全暴露了(手机号码),当然这些客户的口令一般也不会出现很弱的口令,所以我没去尝试。

但是上传这些图集的账户的口令,那就不好说了,关注图集上传者后:

203d345a5d97c0e9b81bd069d219e99b.png

在个人主页的关注部分,接口返回的数据中依然没进行处理,可以直接看到被关注者的用户名:

528adc778b509700f8c8a060fc85a823.png

我也就随便一试,居然还真使用了弱口令,下图是登录成功后”我的作品“页面:

fb70781eb60571539730ab33851e90ef.png

点击一个作品进去,显示已购买:

0945c7d990d2cb03288721116cd00983.png


五. 对后台管理的渗透

这个就不截图详细说明了,思路和上面的差不多,也主要是发现对方在前端的低级错误。

仅仅知道登录页面A的地址,然后查看登录页面的Js文件。


发现登录成功后使用js进行跳转,跳转到主页面B,并且登录成功后的在sessionStorage中设置了一些字段。

先直接访问主页面B,发现会先将页面的框架加载完毕后,再跳转回页面A。由此可以得出判断,B页面的跳转语句和A页面差不多,都是使用Js语句实现的。禁用Js功能,再进入B页面,发现果然停止了跳转。但是虽然页面框架正常加载,但却没载任何数据。查看B页面加载的Js文件,在跳转回A页面的代码前后找到了判断语句,使用sessionStorage中的字段进行判断。

于是设置sessionStorage中的相关字段,绕过了登录的过程,数据正常加载了,达到了渗透的目的。

六. 感想

其实从开发的角度,如果要保证代码至少在逻辑方面没有明显的漏洞,还是有些繁琐的。


举个简单的例子,如网站的数据检验功能,不允许前端提交不符合当前要求规范的数据(比如年龄文本框部分不能提交字母)。


那么为了实现这个功能,首先开发者肯定要在前端实现该功能,直接在前端阻止用户提交不符规范的数据,否则用户体验会很差,且占用服务器端的资源。但是没有安全意识或觉得麻烦的开发者就会仅仅在前端用Js进行校验,后端没有重复进行校验。


这样就很容易给恶意用户机会:比如不通过前端页面,直接向后端接口发送数据:或者,前端代码编写不规范,用户可以直接在浏览器控制台中用自己写的Js代码覆盖原有的Js代码;或者,用户还可以直接在浏览器中禁用Js;等等。总之,前端的传过来的数据可信度基本上可以认为比较低,太容易被利用了。

而我的思路都是很简单的,就是关注比较重要的几个节点,看看有没有可乘之机。如登录、权限判定、数据加载等前后,对方是怎么做的,用了什么样的技术,有没有留下很明显的漏洞可以让我利用。像这两个网站,加载的Js文件都没有进行混淆,注释也都留着,还写得很详细。比较凑巧的是,这两个网站都用到了比较多的前端的技术,也都用到了sessionStorage。特别的,它们都把很多的业务功能放在前端实现,于是存在明显漏洞的可能性就比较大,就值得我去尝试。

END

推荐阅读



牛逼!Python常用数据类型的基本操作(长文系列第①篇)
牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此源码为了缩减内容不带任何图片数据,请搭建后自己采集或者录入,采集不会的话可以百度找一下采集教程,,也可以直接去淘宝上找做采集的,价格也不是很贵! 本帖资源标签:WordPress自适应图片主题,主题模板,带会员积分下载系统 分类和标签添加筛选功能; 列表增加用户自定义排序功能,支持点赞和浏览数量排序; 优化二级菜单和三级菜单的css样式; 支持会员功能和用户中心模板; 支持第三方快速登陆(QQ和新浪); 新增单图模式,全新的图片浏览模式; 新增登陆、注册、找回密码三合一页面模板; 新增文章点赞排行榜页面; 新增AJAX列表加载功能; 新增广告投放面板; 支持点卡充值和点卡生成功能; 支持积分签到功能; 支持评论和投稿奖励积分功能; 支持积分开通会员功能(目前内置3个级别的会员); 支持积分下载资源和免费资源下载; 支持vip免费资源添加; 新增下载资源管理员和作者查看下载次数和校验资源功能; 支持文章前台投稿功能; 支持前台开启相对地址和绝对地址切换功能; 新增图片自动分页功能; 新增图片分页浏览模板; 新增后台列表显示缩略图和封面图片功能; 全新的SEO功能; 新增文章收藏功能; 新增文章顶踩功能(踩的按钮目前只在单图模式显示); 新增图片预加载功能; 幻灯片支持外链和自定义大图; 源码测试环境推荐php5.2/5.3/5.4Mysql 安装说明: 上传文件拿到网站根目录,直接安装即可,附带wordpress。
介绍 美图网站千千万,美图自己说了算!本源码由@香谢枫林开发,首页图片做了浏览器窗口自适应,最大化占满PC浏览器和移动浏览器的窗口,并且防止出现滚动条。 源码截图 功能介绍 首页图片设置了4个点击功能区,分别是:上一张、下一张、全部随机、套图集随机(为了丰富移动端操作) 搜索功能注释隐藏了,想用的同学自己打开发开者模式解除注释即可 随机按钮:仅在右上角下拉菜单选中的图集中随机 随机All按钮:全部图片中随机 自动随机:仅在右上角下拉菜单选中的图集中自动随机(间隔1.5s) 自动随机All:全部图片中自动随机(间隔1.5s) 自动浏览:自动下一张(间隔1.5s) 套图1:点击跳转新窗口,查看套图所有图片(观赏模式一) 套图2:点击跳转新窗口,查看套图所有图片(观赏模式二) 索引:点击跳转新窗口,查看套图集 收藏:收藏图片,点击”Count“也能收藏 收藏列表:点击跳转新窗口,观赏收藏图片 #注:键盘任意键或者点击图片即可解除自动浏览状态; 按键介绍 @上一张:<–(左方向键) @下一张:–>(右方向键) @全部图集随机:(上方向键 或 alt键) @所选图集随机:(下方向键或shift键) @跳转套图第一张:(空格键) @收藏:(?问号键) @浏览整套图片(模式1):({左大括号) @浏览整套图片(模式2):(}右大括号) @关闭标签页(针对跳转的页面):(\顿号) @自动浏览(随机全部图集1.5s间隔):(”冒号键) @自动浏览(随机所选图集1.5s间隔):(;分号键) @回看随机历史:(《左书名号键) @自动浏览(下一张1.5s间隔):(》右书名号键) #注:任意键结束自动浏览状态;”{}”这两个按键在套图浏览页面可以切换浏览模式 使用说明 第一步:本地建库,把数据库下载到本地(线上数据库连接参数在global.php文件里)也可以自己创建数据库,需要3个基础表,分别是pc_dic_lanvshen、pc_dic_toxic、po_toxic(在数据库文件夹下) 第二步:修改数据库配置,global.php文件的database配置,设置成连接自己本地的数据库;到此,启动网站,你可以愉快的赏图了! 1.想改按键怎么办?在js/index.js文件中,有具体的按键对应功能说明,想改按键,只需要修改对应的键值即可(keyCode键值问度娘吧) 2.搜过功能有木有?在index.php文件中,取消注释id为tb和tj的两行代码即可显示搜索功能 说明 我做了3个美图网站的数据爬取功能,分别对应3个文件:lanvshen.py,lanvshen_qtw.py,lanvshen_mtll.py(顶部有注释对应哪个网站) 第一步:修改数据库配置文件conf/mysql_db.py,修改数据库连接,改成自己本地的数据库; 第二步:找到自己想要爬取的页面,修改主函数信息即可,只需要修改4个参数,如下图所示 注:Python记得下载好对应的插件(requests,re,time,random,BeautifulSoup)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值