记一次代码审计的APP渗透

admin 2021年4月13日21:32:19评论180 views字数 2230阅读7分26秒阅读模式

记一次代码审计的APP渗透
原创稿件征集

邮箱:[email protected]
QQ:3200599554
黑客与极客相关,互联网安全领域里
的热点话题
漏洞、技术相关的调查或分析
稿件通过并发布还能收获
200-800元不等的稿酬

好久没更新了,刚好遇到,就记录一下吧
注:本文的测试经过授权
记一次代码审计的APP渗透
0x01 信息收集
记一次代码审计的APP渗透
第一步肯定先抓包找到域名,访问一下。
记一次代码审计的APP渗透
上面这个图是我本地的,远程的访问比较慢就不截图了。没有做UA头检测等,它本身就是移动端和PC端都可以访问的一种cms。
记一次代码审计的APP渗透


看到开放的端口,21尝试爆破和匿名登陆都没有成功。而8888以为是sun-answerbook,其实是BT。
因为服务器性能的原因以及还有其他人同时在看,因此没有进行大规模的扫描探测。后面小线程扫描发现了源代码,后面再说。

0x02 黑盒测试

记一次代码审计的APP渗透

上传点,经过测试白名单验证,没办法利用。总计有六七个上传点吧,有的是直接不作为文件上传,反正都没什么进展。
记一次代码审计的APP渗透
有个视频导入功能,测试了一下,也没什么用。
21爆破不成,3389爆破也不成,所以下面直接来审代码看能不能有突破。


0x03 白盒审计
0x3.1 本地环境搭建
emmm,是真的麻烦,我第一次碰到这么难搭的cms。是个收费的cms,源码来看应该是破解版,需要输入购买码等,安装完以后需要配置nginx伪静态规则。
那具体的路由和伪静态规则我这里就不多说了,看看代码加上熟悉一下网站基本就能心里有数。

0x3.2 越权访问后台


/admin-panel/autoload.php
记一次代码审计的APP渗透
后台是通过autoload.php来进行模块加载,呈现给用户,但是这里只是可以看,具体的后端操作还是在另外的php中。可以看到这里并没有进行身份验证,因此存在越权。

记一次代码审计的APP渗透

会存在上图这种情况,发现并没有引进常用函数文件,估计是通过其他文件来引用。
后面看到/ajax.php(ajax目录存放的就是后台的后端php)
记一次代码审计的APP渗透
因此payload如下:
http://www.my.com/ajax.php?type=../admin-panel/autoload&page=manage-users
可以通过它,它确实引入了函数文件,但是需要绕过:
记一次代码审计的APP渗透
简单来说就是不能让$is_error为1,那么就要GET传入hash并且通过CheckMainSession的检查并返回true(上面的print_r()是我调试自己加上的)
Secure()就是用来过滤的,做字符串安全性检查。跟进CheckMainSession()发现,要想返回true就需要我们传入的$hash_id和$_SESSION[‘main_hash_id’]是一样的。所以看想办法能不能绕过。
跟进/assets/includes/function_gernel.php
记一次代码审计的APP渗透
这个main_hash_id生成规则比较简单,1111-9999随机数的sha1哈希值,一开始想用py写个爆破的,但是发现Python请求的main_hash_id和浏览器不一样,那直接burpsuite跑一下就行了。
记一次代码审计的APP渗透
response打印了这个hash是因为我本地环境,调试时留下的。
后面发现不用爆破也可以,网站会隔段时间就请求notifications,会有hash:
记一次代码审计的APP渗透
那我们最终payload就是:
http://www.my.com/ajax.php?hash=90d6ff0d935b83169155f13651052247da58e416&type=../admin-panel/autoload&page=manage-users
记一次代码审计的APP渗透
但是只能看到当前设置,因为后端php其实都是做了身份验证的。首先上图可以看到所有用户名的密码,其次有ftp设置,访问s3模板可以看到(如果管理员在网站配置了ftp)。
记一次代码审计的APP渗透

0x3.3 安装未验证重装

/install/index.php
记一次代码审计的APP渗透
并没有验证是否安装。并且就算是我们传入的sql相关信息连接不上数据库,仍然会更新config.php,因此这里有两种利用思路。
第一种,本地服务器mysql开启外连,重新安装cms获得后台账号密码。
第二种,就算不开启本地也可以随便填sql,然后闭合字符串getshell。大概看了一下,url参数有过滤器检测是否是url,但是purcharse_code因为是破解版可以随便填。本地效果:
记一次代码审计的APP渗透

本地能成,那去目标试一下,访问/install确实可以,但是点击next没有反应,因此效仿本地访问:
http://www.my.com/install/?page=installation
记一次代码审计的APP渗透
闭合字符串不用我多说了吧,直接getshell。
记一次代码审计的APP渗透

0x3.3 绕过补丁再次RCE

记一次代码审计的APP渗透
服务器做了修补,判断了$ServerErrors[]不为空则不会写入。那我们需要满足一下条件:连接上数据库,url符合、规则(check_()是总返回success的)。
要么拿到远程的数据库账号密码要么本地开外链。
记一次代码审计的APP渗透
如上可getshell。
记一次代码审计的APP渗透
发现了原本config.php的备份,给他再恢复过去就可以了。


CMS安装过程漏洞的代码审计

https://www.hetianlab.com/expc.do?ec=ECIDf65e-07ff-4a9f-a209-1884bf78f4e4&pk_campaign=weixin-wemedia#stu

通过本节的学习,从代码审计角度了解CMS安装过程中漏洞产生的原因。


记一次代码审计的APP渗透

限时 500 名
免费报名(你不容错过的直播间抽奖)
👇👇👇
记一次代码审计的APP渗透

本文始发于微信公众号(合天网安实验室):记一次代码审计的APP渗透

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月13日21:32:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次代码审计的APP渗透http://cn-sec.com/archives/333650.html

发表评论

匿名网友 填写信息