Hack Redis via Python urllib HTTP Header Injection

本篇文章带来的是python低版本的urllib 头部注入,攻击目标为局域网内的Redis,结合着一道CTF实例,演示整个攻击过程

0x01 简介

2016年6月BLINDSPOT披露了Python urllib http头注入漏洞:http://blog.blindspotsecurity.com/2016/06/advisory-http-header-injection-in.html
通过这个漏洞,如果使用了Python的urllib库,并且请求的url为用户可控,那么就可能存在内网被探测的风险,如果本机或内网服务器中装有未授权访问的redis,那么服务器则有被getshell的风险。

0x02 环境搭建

利用2016hctf ATfeild 源码搭建
https://github.com/LoRexxar/hctf2016_atfield

主机 ip 配置
本机 172.17.0.1 Ubuntu:16.04
docker1 172.17.0.2 Ubuntu:16.04 python2.7.6(源码编译)
docker2 172.17.0.4 centos:6 redis2.4.3

0x03 题目分析

整个题目只有一个输入框
这里写图片描述
要求输入图片的url ,后台的访问过程因该是直接去请求文件
打印出来的image地址很可疑 怀疑是ssrf

下一步就是寻找内网主机

0x1 ssrf

这里我们测试能发现,并不允许ip的请求,也就是描述中所说的,请求必须符合.tld标准并且包含域名,如果想要请求127.0.0.1,我们这里有两种绕过方式

1、 http://www.127.0.0.1.xip.io

这种方式可以自动把域名指向中间的ip,在一些特殊情况下非常好用

2、 http://xxxxx/?u=http://127.0.0.1

在有域名的vps上写一个跳转页面实现,事实上,只有第二种做法可以顺利继续做下一题

这里采用两种方法结合的方式
构造http://www.vps.xip.io/302.php?u=http://127.0.0.1

0x2 python urllib 注入

该漏洞的前提python版本为python3 < 3.4.3 || python2 < 2.7.9 (ps 这里python版本必须是自己编译的,虽然不知道为什么???)

首先我们了解一下什么是python urllib 注入

1. docker 1

是对外开放的web服务器端
编写请求脚本

#!/usr/bin/env python                                                       
# encoding: utf-8 
import sys
import urllib2
url = sys.argv[1]
info = urllib2.urlopen(url)

这里写图片描述
通过发送请求 达到恶意数据被执行
python a.py http://172.17.0.3%0d%0aset%20a%2012345%0d%0a:8888/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值