现在的位置: 首页github>正文
Github Enterprise 2.12 破解小试
2017年12月14日 github 暂无评论

事先声明:本文没有给出具体破解方法或破解补丁,仅为学习研究之笔记。本人不为看了这篇文章之后违法使用Github Enterprise的行为负任何责任

很久没有更新博客了,今天闲来无事写写最近闲着没事做的东西。

最近公司要搭个内部git服务器,第一个想到的当然是gitlab,当然stash或者github enterprise也很好,但是要付钱。部门抠门又不给预算,就从公司的垃圾堆里翻出一台淘汰的台式机,搭了一个gitlab社区版(毕竟免费)。不过作为常年github用户,就想着自己破解一下github enterprise,虽然不能在公司用,自己研究一下也是不错的。

目前网络上并没有现成的破解,但是有几篇文章倒是大概提到了怎样破解,贴在下面:

https://pastebin.com/Ai2PP66V

http://blog.csdn.net/samlty2/article/details/51612108

https://paper.seebug.org/176/

然而在新版github enterprise上,这些加密的ruby文件格式不一样了:前面文章中提到的require "ruby_concealer.so"并不存在于这些文件中,并且这个ruby_concealer.so也不存在于系统中。而常用来解密的现成脚本gist的实现原理是替换这个ruby_concealer.so,把这个库中的rb_f_eval替换为rb_f_puts(也就是把eval替换为print)。

拿GDB调试了一下之后发现github这次把ruby_concealer这玩意直接写进了ruby里(可以看到有concealer_load这个function)。观察之后发现这个加密方式和以前并没有变化,解密起来也和以前一样,zlib解压之后对着key做xor(详情可以阅读上面贴的三篇文章)。拿python随手写了一个解密脚本,试了几个文件确实可以解密,然而有的文件连zlib解压都无法成功,难不成github这回连zlib都动了手脚?拿ruby写了一个放在Github Enterprise虚拟机里,果然全都可以解密了。

既然拿到了代码,那么破解起来也不算个麻烦事了,按照上面文章的提示,搜索文件名中带license的文件,很容易就能看懂在哪里做改动可以通过。不过略坑的是Setup和后台读license用的代码是分开写的,所以至少得修改两个文件。具体怎么改恕不阐述。

另外,这篇博客是在2.11版本的时候写就的,还没发出去github就升级到了2.12,所幸加密方式没有变化,但是我之前修改过的文件被覆盖了,只得再次上传覆盖,所以这个破解是每次升级之后都需要重新做的。

这个破解还有一个问题在于,必须先有一个有效的license才能打开ssh,有了ssh才可以进行接下来的破解工作,虽然试用license是很容易申请的,然而如果你的试用证书过期之后安装了更新,可能就ssh不进去了。当然,可以选择直接挂载虚拟机磁盘文件进行修改(前提是Github没有加密分区)

那么,就到这里,下次更新可能又是几年后了

给我留言

留言无头像?


×
腾讯微博