优雅地寻找网站源码(一)

news/2024/5/21 16:45:16/文章来源:https://blog.csdn.net/jklbnm12/article/details/119647465

优雅地寻找网站源码(一)

0x0 前言

渗透过程中如果能获取到网站的源代码,那么无疑开启了上帝视角。虽然之前出现过不少通过搜索引擎查找同类网站,然后批量扫备份的思路,但是却没人分享其具体过程,这里笔者便整理了自己开发分布式扫描器的目录扫描模块的一些尝试的思路,同时分享一些寻找源码的其他手段,希望能给读者带来一些新的体验。

0x1 搜索技巧

0x1.1 代码托管平台

国外的github和国内的gitee都是第三方代码托管平台,通过一些搜索技巧,我们可以从中发现很多泄露的敏感信息,其中就包括一些程序的源代码。

这里笔者对码云平时用的不多,故对此只是简单提提,下面,则重点介绍github的用法:

学习这个用法就我个人而言最大的好处是,遇到返回大量数据的时候,可以根据一些特点来过滤掉一些垃圾数据。

Github的搜索页面:https://github.com/search

(1) quick cheat sheet

基础查询:

搜索仓库:

搜索代码:

搜索用户:

(2)个人查询Dork

filename:config.php dbpasswdfilename:.bashrc passwordshodan\_api\_key language:pythonpath:sites datab ases password"baidu.com" ssh language:yamlfilename:file.php admin in:pathorg:companyname "AWS\_ACCESS\_KEY_ID:"

(3)针对某个关键词查询

用双引号括起来,如"qq.com"

(4)可以使用GitDorker来自定义dork,实现自动化查询。

git clone https://github.com/obheda12/GitDorker.gitcd GitDorkerdocker build -t gitdorker .docker run -it gitdorkerdocker run -it -v $(pwd)/tf:/tf gitdorker -tf tf/TOKENSFILE -q tesla.com -d dorks/DORKFILE -o tesladocker run -it -v $(pwd)/tf:/tf xshuden/gitdorker -tf tf/TOKENSFILE -q tesla.com -d dorks/DORKFILE -o tesla

免安装使用:

python3 GitDorker.py -tf ./TF/TOKENSFILE -q ximalaya.com -d ./Dorks/alldorksv3 -o x mly

image-20210731205211026

参考:

https://github.com/techgaun/github-dorks

https://infosecwriteups.com/github-dork-553b7b84bcf4

0x1.2 搜索引擎

Google:

XX源码XX完整包xx安装程序xx备份xx代码xx开源xx源程序xx框架xx ext:rar | ext:tar.gz |ext:zip

image-20210731212133521

0x1.3 网盘搜索

https://www.feifeipan.com/

https://www.dalipan.com/

https://www.chaonengsou.com/ 这个网站做了个集合,比较全。

image-20210731213021461

0x2 曲线思路

如果如0x1所述,依然没办法找到源码,说明目标系统是那种小众或者商业类型的,导致没有在互联网流传广泛,故没办法搜索到。

这个时候,我们便可以采用曲线思路,通过寻找本网站根目录下的备份文件,源代码包进行下载,如果仍然没有找到,则去寻找同套系统的其他网站,扫描这些网站目录下的备份文件和源代码包,从而获取到系统源码。

我们不能做思想上的巨人,行动上的矮子,那么如何高效地完成这一过程呢? 可以划分为下面几个步骤来完成。

0x2.1 提取特征

关于特征,重点收集主页特征,即直接访问域名显示的页面,因为主页是最容易被搜索引擎爬虫爬到的,次之,则是收集主页可访问到的其他标志性页面特征。

(1) logo 特征

请求favicon.ico获取hash

image-20210801001330490

(2) 关键词特征

网站title、网站版权信息、j avas cript关键字信息、html源码结构信息、http返回头特征。

0x2.2 资产收集

关于资产收集,除了调度自己写的脚本集成fofa,shodan,zoomeye三个平台之外,我还很喜欢使用一个工具,因为它的功能比较丰富且运行也较为稳定——-fofaviewer。

下载地址:https://github.com/wgpsec/fofa_viewer

image-20210801011008850

0x2.3 简单fuzz

收集到资产之后,前期,我喜欢用httpx进行一些路径的简单探测

cat targets.xt|deduplicate|httpx -path '/wwwroot.zip' -status-code

image-20210801091211002

相当于做一层简单的过滤,来帮助nuclei减少请求的量。

0x2.4 编写nuclei插件

阅读和学习编写插件的官方文档:Guide可知:

编写插件第一步: 插件信息

新建back-up-files.yaml文件,写入如下内容

参考:https://nuclei.projectdiscovery.io/templating-guide/#template-detail 可知

id是必须的,不能包含空格,一般与文件名相同

info区域是动态的,除了name, author, des cription, severity and tags,也可以添加其他key:value,tags是支持用于nuclei检索调用的,可参照同类插件来写。

id: back-up-filesinfo:  name: Find Resource Code Of Target Template  author: xq17  severity: medium  tags: exposure,backup

编写插件的第二步:发送请求

参考:https://nuclei.projectdiscovery.io/templating-guide/protocols/http/ 可知

1.HTTP Requests start with a request block which specifies the start of the requests for the template.

2.Request method can be GET, POST, PUT, DELETE, etc depending on the needs.

3.Redirection conditions can be specified per each template. By default, redirects are not followed. However, if desired, they can be enabled with redirects: true in request d etails.

4.The next part of the requests is the path of the request path. Dynamic variables can be placed in the path to modify its behavior on runtime.

Variables start with {{ and end with }} and are case-sensitive.

{{b aseURL}} - This will replace on runtime in the request by the original URL as specified in the target file.

{{Hostname}} - Hostname variable is replaced by the hostname of the target on runtime.

5.Headers can also be specified to be sent along with the requests. Headers are placed in form of key/value pairs. An example header configuration looks like this:

# headers contains the headers for the requestheaders: # Custom user-agent header User-Agent: Some-Random-User-Agent # Custom request origin Origin: https://google.com

6.Body specifies a body to be sent along with the request. (发送POST包需要用到)

7.To maintain cookie b ased browser like session between multiple requests, you can simply use cookie-reuse: true in your template, Useful in cases where you want to maintain session between series of request to complete the exploit chain and to perform authenticated scans.(Session重用,作用是串联攻击链,实现登录验证再攻击)

# cookie-reuse accepts boolean input and false as defaultcookie-reuse: true

8.Request condition allows to check for condition between multiple requests for writing complex checks and exploits involving multiple HTTP request to complete the exploit chain.

with DSL matcher, it can be utilized by adding req-condition: true and numbers as suffix with respective attributes, status_code_1, status_code_3, andbody_2 for example.(编写复杂攻击链)

  req-condition: true   matchers:     - type: dsl       dsl:         - "status\_code\_1 == 404 && status\_code\_2 == 200 && contains((body\_2), 'secret\_string')"

…还有许多高级用法比如支持raw http,race之类的,但是这里用不上,文档这个东西,够用就行。

requests:  - method: GET    path:    - "{{b aseURL}}/wwwroot.zip"    - "{{b aseURL}}/www.zip"

编写插件的第三步: 判断返回内容

参考:https://nuclei.projectdiscovery.io/templating-guide/operators/matchers/ 知

Multiple matchers can be specified in a request. There are basically 6 types of matchers:

status(状态码) size(返回包大小) word(字符串) regex(正则匹配) binary(二进制文件)

还有一个dsl,高度自定义验证返回内容,可以对返回内容做一些操作(这里暂时用不上)

image-20210801101714061

可用的辅助函数: https://nuclei.projectdiscovery.io/templating-guide/helper-functions/,

对于words and regexes,可以对返回内容的多个匹配条件用ANDOR进行组合。

Multiple words and regexes can be specified in a single matcher and can be configured with different conditions like AND and OR

可以对返回的包,选定match的区域,默认是body,也支持选择header等任意地方。

Multiple parts of the response can also be matched for the request, default matched part is body if not defined.

支持对条件取反,这个就是反证法的妙处了。

All types of matchers also support negative conditions, mostly useful when you look for a match with an exclusions. This can be used by adding negative: true in the matchers block.

支持使用多个matchers

Multiple matchers can be used in a single template to fingerprint multiple conditions with a single request.

支持matchers-condition

While using multiple matchers the default condition is to follow OR operation in between all the matchers, AND operation can be used to make sure return the result if all matchers returns true.

结合上面文档的介绍,可以写入如下的判断。

    matchers-condition: and    matchers:      - type: binary        binary:          - "504B0304"  # zip        part: body      - type: dsl        dsl:          - "len(body)>0"      - type: status        status:          - 200

编写插件的第四步: 链接起各个部分

上面的代码内容按顺序链接起来,则是如下:

id: back-up-filesinfo:  name: Find Resource Code Of Target Template  author: xq17  severity: medium  tags: exposure,backuprequests:  - method: GET    path:    - "{{b aseURL}}/wwwroot.zip"    - "{{b aseURL}}/www.zip"    matchers-condition: and    matchers:      - type: binary        binary:          - "504B0304"  # zip        part: body      - type: dsl        dsl:          - "len(body)>0"      - type: status        status:          - 200

0x2.5 测试插件

本地起一个靶机,进行调试:

python3 -m http.server 9091

image-20210801113949221

然后调试:

echo 'http://127.0.0.1:9091' | nuclei -t back-up-files.yaml -debug -timeout 2 -stats -proxy-url http://127.0.0.1:8080/

image-20210801115848508

发包过程:

image-20210801120003129

可以看到nuclei应用上插件之后,可以快速Fuzz出网站备份文件。

0x3 总结

第一篇主要是介绍了一些思路和nuclei插件编写简单思路,用于帮助新手快速入门,第二篇则是关于如何增强该插件,增加扫描目录列表,更精确的判断返回值等内容(这里建议读者,可以先自行阅读下nuclei-template的文档,这样学习效果更佳!),第三篇则是运用前两篇的知识点和增强型插件,来完成一次真实的寻找网站源码之旅。【资料】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_721748.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站前端联系我们之点击自动打开qq/Tim对话窗口

自动跳出QQ/TIM对话框 没有完美的网站,需要用户的反馈来完善我们的页面。那么,联系我们必不可少。在即时通讯软件中,QQ/Tim用的最多。前几天发现了自动调用QQ/Tim代码,经测试发现可以用,很方便,分享给大家。 Contact.…

JSP-购物类网站(购物车功能,翻页功能,文件下载功能,文末有代码及数据库备份)

目录 网站功能框架 网站架构图 网站项目树 网站首页 注册登录页面 用户个人中心页面 商家个人中心页面 搜索结果页面 商品详细信息页面 手机端页面(部署后) 之前在校内参加过网站设计大赛,贡献全部代码,供jsp小白学习。 这是一个购物类网站,后…

网站安全检测:推荐8款免费的 Web 安全测试工具

随着 Web 应用越来越广泛,Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web 服务程序的 SQL 注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,…

利用wvs扫描网站发现一个页面,暴露了错误信息

今晚给一个网站做了一次入侵检测,首先进行信息刺探后,发现这个站有注入策略,所有页面都没法通过常规的注入,利用wvs扫描网站发现一个页面。 这个页面直接暴露出了错误信息,看了一下url没有参数却爆出了错误&#xff0c…

网站攻击到提权的全部过程

准备工作 靶机(被攻击方):win7系统 入侵者(攻击方):win10系统、kali系统 首先启动win7系统,搭建一个常见的校园网站,然后映射到局域网,使得我们能正常访问。 从网站拿到…

网站控制工具:冰蝎3.0使用体验

这篇文章比较基础,主要面向新手,技术含量较低主要为操作流程。 0x01. 冰蝎是什么 利用动态二进制加密实现新型一句话木马的客户端 , 相对于菜刀和蚁剑他的数据是加密传输的 1.1 下载 github地址: https://github.com/rebeyond/Behinder/releases 下载后…

【网络安全】记一次网站站点渗透

前言 遇到一个站,后端是Node.js写的,对于这种类型的站点,一般比较难getshell,但也实现了最终的目标,拿到后台权限 信息搜集 先进行常规的信息搜集,子域名扫描、端口扫描、目录扫描等 这个站后端脚本语…

web安全渗透之钓鱼网站提权

本实验实现1:要生成一个钓鱼网址链接,诱导用户点击,实验过程是让win7去点击这个钓鱼网站链接,则会自动打开一个文件共享服务器的文件夹,在这个文件夹里面会有两个文件,当用户分别点击执行后,则会…

某cms网站渗透的过程

1.通过fofa查询出该网站的后台,进去发现很像某cms,利用御剑的cms识别工具识别出对方是phpcms的站。 2.通过百度查询得出:该phpcms站点可能存在文件上传,敏感信息泄露,sql报错注入。我只验证出来了sql报错注入。 3.把这…

网站渗透这块水太深,你把握不住!但你叔我能(十年经验分享)

很多朋友问我,想搞网络安全,编程重要吗,选什么语言呢? 国内其实正经开设网络安全专业的学校很少,大部分同学是来自计算机科学、网络工程、软件工程专业的,甚至很多非计算机专业自学的。因此不像这三个专业…

一个HTTP请求,把网站打裂开了!

大家好,我是周杰伦,今天给大家看一段神奇的代码。 利用这几行神奇的代码,居然能把网站打崩溃,这是怎么一回事呢? 就是下面这个函数,根据传进来的开始和结束位置,读取文件数据: ch…

学完渗透赌博网站,从零基础到实战的Web渗透学习路线+手册

前言 大家好 我是周杰伦! 大家都知道IT是一个非常复杂和混沌的领域,充斥着各种已经半死不活的过时技术和数量更多的新系统、新软件和新协议。保护现在的企业网络不能仅仅依靠补丁管理、防火墙和用户培训,而更需要周期性地对网络中的安全防御…

成功端掉了一个色情网站,教科书级的社工教学。

0x00 事件起因 在知乎上,有一位叫凌云的大神讲述了自己端掉色情网站还把建站者揪出来教育了一顿,剧情实在精彩,主题非常正能量,强烈推荐给大家阅读。 以下是正文内容。 “我顺着一个色情网站域名顺藤摸瓜查到了背后操控者的真实…

ajax网站拖拽效果

转自:http://hi.baidu.com/yan5201314/blog/item/b69e543d01550bee3c6d9743.html 2006年11月18日 星期六 上午 00:23近日在SyosyumesBlog上的看到GOOGLE的个性化主页拖搁功能的实现方法可以借鉴,他的方法是用Jscript实现,不包含记忆功能&…

程序员必备的16个实用的网站

3个月以前在知乎上回答一个问题【有哪些能集实用,装逼于一身的冷门网站?】得到很多小伙伴的喜爱,一直到现在都还陆陆续续收到大家的赞,谢谢大家。 于是,我就想,现在有了专栏,干脆把这个回答写成…

大型网站技术架构总结一二

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分、数据拆分、应用解耦)**,向分布式系统转…

小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱。经常在技术网站、文档中出现的“四层负载均衡”、“七层负载均衡”字眼有什么含义?有什么区别?对客户网络有哪些不同的优化? 在大型的网站服务器集群中,负载均衡技术是必不可少的。使用…

大型网站架构之架构演变

公众号 | Justin谈开发作者 | Justin处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构…

大型网站架构之架构模式

参考书籍 | 《大型网站技术架构》 | 李智慧整理 | 公众号 | Justin谈开发上节讲了《大型网站架构之架构演变》,今天讲下架构的模式,什么是模式呢?每一个模式描述了一个再我们周围不断重复发生的问题及问题解决方案的核心,这样你就…

最好最牛的101个网站 【达人必修】

最好最牛的101个网站 【达人必修】 发了一年时间收集的好东西,汇总分享给大家,喜欢的朋友记得顶一个哦。谢谢 1,用颜色搜索图片!http://color.slightlyblue.com/      2,几分钟 http://www.jifenzhong.com/ 好看…