目录
目录
2. ASP, PHP, ASPX, JSP, JavaWeb 等脚本类型源码对应的安全问题
3. 社交/论坛/门户/第三方/博客等不同功能应用的代码机制对应漏洞
4. 开源,未开源问题,框架非框架问题,关于CMS识别问题及后续等
前言(简要介绍)
WEB源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。如:获取某ASP源码后可以以默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等。总之,源码的获取将为后期的安全测试提供了更多的思路。
-
关于WEB源码目录结构
-
关于WEB源码脚本类型
-
关于WEB源码应用分类
-
关于WEB源码其他说明
拿到源码必须可以从中获取目录结构便于了解架构;
不同脚本语言/框架,数据库存储不一样、涉及到的安全漏洞也不一样;
框架与非框架:若使用框架则针对框架找漏洞,若未使用则需要从代码一行一行找漏洞;
CMS(内容管理系统):可以从网上直接下载进行网站搭建的程序,如WordPress。
CMS识别:如何判定一个网站是如何搭建的?如果已知以CMS搭建,那么只需要下载这套源码作漏洞分析(开源);若没有源码或不知道具体CMS,则以常规渗透测试进行,按部就班手工探测(内部)。
源码获取三种方式:
1. 通过扫描工具,探测获取到网站源码&数据库的相关备份文件;
2. 通过CMS识别技术,获知具体CMS并下载源码;
3. 特定源码特定渠道,若是特定圈子特定行业(b圈、资金盘…)可能不会采取网上公开的CMS,只能以特定渠道获取。
实践
1. 数据库配置文件,后台目录,模版目录,数据库目录
以Bees CMS网站源码为例,从 index.php 判定出脚本类型为PHP。各目录含义:
admin:网站后台路径。存放后台的一些操作。
template:模版文件。用于使网站界面更美观。
data:data/config.php 数据库配置文件。记录该网站与数据库连接的文件。必须有该文件,网站才能和数据库进行通讯,才能访问、使用数据库的数据,实现连接、显示等操作。
如果能访问到数据库配置文件,即可获取网站和数据库的连接信息,包括连接数据库的账号密码。然后可以连接到对方数据库,从数据库里获得网站源码涉及到的管理员账号密码,通过管理员账号登陆网站后台……
2. ASP, PHP, ASPX, JSP, JavaWeb 等脚本类型源码对应的安全问题
详见《Web安全学习笔记:5.语言与框架》:5. 语言与框架 — Web安全学习笔记 1.0 文档
3. 社交/论坛/门户/第三方/博客等不同功能应用的代码机制对应漏洞
4. 开源,未开源问题,框架非框架问题,关于CMS识别问题及后续等
关于源码获取的相关途径:搜索(源码之家),咸鱼淘宝、第三方源码站(灰色,菜鸟源码),各种行业对应。
CMS识别:三种方式,人工识别(网页底部);工具识别;平台识别。
许多工具识别CMS的原理是扫描特有文件,即CMS指纹识别。参考:
GitHub - Lucifer1993/cmsprint: CMS和中间件指纹库
🔰雨苁ℒ🔰 - 暗网|黑客|极客|渗透测试|专注信息安全|数据泄露|隐私保护
通过比对md5值(每个文件都有一个md5值)获知CMS名称。
CMS识别平台:
总结:以应用分类和脚本类型,可以预估出可能存在的漏洞(框架类除外,着重于寻找框架自身的漏洞)。获取到源码后可进行本地安全测试(本地搭建然后扫描工具测试)或代码审计,也可以分析其目录工作原理(数据库备份,bak 文件等),未获取到的源码采用各种方法获取,因为缺乏源码时开展安全测试方法较少,得到源码后思路拓宽。
演示案例
1. ASP, PHP 等源码测试
以内部靶场《搬家公司:Asp注入漏洞》为例。网站地址后缀.asp 获知脚本语言。
网页底部友情链接:XYCMS。得知CMS。上网下载一套XYCMS源码。
xydata:数据库路径文件夹。
打开xydata,发现 xycms.mdb 文件。该文件是ASP脚本语言搭建的网站特有的数据库文件。可以直接以 Excel 打开。 (此处以 Excel 打开显示不全,使用Easy Access)
打开 xycms.mdb 发现 admin_user,及对应账号密码。密码作md5解密即可获取明文。
通过网站源码,获悉此文件在 /xydata/xycms.mdb,则回到网站访问127.0.0.1:8003/xydata/xycms.mdb 将此文件下载保存到本地。获取管理员账号密码。
通过网站源码,获悉后台登陆相关操作在 /system 或 /admin 目录下,访问网站,通过获取到的管理员账号登陆即可进入后台。
全程没有做漏洞扫描,只是针对网站源码的特性:没有修改CMS默认结构,包括数据库路径。
以内部靶场《MetInfo: 》为例。通过网站网址获悉脚本语言为 PHP,通过页面底部获悉CMS:MetInfo 5.1.4。
两个思路:
- 下载网站源码分析结构,做相应安全测试;
- 直接搜索这套CMS已存在的漏洞,进行安全测试/漏洞利用。
通过保存网站logo图片、命令查看文件md5值:
certutil -hashfile <filepath> MD5
与 CMS Prints.xlsx 无匹配,尽量下载表格中给的文件,使用其MD5值:
若访问网页无法下载,就保存连接用下载工具下载。
此处因为没有指定解析,默认按SHA1解析了。在命令末尾加上 MD5 即可。
2. 源码应用分类下的针对漏洞
以《Niushop开源商城》为例。针对电商应用业务逻辑的安全测试应着重考虑什么?
商品价格=1000,数量=1,点击立即购买抓取数据包,推断num=1控制商品数量。
修改num=-1发送数据包,确定订单,看到金额变为¥-1000.00元,应付金额变为¥0.00元。
这是典型的电商网站业务逻辑支付漏洞。
3. 获得简要目标→识别→获取的全流程
以《小迪安全》为例。打开xiaodi8.com,右键检查,网络。根据访问网站时数据包内容,查看是否有特殊文件/文件名。
复制特殊文件名直接去搜索引擎搜索。
获知CMS名称:Z-Blog。
以内部靶场《http://weipan.1016sangshen.cn/》为例。
故意在地址栏输入乱码访问,根据返回的报错页面可以查看到:ThinkPHP V5.0.5。
得知此网站使用框架ThinkPHP搭建。搜索ThinkPHP现有漏洞。
使用工具,证实ThinkPHP漏洞存在。
同样可以复制特殊的文件名去搜索引擎收集信息。
搜索出类似的操作界面,拥有同样的 ThinkPHP漏洞。
以相同程序源码搭建的网站可以认为拥有类似的漏洞,可以进行批量的漏洞检测。
大部份灰产/违法网站起步都会使用现成的、低廉的方式搭建网站,也方便随时关闭跑路。
程序源码的获取
参考搜索 微盘 的相关内容 - 菜鸟源码网 等第三方源码站。以及闲鱼。
或通过内部人马……
大多用于灰产/小众CMS的获取。
总结
今天重点讲了程序源码的重要性(目录结构、功能应用……)以及相关获取途径。
- 大众型获取:搜素。
- 小众型获取:正规、不正规的获取……
源码得到之后,源码的编写脚本将决定漏洞的一个情况。CMS识别技术……