首页 > 常见问答

如何查询网站历史记录(网站历史记录查询网站源码)

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

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

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

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

如何查询网站历史记录(网站历史记录查询网站源码)

github的搜索页面:

(1)quickcheatsheet

基础查询:

搜索仓库:

搜索代码:

搜索用户:

(2)个人查询dork

filename:config.phpdbpasswdfilename:.bashrcpasswordshodan\_api\_keylanguage:pythonpath:sitesdatabasespassword"baidu.com"sshlanguage:yamlfilename:file.phpadminin:pathorg:companyname"aws\_access\_key_id:"(3)针对某个关键词查询

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

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

gitclone免安装使用:

python3gitdorker.py-tf./tf/tokensfile-qximalaya.com-d./dorks/alldorksv3-oxmly

参考:

0x1.2搜索引擎google:

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

0x1.3网盘搜索/

/

/这个网站做了个集合,比较全。

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

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

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

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

(1)logo特征

请求favicon.ico获取hash

(2)关键词特征

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

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

下载地址:

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

cattargets.xt|deduplicate|

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

0x2.4编写nuclei插件阅读和学习编写插件的官方文档:guide可知:

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

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

参考:可知

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

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

id:back-up-filesinfo:name:findresourcecodeoftargettemplateauthor:xq17severity:mediumtags:exposure,backup编写插件的第二步:发送请求

参考:/可知

1.

2.requestmethodcanbeget,post,put,delete,etcdependingontheneeds.

3.redirectionconditionscanbespecifiedpereachtemplate.bydefault,redirectsarenotfollowed.however,ifdesired,theycanbeenabledwithredirects:trueinrequestdetails.

4.thenextpartoftherequestsisthepathoftherequestpath.dynamicvariablescanbeplacedinthepathtomodifyitsbehavioronruntime.

variablesstartwith{{andendwith}}andarecase-sensitive.

{{baseurl}}–thiswillreplaceonruntimeintherequestbytheoriginalurlasspecifiedinthetargetfile.

{{hostname}}–hostnamevariableisreplacedbythehostnameofthetargetonruntime.

5.headerscanalsobespecifiedtobesentalongwiththerequests.headersareplacedinformofkey/valuepairs.anexampleheaderconfigurationlookslikethis:

#headerscontainstheheadersfortherequestheaders:#customuser-agentheaderuser-agent:some-random-user-agent#customrequestoriginorigin:

6.bodyspecifiesabodytobesentalongwiththerequest.(发送post包需要用到)

7.tomaintaincookiebasedbrowserlikesessionbetweenmultiplerequests,youcansimplyusecookie-reuse:trueinyourtemplate,usefulincaseswhereyouwanttomaintainsessionbetweenseriesofrequesttocompletetheexploitchainandtoperformauthenticatedscans.(session重用,作用是串联攻击链,实现登录验证再攻击)

#cookie-reuseacceptsbooleaninputandfalseasdefaultcookie-reuse:true

8.requestconditionallowstocheckforconditionbetweenmultiplerequestsforwritingcomplexchecksandexploitsinvolvingmultiple

withdslmatcher,itcanbeutilizedbyaddingreq-condition:trueandnumbersassuffixwithrespectiveattributes,status_code_1,status_code_3,andbody_2forexample.(编写复杂攻击链)

req-condition:truematchers:–type:dsldsl:–"status\_code\_1==404&&status\_code\_2==200&&contains((body\_2),'secret\_string')"

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

requests:–method:getpath:–"{{baseurl}}/;编写插件的第三步:判断返回内容

参考:/知

multiplematcherscanbespecifiedinarequest.therearebasically6typesofmatchers:

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

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

可用的辅助函数:/,

对于wordsandregexes,可以对返回内容的多个匹配条件用and或or进行组合。

multiplewordsandregexescanbespecifiedinasinglematcherandcanbeconfiguredwithdifferentconditionslikeandandor

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

multiplepartsoftheresponsecanalsobematchedfortherequest,defaultmatchedpartisbodyifnotdefined.

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

alltypesofmatchersalsosupportnegativeconditions,mostlyusefulwhenyoulookforamatchwithanexclusions.thiscanbeusedbyaddingnegative:trueinthematchersblock.

支持使用多个matchers

multiplematcherscanbeusedinasingletemplatetofingerprintmultipleconditionswithasinglerequest.

支持matchers-condition

whileusingmultiplematchersthedefaultconditionistofolloworoperationinbetweenallthematchers,andoperationcanbeusedtomakesurereturntheresultifallmatchersreturnstrue.

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

matchers-condition:andmatchers:–type:binarybinary:–"504b0304"#zippart:body–type:dsldsl:–"len(body)0"–type:statusstatus:–200编写插件的第四步:链接起各个部分

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

id:back-up-filesinfo:name:findresourcecodeoftargettemplateauthor:xq17severity:mediumtags:exposure,backuprequests:–method:getpath:–"{{baseurl}}/测试插件本地起一个靶机,进行调试:

python3-m

然后调试:

echo'/

发包过程:

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

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

原文标题:如何查询网站历史记录(网站历史记录查询网站源码),如若转载,请注明出处:https://www.goodstylecd.com/wenda/2093.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「格调佳」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。