【web审计-源码泄露】获取源码方法,利用工具

目录

一、备份文件泄露

1.1、简介:

1.2、文本备份文件

1.3、整站源码备份文件

二、Git泄露

2.1、工具(GitHack):

2.2、产生:

2.3、通过特征搜索

2.4、通过.git泄露

分析源码:

文件:

自定义函数

三、svn泄露

3.1、简介:

3.2、产生原因:

3.3、工具:

Seay-Svn(简单)

dvcs-ripper

四、hg、CVS、Bazaar/bzr源码泄漏

4.1、工具:

dvcs-ripper

五、WEB-INF/web.xml 泄露

5.1、简介:

5.2、产生原因:

5.3、WEB-INF 主要包含文件或目录:

5.4、利用:

六、DS_Store 文件泄露

6.1、简介:

6.2、工具:

ds_store_exp

七、利用漏洞泄露


一、备份文件泄露

1.1、简介:

备份文件一般是由于维护人员的疏忽,忘记删除而留在服务器中的文件。

攻击者通过枚举常见备份文件名,来获得对应的路径,并得到关键代码,从而进行源代码的审计

为了能够找到这些备份文件,一般会使用一些敏感文件扫描工具来进行探测。

一般常见备份文件有:文本备份文件、整站源码备份文件

文件后缀:.rar   .zip  .7z   .tar.gz   .bak    .swp   .txt   .sql等

1.2、文本备份文件

在Linux系统下会使用诸如vim或gedit等文本编辑器,当编辑器崩溃或因异常退出时会自动备份当前文件;或将实现某功能后的代码备份后再进行后续开发工作。

可能的备份文件(index.php为例):

.index.php.swp
.index.php.swo
index.php~
index.php.bak
index.php.txt
index.php.old
...

1.3、整站源码备份文件

会将整站源码打包,然后放在网站的根目录下,这时,只要找到这个压缩包就能开始进行源码审计了。

常见的整站备份文件名:

www
wwwdata
wwwroot
web
webroot
backup
dist
...


各种压缩文件后缀名:

.zip
.tar
.tar.gz
.7z
.rar
...

还可利用其他可能泄露目录结构或文件名的敏感文件来获取备份文件的位置,如“.xx_xxx”



二、Git泄露

2.1、工具(GitHack):

GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。

渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。

GitHub - lijiejie/GitHack: A `.git` folder disclosure exploiticon-default.png?t=M5H6https://github.com/lijiejie/GitHack

使用:

python GitHack.py http://www.openssl.org/.git/

2.2、产生:

web在升级和维护过程中,会对站点文件进行修改,就需要对网站整站或其中一部分进行备份

发布代码的时候,如果没有删除.git目录,就直接发布到服务器,攻击者通过它来恢复源代码

备份文件被放在到 web 服务器可访问的目录下

2.3、通过特征搜索

当某个网站存在某个明显特征字符串的时候

就有可能通过GitHub的搜索功能来搜索到该项目

2.4、通过.git泄露

每个git项目的根目录下都存在一个.git文件夹,作用就是存储项目的相关信息

工具:GitHack和源码


分析源码:

首先在本地建立一个git工程并初始化,然后再commit一次

进入.git目录下,看看目录中文件

确定commit对象,查看对象

输入存在“.git”目录中的url

接着查看HEAD文件获取分支的位置,然后得到分支的hash值

得到hash值后本地初始化一个git,接着通过parseCommit获取全部对象

最后使用reset重设分支,成功将项目重新建立在本地


文件:

关键的文件(一部分):

HEAD:标记当前git在哪个分支中。

refs:标记该项目里的每个分支指向的commit。

objects:git本地仓库存储的所有对象。

git的对象:

commit:标记一个项目的一次提交记录。

tree:标记一个项目的目录或者子目录。

blob:标记一个项目的文件。

tag:命名一次提交。


自定义函数

(1)parseCommit函数:

作用:下载commit对象,将其parent一并下载

代码:

function parseCommit {
        echo parseCommit $1
        downloadBlob $1
        tree=$(git cat-file -p $1| sed -n '1p' | awk '{print $2}')
        parseTree $tree
        parent=$(git cat-file -p $1 | sed -n '2p' | awk '{print $2}')
        [ ${#parent} -eq 40 ] && parseCommit $parent
}


(2)parseTree函数:

作用:下载tree对象,并列出tree下的所有对象,分类为tree或者blob后处理

代码:

function parseTree {
        echo parseTree $1
        downloadBlob $1
        while read line
        do
        type=$(echo $line | awk '{print $2}')
        hash=$(echo $line | awk '{print $3}')
        [ "$type" = "tree" ] && parseTree $hash || downloadBlob $hash
        done < <(git cat-file -p $1)
}


(3)downloadBlob函数:

作用:下载与hash对应的文件

function downloadBlob {
        echo downloadBlob $1
        mkdir -p ${1:0:2}
        cd $_
        wget -q -nc $domain/.git/objects/${1:0:2}/${1:2}
        cd ..
}



三、svn泄露

3.1、简介:

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。

3.2、产生原因:

网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。

3.3、工具:

Seay-Svn(简单)

http://www.vuln.cn/wp-content/uploads/2015/10/Seay-Svn.raricon-default.png?t=M5H6http://www.vuln.cn/wp-content/uploads/2015/10/Seay-Svn.rar


dvcs-ripper

下载地址:

GitHub - kost/dvcs-ripper: Rip web accessible (distributed) version control systems: SVN/GIT/HG...icon-default.png?t=M5H6https://github.com/kost/dvcs-ripper

‎Rip Web可访问(分布式)版本控制系统:SVN,GIT,Mercurial/hg,bzr,...‎

‎即使目录浏览关闭,它也可以翻录存储库。‎

‎确保将自己置于要下载/克隆存储库的空目录中。‎



四、hg、CVS、Bazaar/bzr源码泄漏

4.1、工具:

dvcs-ripper

下载地址:

GitHub - kost/dvcs-ripper: Rip web accessible (distributed) version control systems: SVN/GIT/HG...icon-default.png?t=M5H6https://github.com/kost/dvcs-ripper

‎Rip Web可访问(分布式)版本控制系统:SVN,GIT,Mercurial/hg,bzr,...‎

‎即使目录浏览关闭,它也可以翻录存储库。‎

‎确保将自己置于要下载/克隆存储库的空目录中。‎



五、WEB-INF/web.xml 泄露

5.1、简介:

WEB-INF是Java的WEB应用的安全目录,客户端无法访问,只有服务端才可以可以访问,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

5.2、产生原因:

在使用网络架构的时候,对静态资源的目录或文件的映射配置不当,从而引发的安全问题,导致web.xml等文件能够被读取

5.3、WEB-INF 主要包含文件或目录:

(1)/WEB-INF/web.xml :

Web应用程序配置文件(描述servlet和其他的应用组件配置及命名规则)

(2)/WEB-INF/database.properties:

数据库配置文件

(3)/WEB-INF/classes/:

存放Java类文件(.class),包含所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配

(4)/WEB-INF/lib/ :

用来存放打包好的库(.jar),即web应用需要的各种JAR文件

(5)/WEB-INF/src/ :

源码目录,存放源代码(.asp和.php等)

5.4、利用:

通过找到 web.xml 文件,推断 class 文件的路径,找到 class 文件,再通过反编译 class 文件,得到网站源码。



六、DS_Store 文件泄露

6.1、简介:

.DS_Store是Mac下Finder用来保存如何展示文件/文件夹 的数据文件(即文件夹的显示属性的,和比文件图标的摆放位置),每个文件夹下对应一个


把代码上传的时候,安全正确的操作应该把 .DS_Store 文件删除,如果未删除,.DS_Store将会上传部署到服务器,可能造成文件泄漏(目录结构、备份文件、源代码文件)

6.2、工具:

ds_store_exp

是一个 .DS_Store 文件泄漏利用脚本,它解析.DS_Store文件并递归地下载文件到本地。

下载地址:

GitHub - lijiejie/ds_store_exp: A .DS_Store file disclosure exploit. It parses .DS_Store file and downloads files recursively.icon-default.png?t=M5H6https://github.com/lijiejie/ds_store_exp



七、利用漏洞泄露

结合任意文件包含漏洞或者任意文件存在下载漏洞

就可能下载到源码,并对其进行审计

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Web-print码是一个用于实现网页打印功能的程序代码。通过这段代码,我们可以在网页中添加一个打印按钮,用户点击该按钮后可以将网页的内容以适合打印的格式输出到打印机进行打印。 Web-print码通常会包含以下几个方面的内容: 1. HTML代码:包括一个页面布局的HTML结构,可以包含一些CSS样式定义,以确保打印输出的内容格式和布局符合要求。在HTML代码中,我们还会添加一个打印按钮的元素,通过JavaScript来触发打印功能。 2. JavaScript代码:用于实现打印功能的逻辑,主要包括两个部分。首先,需要使用JavaScript来监听打印按钮的点击事件,当用户点击打印按钮时,执行打印功能的代码。其次,需要编写打印功能的代码,负责将网页的内容转换为适合打印的格式,并将其发送给打印机进行打印。 3. CSS样式表:用于定义网页打印时的样式,包括各个元素的大小、颜色、位置等。通过调整CSS样式,可以改变打印输出的内容的外观。 通过使用Web-print码,我们可以方便地实现网页的打印功能,让用户能够将页面上的内容以纸质形式保存下来或分享给他人。这在很多需要将网页内容进行备份、归档或传递的场景中非常有用,比如打印电子商务订单、打印学习资料等。所以,Web-print码可以帮助我们提升用户体验,增加网站的实用性和功能扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值