基于ctfshow的信息收集思路与CTF实战
本文靶场来源于CTFshow,并不完全按照靶机的顺序排列,而是以测试操作为导向,按博主个人理解排列。
1. 前端源码
在CTF中,先看源代码是个好习惯,出题者经常会在源代码中以注释的形式提供一些提示
web 1——关注页面源代码
web 2——js前台拦截源代码查看
本题利用js拦截以下内容
window.oncontextmenu = function(){return false};
:禁用右键菜单,用户右键点击时不会弹出菜单。window.onselectstart = function(){return false};
:禁用文本选择,用户无法通过拖动鼠标选择页面上的文本。window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
:禁用F12键(通常用于打开开发者工具),用户按下F12时不会有任何反应。
当然,前端拦截等于没有拦截,有很多方法都可以直接绕过
法一
ctrl u 快捷键打开源代码
法二
url前加view-source:
查看源代码
法三
burp抓包看返回包
法四
使用浏览器开发工具打开
法五
ctrl s保存到本地查看
web 19——密钥补药放前端呐
源代码中给出账号密码了,提交了一下发现不行
猜测他的逻辑应该是,前端输入账号密码后,密码被加密然后通过数据包传给后端,此处我输入的密码是111,发的数据包如下,显然是加密了。于是源代码中的密码应该是被加密过的,因此把上面的密码粘到burp里就行
web 20——JS前端代码
有经验的师傅一看就知道本题是全前端实现的
找到这个判断,有一个Unicode编码的内容
在控制台直接输出内容,提示110.php
2. 数据包
当没有思路的时候,不妨尝试抓个包。常用抓包工具:浏览器的网络功能、burpsuite等
web 3——抓包是个好习惯
看了源代码什么都没有,所以只能抓个包看看
web 10——cookie泄露
抓包看一下,在cookie
看到flag
3. 目录扫描
目录扫描是信息收集必不可少的一步,不同的敏感文件决定了不同的后续渗透思路。
常用的目录扫描工具dirsearch
,基本语法为
python dirsearch.py -u http://xxxx/
3.1 robots.txt
robots.txt 是一个用于规定爬虫可以访问网站上的哪些网址的文本文件。需要注意的是,它只是提示合法用户不要爬取这些目录,但并不禁止对目录的访问。通过robots.txt
,攻击者可能得到一些敏感目录。
web 4——robot目录泄露
使用dirsearch扫描目录,发现存在robots.txt
文件,它禁止爬虫对/flagishere
的访问,访问/flagishere
,得到flag
3.2 源码文件泄露
源码文件泄露对于渗透测试具有十分重大的意义,这意味着测试者可以进行白盒审计甚至直接利用已知的nday漏洞直接对网站发起进攻。
web 5——phps文件泄露
本题考查的是phps文件泄露源码。phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。比较麻烦的是,博主试了几个目录扫描字典都不包含index.phps
,当然这也是合理的,因为真实生产环境下并极少使用index.phps
的需求,因此只能作为一个可能的思路,师傅们也可以把这些遇到的扫不出来的目录添加到字典中去,做好积累。
本题的解题直接访问index.phps
获得flag即可
web 6——zip备份文件泄露
dirsearch一扫,发现/www.zip
访问路径,下载了www.zip,打开里面有个fl000g.txt文件,点进去发现里面的flag是空。转换一下思路,www.zip
应当是网站的源码,因此这个路径在服务中可能也存在,访问/fl000g.txt
,得到flag。这里下载的源码实际上提示了目录,而非直接用下载下来的文件。
web 7——git泄露
Git泄露是指在使用Git版本控制系统时,由于配置不当或者操作失误,导致敏感信息(如密码、密钥、源代码等)被意外地上传到公开的代码仓库或者其他公开可访问的地方,从而被未授权的人获取到。
dirsearch一扫,发现.git
,本题考察了git泄露,但是本题很简单,直接访问./git
就给了flag
但是一般不会这么容易,补充一下之后的可能步骤
这里需要借助BugScanTeam的githack工具,给个地址,扫描命令如下,注意最后要加上./git
,推荐在kali linux上执行,然后就能在dist文件夹中看到抓下来的git了
python2 GitHack.py https://xxx/.git
在抓下来的网页文件夹中执行一些git命令来得到更多源码信息,如:
git log 查看之前都进行了什么操作
git diff xxxx xxxx 查看版本内容的不同之处
web 8——SVN泄露
造成SVN源代码漏洞的主要原因是管理员操作不规范,在发布代码时未使用导出
功能,而是直接复制代码文件夹到WEB服务器上,导致.svn
被暴露于外网环境
dirsearch一扫,发现/.svn
,访问该地址直接就能得到flag。
这题也是比较简单,后续利用建议参考ctfhub的svn泄露靶机。
3.4 数据库泄露
web 17——备份sql文件泄露
dirsearch一扫,找到备份sql文件,下载下来打开找到flag
web 20——access数据库泄露
用dirsearch
的递归扫描-r
,即当扫出一级目录后会再在一级目录后跑字典
python dirsearch.py -u http://xxxx/ -r
3.5 缓存文件泄露
在使用vim进行编辑时,会产生缓存文件,操作正常,则会删除缓存文件,如果意外退出,缓存文件保留下来,这是时可以通过缓存文件来得到原文件,以index.php
来说,第一次退出后,缓存文件名为 index.php.swp
,第二次退出后,缓存文件名为index.php.swo
,第三次退出后文件名为index.php.swn
web 9——vim缓存泄露
这题直接尝试访问index.php.swp
即可,但是同样有一个问题就是dirsearch扫不到这个文件,因为dirsearch不扫描临时文件以加快扫描速度,且缓存文件泄露的可能性也比较低,因此本题也仅作为可参考的思路。
3.6 探针泄露
PHP探针是用来探测空间、服务器运行状况和PHP信息的。探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息,对开发具有重大帮助,但是如果在网站上线后未将探针删除,就有可能导致信息泄露。
web 16——探针泄露
dirsearch扫一下没扫出来,不过有师傅说用御剑的字典可以
访问/tz.php
找到phpinfo
找到flag
3.7 第三方组件默认配置
在开发过程中,引入一些第三方组件实现某些功能是一种高效可行的思路,但是一些开源的第三方组件可能存在一些已知的nday,如果不对这些部分加以限制,将导致严重的安全事故
web 14——editor默认配置
dirsearch一扫,发现/editor
目录
根据提示小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录
,随便点一个上传文件的功能,可以直接访问文件空间
发现flag的路径,访问该路径获得flag
4. 社会工程学
社会工程学是一种通过操控和影响人类行为的技术,用于获取敏感信息、访问权限或进行其他欺诈行为。它通常依赖于对人类心理的理解,利用信任、恐惧或好奇心等情感因素来欺骗目标,以达到攻击者的目的。
web 12——敏感信息公布
在网站上发现了作者的联系方式,很多人都会使用姓名、电话、生日等作为自己的密码,为弱口令登陆提供了可能
扫描一下目录,发现了/admin
存在登录提示,用户名为admin
,密码为电话,成功登录
web 13——技术文档泄露
在现实情况中,我们可能通过某些方式获得某些内部人员的信任,从而诱骗对方在向我们请求帮助时发送技术文档,如果对方为删除其中的敏感信息,就为我们的渗透提供了可能
当然这题比较容易,文档直接放在了页面中,直接登陆获得flag
web 15——密码逻辑脆弱
页面中泄露了作者的qq邮箱
目录扫描找到/admin
登陆界面,输了一下qq邮箱,显示密码错误,看到下面有个忘记密码功能,试一下
要求输入所在地
看一眼他的QQ,是西安
5. 企业资产收集
在信息打点的初期,我们会对企业信息结构进行收集,比如说目标公司的主站域名、控股子公司的域名等等。为了获得更多域名与ip段,我们会通过查找dns的历史记录,可以得到详细的域名解析与ip地址信息,从而扩大收集的信息。关于这部分更详细的信息可以参考红队从资产收集到打点
web 11——DNS历史记录查询
本题模拟的实际上是域名的主动被动的收集,不过这题的域名已经失效了,就提供使用nslookup工具查询的命令,也可以使用一些在线网站。
nslookup -query=any flag.ctfshow.com