一、安装过程
1.1、下载地址:https://github.com/source-trace/bluecms
1.2、环境要求:phpstudy 2018 5.5.38+mysql5.5.53
,不要用7+这种高版本的php,因为这个cms是比较老的,它的部分函数与新版本php两者是不相匹配的,然后搭建好后访问bluecms-master/install/
,这个时候可能界面是空白,我们需要开启一下允许目录列表
然后去删除bluecms-master\install\compile
下的php文件。注意:到step=5
时又变成空白了,不过这个时候已经搭建好了,访问bluecms-master/index.php
就可以发现已经配置成功
二、黑盒渗透测试
第一部分人工测试
2.1、用户名可猜解(用户名暴力破解)
打开新用户注册页面注册一个用户发现存在用户页面显示用户名已存在;可尝试几个如 root、admin、test等发现不存在用户显示该用户名可以使用。(这里就可以使用intruder模块进行用户名得暴力破解)
2.2、任意用户注册
到注册用户这个页面,在BP上找到响应的地址,进行任意用户注册尝试,发现可行。
2.3、后台登录弱口令问题
位置:bluecms-master/admin/login.php?act=login使用账户admin 密码123456进行登录
2.4、反射型XSS漏洞
位置一:在发布新闻模块的新闻内容处
位置二:编辑个人资料时的邮箱位置
直接构建payload:<img src=1 οnerrοr=alert(1)>
发送成功后,刷新页面
第二部分漏扫工具尝试
2.5、渗透测试就是人工、漏扫工具的双重尝试和使用
下面使用漏洞扫描器扫描
通过对扫描器发现的漏洞逐一进行了尝试,都不能实现(估计是环境问题)
三、白盒代码审计
代码审计这块还是一个弱项的,因为毕竟咱们不是开发做一些逻辑,功能类代码审计还是需要慢慢学习的
使用工具seay源码审计系统:(可根据自己审计喜好吧,先扫在人工验证或通读代码)
3.1、sql注入漏洞审计
sql注入1:ad_js.php?ad_id
通过审计工具我们可以看到问题所处的代码块;查看代码我们发现在ad_js.php下的ad这个参数只进行了非空判断,请求方式都走了common.inc.php,我们查看一下发现进行了deep_addslashes过滤(在'或“上加入转义\),请求尝试在前台通过对ad进行传参尝试一下:
payload:ad_js.php?ad_id=sdfd
我们看到这个点就存在一个sql注入:可以使用联合注入,爆个库名:union select 1,2,3,4,5,6,7逐步进行当8时不报错,说明是有7行,,尝试爆出了库名(不回显与页面需检查或者直接通过BP响应包查看也可直接使用sqlmap直接跑了)
sql注入2:ann.php?cid(失败)
通过查看cid的传值我们看到对cid进行了intval函数的操作,搜索一下这个函数的定义:
intval函数的作用是将变量转换为整数类型。它可以将字符串、浮点数、布尔值和其他类型的变量转换为整数。如果变量无法转换为整数,则返回 0。如果变量是一个字符串,它将尝试将字符串解析为整数。如果变量是一个浮点数,它将截断小数部分并返回整数部分。如果变量是一个布尔值,它将返回 1(true)或 0(false)。如果变量是一个数组或对象,它将返回 0。如果变量是一个 null 值,它将返回 0
总体意思就是将cid这个参数的值转换为整数,这对于我们采用的sql注入尝试就无法使用。
sql注入3:common.php?id(失败)
这个失败的原因和上一个是一样的。
sql注入4:user.php?user_id&id(失败)
这两个参数user_id使用的包含这个common_inc_php这个里面对参数使用了deep_addls对单引号进行了过滤,,同样使用了intval这个函数进行了处理无法进行尝试。
3.2、XSS漏洞
一般存在sql注入漏洞的地方就存在XSS漏洞,我们看到的存在sql注入漏洞的地方尝试使用XSSpayload进行尝试ad_js.php?ad_id=1 <script>alert(/xss/)</script>
XSS漏洞2:在我们人工进行测试时发现在发表新闻那有一处我们进行一下代码审计查看一下的:
这里我们看到对新闻标题title、color、author、source进行了html实体编码但查看content进行了filter_data操作而我们查看一下,这个过滤方法意思就是将传入的str匹配存在<script><frame><meta><link>就替换为空,所以我们尝试的<img src=1 οnerrοr=alert(1)>payload 成功弹窗
XSS漏洞3:网上还有一处XSS漏洞处于留言板这块,很奇怪我这边发布什么东西都说内容是空的
我们审一下代码转到guest_book.php;整体功能就是当act传入list、sent、del就进行三个操作,留言列表、发送留言、删除留言等,具体我们看发送留言这块
我们观察到content使用了html实体编码导致不能进行xss但注意到一个page_id
之后我们就可以构造value双引号闭合的XSS-payload:\"><script>alert(1)</script>
报错,没有出现弹窗
3.3、文件包含 (环境利用成功可以进行getshell方式可通过文件包含木马图片的)
这个漏洞看还是网上的解析,我这个环境就是出现没有选择支付方式,很奇怪,我们看seay审计的代码块;这里我们发现
可以尝试进行包含文件进行传参
这边我的环境应该是有问题,可加入大家尝试成功的话结合我们的文件上传(上传点只支持白名单进行webshell的利用)
3.4、任意文件删除
在php中任意删除文件常用于unlink
函数,这个函数是删除文件的,可能存在任意文件删除漏洞,这里的话我门用seay代码审计工具来进行查看。
位置1:user.php->act=edit_user_info ;我们判断处当变量act=edit_user_info给user_id和face_pic3一个文件即可尝试是否删除(这里我们文件夹内以一个test.txt文件尝试)删除成功
3.5、SSRF漏洞
这里我们可以看见,针对pic1进行了文件的识别,但开发是使用!=(正确的就是!==)来进行判断这里我们那就可以利用php的弱类型特点进行绕过,在通过对其进行引用处理,我们可尝试SSRF;这里需要注意,当进行img_upload时会对face_pic2进行判断是否建立,只有当pic2没有任何内容时,才可加载,,当我们发送成功后回到页面进行重新加载就可以触发,SSRF了
四、总结文章来源:https://www.toymoban.com/news/detail-767609.html
针对一个渗透项目通常是进行的黑盒测试,不知道后台代码情况,但在HW期间想要拿到高质量的漏洞(0day)往往都是看靶标搭建情况,如果可以找到源码或者开源的CMS就可以进行代码审计找到入口。通过这个cms基本上了解了,代码审计的思路;快速审计往往需要通过定位危险函数(select upload where unlink)来看上下文引用情况,判断路由和传参来进行利用。常规审计需要配合审计工具逐一排查来确定是否存在漏洞。文章来源地址https://www.toymoban.com/news/detail-767609.html
到了这里,关于BlueCms开源环境渗透学习(附代码审计学习)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!