一如既往的学习,一如既往的整理,一如既往的分享
一、前言
web源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。
比如:获取ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路
二、知识点
2.1 关于WEB源码目录结构
注:这里以“BEESCMS企业网站管理系统”的源码为例
• admin----------------------------------网站后台目录
• data------------------------------------数据库相关目录
• install----------------------------------安装目录
• member-------------------------------会员目录
• template------------------------------模板目录(和网站建立相关的整体架构)
• data【confing.php】--------------数据库配置文件,网站和数据库的通讯信息,连接账号密码,可以去连接对方数据库,从数据库去得到这个网站的源码里面涉及到的管理员的账号密码。
2.2 关于WEB源码脚本类型
ASP,PHP,ASPX,JSP,JAVAWEB等脚本类型源码安全问题
比如:上面【BEESCMS企业网站管理系统】就是一个php脚本类型源码
下图中【XYCMS企业建站系统】是asp脚本类型源码
2.3 关于WEB源码应用分类
注:不同网站的源码对应不同的漏洞类型
• 门户网站------------------------综合类漏洞
• 电商------------------------------业务逻辑漏洞
• 论坛------------------------------XSS漏洞
• 博客------------------------------漏洞较少
• 第三方---------------------------根据功能决定
总结:拿到对方的源码或者判断这个网站的应用类型之后应该侧重在哪些漏洞上做文章
2.4 关于WEB源码其他说明
2.4.1 框架非框架问题
如果一个网站采用的是框架开发的话,那么渗透测试就是要寻找框架的漏洞,如果是非框架的话寻找的漏洞针对的是代码写出来的漏洞(也就是代码审计)
比如:thinkphp框架
2.4.2 关于CMS识别问题
• CMS是Content Management System的缩写,意为"内容管理系统"。 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。
• 内容管理系统组成要素:
- 文档模板
- 脚本语言或标记语言
- 与数据库集成
• CMS识别: 判定一个网站是用什么程序搭建的,网上有很多相关的源码来提供下载,我们称之为开源程序。
• CMS识别两种方法:
(1)在线工具:
http://whatweb.bugscaner.com/look/ ,https://www.yunsee.cn/
(2)cmd命令:
>cd 目录(这里我将其存在桌面)
>certutil -hashfile 文件名称.文件类型 MD5
基于web网站独有的favicon.ico、css、logo.ico、js等文件的md5 比对网站类型,通过收集CMS公开代码中的独有文件,这些文件一般轻易不会更改,如果一样,则认为该系统匹配。这种识别速度最快,但可能不准确,因为这些独有文件可能在部署到真实系统中会进行更改,那么就会造成很大的误差。
2.4.3 开源、内部(未开源)问题
开源:直接找漏洞或审计(可以通过CMS识别出来的)
内部:常规的渗透测试,扫描工具、手工去探测(找不到源码或者不知道对方的CMS名称)
2.4.4 源码获取
• 扫描工具探测备份文件
• CMS识别技术获取CMS名称然后从网上下载
• 百度直接搜索:源码
• 咸鱼上会有卖
• 第三方源码站:比如菜鸟源码
• 各种行业对应
2.5 总结
关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架例外),在获取源码后可进行本地安全测试(本地安全测试(手工使用工具去扫描,不需要接触代码))或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获取
三、演示案例
3.1 ASP,PHP等源码下安全测试
3.1.1 平台识别-某CMS无漏洞-默认数据库
• 这里以【XYCMS企业建站系统】为例,打开此网站,发现底部关键词XYCMS
• 百度搜索XYCMS,进行源码下载
• 下载之后,发现有一个数据库路径,打开
• 找到asp的特有数据库文件.mdb
• 使用mdb打开工具(Easy Access)进行打开,获得账户名密码,进行解密
根据下载的源码路径,尝试去访问网站目录http://ip:8003/xydata/xycms.mdb,下载到mdb文件
• 访问网站后台,输入刚刚获取到的用户名密码
3.1.2 平台识别-某CMS有漏洞-漏洞利用
• 这里以【MetInfo】为例,打开此网站,发现脚本类型是php
底部还有对应的版本:MetInfo 5.14
• 百度搜索:MetInfo 5.14漏洞,如果网上没有漏洞信息,也可以下载源码再做漏洞分析
3.1.2 源码应用分类下的针对漏洞
这里以【niushop】电商类网站为例,关注漏洞点–业务逻辑漏洞
• burp抓包,将购买产品数量改成-1
• 结果应付金额为0
3.1.3 简要目标从识别到源码获取
(1)演示小迪博客-手工发现CMS-漏洞搜索或下载分析
百度搜索
(2)内部搭建靶场 http://weipan.1016sangshen.cn
故意输入错误的url,会发现报错
百度搜索:thinkphp,是一个框架,所以利用框架漏洞。用工具进行检测
(3)人工爆框架-搜索特定url-获取其他相符站点-漏洞测试
针对上面那个网站,抓包看看,找到一个特殊的路径
搜索试试
发现一个网站
进行访问
用工具进行检测
发现也存在框架漏洞