4、基础入门-WEB源码拓展
前言
WEB 源码在安全测试中是非常重要的信息来源,可以用来代码审 计漏洞也可以用来做信息突破口,其中 WEB 源码有很多技术需要简明分析。 比如:获取某 ASP 源码后可以采用默认数据库下载为突破,获取某其他脚本 源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为 后期的安全测试提供了更多的思路。
思维导图
解释型、编译型
类型 | 编译型语言 | 解释型语言 |
运行流程 | 程序--(编译)--OS--执行 | 程序--(编译)--中间语言--(解释器)--OS--执行 |
主要代表 | C C++ | Java C# Python JavaScript |
设计思路 | 直接针对操作系统编译,执行速度更快,例如.exe | 程序不与操作系统绑定,便于在不同操作系统上运行 |
框架网站渗透思路:框架开发寻找框架的漏洞,非框架开发寻找代码的漏洞
应用类:网站不同功能决定漏洞
CMS内容管理系统
是为了方便发布网络内容而存在的一体化Web管理系统。CMS相当于开源程序,能找到CMS可以利用别人发现的漏洞进行测试。
CMS和框架的区别
CMS内容管理系统,相当于开源程序。框架是网站开发工具,相当于一个模块。
很久很久以前,人们做网站很多用静态HTML+CSS+Javascript直接写,也就是静态页面。但是如果有一组页面要维护,对于静态页面来说是一件很麻烦的事,比如我有一个人的Email地址变更了,这一组页面上所有出现的地方都要改,于是就有了适合Web的动态语言,如
ASP,PHP,JAVA,.NET等等,它们把数据保存在数据库中,可以动态的引用,这样就能生产出较大规模的网站了,当时诞生了一批大型网站,叫做门户网站,比如新浪,网易,搜狐,他们的内容很丰富,很多,他们有一大批编辑来搜集整理网站的文章,但是总不可能让
程序员帮他们把内容上传吧,于是CMS诞生了,通常CMS有一个后台,编辑通过登录后台进入一个可视化的操作界面,把文章录入进去,然后通过上一级的总编审核后发布到网站中
常见CMS系统
php类cms系统:dedecms、帝国cms、php168、phpcms、cmstop、discuz、phpwind等
asp类cms系统:zblog、KingCMS等
.net类cms系统:EoyooCMS等
源码获取途径
搜索引擎搜索,淘宝闲鱼等购买,第三方源码站下载(菜鸟源码,站长之家)等
总结
关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类例外),在获取源码后可进行本地安全测试或代码审计,也可以分析其目录工作原理(数据库备份,bak 文件等),未获取到的源码采用各种方法想办法获取!
案例-ASP案例-平台识别,某 CMS无漏洞,默认数据库
根据网站内容发现XYCMS相关链接,通过浏览器搜索下载XYCMS源码,查找源码中后台数据库中的账号密码,若使用同一套源码,且建站时未更改密码,则可以登录网站后台
案例-PHP案例-平台识别,某 CMS有漏洞,漏洞利用
在网站上发现CMS名称版本,在浏览器上搜索CMS相应版本漏洞,网上没有漏洞则需要下载源码进行漏洞分析
CMS识别
工具识别
工具需要长期维护,更新。大部分CMS识别工具的原理为扫描特有文件
平台识别
- BugScaner:http://whatweb.bugscaner.com/look/
- 云悉指纹:http://www.yunsee.cn/finger.html
- WhatWeb:https://whatweb.net/
手工CMS识别
简单:通过网站上的一些CMS的关键字,直接浏览器搜索
进阶:CMS识别字典,通过比对特有文件和文件的MD5值判断CMS和版本
CMS识别字典:http://www.xiaodi8.com/?id=182
案例-源码应用分类下的针对漏洞-电商网站逻辑漏洞
niushop 电商类关注漏洞点-业务逻辑
通过购买商品抓包,更改数据包相关字段,更改数量为负数,实现零元购。
案例-简要目标从识别到源码获取
本地演示个人博客-手工发现其 CMS-漏洞搜索或下载分析
查看请求数据包,判断有哪些特有的文件。通过浏览器搜索相关文件路径。
人工爆框架-搜索特定url-获取其他相符站点-漏洞测试
漏洞利用,下载相关框架漏洞工具
借助特定行业源码或咸鱼进行搜索获取-本地搭建-代码审计或其他
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通