eping — 为ping增加urlparse

做渗透测试或提交漏洞单时,常常用到ping,来确认内外网IP,或者寻找资产的归属。

然而ping并不支持url parse。我们写个简单的extended ping脚本。

vim /usr/bin/eping

#!/usr/bin/env python

# Extented Ping

import sys
import urlparse
import platform
import os


if __name__ == '__main__':
    if len(sys.argv) == 1:
        print '  Usage: python %s URL' % sys.argv[0]
        sys.exit(0)
    target = sys.argv[1].lower()
    if not target.startswith('http'):
        target = 'http://%s' % target
    host = urlparse.urlparse(target, 'http').hostname
    param_count = '-c4 ' if platform.system() != 'Windows' else ''
    os.system('ping %s%s' % (param_count, host))

chmod +x /usr/bin/eping

root@srvScanner-test-dev001:~# eping http://www.lijiejie.com/requests-exceptions-invalidschema-missing-dependencies-for-socks-support/
PING www.lijiejie.com (47.88.12.133) 56(84) bytes of data.
64 bytes from 47.88.12.133: icmp_seq=1 ttl=52 time=138 ms
64 bytes from 47.88.12.133: icmp_seq=2 ttl=52 time=138 ms
64 bytes from 47.88.12.133: icmp_seq=3 ttl=52 time=138 ms
64 bytes from 47.88.12.133: icmp_seq=4 ttl=52 time=138 ms

--- www.lijiejie.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 138.204/138.387/138.683/0.317 ms

Windows下使用pyinstaller生成一个exe文件,copy到C:\Windows\System32

pyinstaller –onefile eping.py

Windows 64 bit executable  http://www.lijiejie.com/wp-content/uploads/2017/01/eping.zip 

requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support

requests (2.12.4) 在Windows下使用socks5代理时,出现报错:

File "D:\Python27\lib\site-packages\requests-2.12.4-py2.7.egg\requests\adapters.py", line 43, in SOCKSProxyManager
 raise InvalidSchema("Missing dependencies for SOCKS support.")
requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.

debug 发现是找不到模块 ‘requests.packages.urllib3.contrib.socks’,但其实socks.py文件是存在的。

解决的办法是安装 win_inet_pton

pip install win-inet-pton

之后, 在windows下再配置使用socks5代理就正常了。

IIS短文件名暴力枚举漏洞利用工具(IIS shortname Scanner)

上文我已经介绍了IIS短文件名暴力枚举漏洞的成因和利用。

这里只是发出昨天写的脚本。

脚本可以测试对应的URL是否存在漏洞,若存在漏洞,则猜解文件夹下所有的短文件名:包括文件和文件名。

网上早前已经有公开的工具了:https://code.google.com/p/iis-shortname-scanner-poc/

我没有参考他的代码。自己用python实现了一个漏洞利用脚本。简单测试,发现比上面的POC能猜解到更多的文件和文件夹。

获取源代码:  https://github.com/lijiejie/IIS_shortname_Scanner   (已于Oct 27, 2016更新

测试: IIS_shortname_Scan.py http://stom.tencent.com

最终结果:

stom-tencent-com

通过联想,就可以猜解到上传页:  http://stom.tencent.com/tapdupfile.aspx

stom-tencent-com_upfile

----------------------------------------------------------------
Dir: /aspnet~1
File: /logina~1.cs
File: /tapdap~1.cs
File: /tapdup~1.cs
File: /queryg~1.ash*
File: /queryi~1.ash*
File: /queryp~1.ash*
File: /tapdap~1.asp*
File: /tapdup~1.asp*
----------------------------------------------------------------
1 Directories, 8 Files found in total
Note that * is a wildcard, matches any character zero or more times.

 

rabbitmq pika connection closed

家中PC上,端口扫描的python脚本多次出现pika connection closed的错误,同一脚本在办公机和虚机上从来没问题。

比较奇怪,因为我比较谨慎,在需要延时的地方都使用了mq.conn.sleep()而非time.sleep(),也避免陷入一个长时的循环。

connection closed一般是因为heartbeat timeout引起的,server主动关闭了连接。

为了解决这个问题,在家中PC机上禁用heartbeat,参数heartbeat_interval设置为0:

params = pika.ConnectionParameters(host=MQ_HOST, port=MQ_PORT,
                                   credentials=pika.credentials.PlainCredentials(MQ_USER, MQ_PASSWD),
                                   heartbeat_interval=0)
self.conn = pika.BlockingConnection(parameters=params)

GitHack — 一个git泄露利用脚本

当前大量开发人员使用git进行版本控制,对站点自动部署。  如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。

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

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

脚本的工作原理

  1. 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
  2. 去.git/objects/ 文件夹下下载对应的文件
  3. zlib解压文件,按原始的目录结构写入源代码

它的优点

  1. 速度快,默认20个工作线程
  2. 尽量还原所有的源代码,缺失一部分文件不影响脚本工作
  3. 脚本不需要执行额外的git命令,All you need is python
  4. 脚本无需浏览目录

可能的改进

存在文件被gc打包到git\objects\pack的情况,稍后可测试下看能否直接获取并解压这个文件,还原源代码

用法示例

GitHack.py http://www.hoolai.com/.git/

执行中截图:

GitHack

执行结果:

GitHack_result

获取代码:https://github.com/lijiejie/GitHack

参考资料:

Git Index Formart

非常感谢 sbp 的 gin – a Git index file parser,脚本中使用了他的解析源代码,为适用python 2.x和Windows作了细微的改动

subDomainsBrute — 改进渗透测试时暴力枚举子域名的python脚本

更新日志:

  • 2015-4-2  修复了在Linux系统下进度条输出混乱的bug,填充空格以清空原始输出

渗透测试时,前期的信息收集包括主机(服务)发现。 子域名暴力枚举是十分常用的主机查找手段。

我写了一个改进的小脚本,用于暴力枚举子域名,它的改进在于:

  1. 用小字典递归地发现三级域名,四级域名、五级域名等不容易被探测到的域名
  2. 字典较为全面,小字典就包括3万多条,大字典多达8万条
  3. 默认使用114DNS、百度DNS、阿里DNS这几个快速又可靠的公共DNS进行查询,可随时修改配置文件添加你认为可靠的DNS服务器
  4. 自动筛选泛解析的域名,当前规则是: 超过10个域名指向同一IP,则此后发现的其他指向该IP的域名将被丢弃
  5. 整体速度还过得去,在我的PC上,每秒稳定扫描100到200个域名(10个线程)

以下是我扫描baidu.com得到的结果,共发现1521个域名,能找到不少内网域名和IP,效果还是非常不错的。

它甚至可以发现这样的域名: data.test.noah.baidu.com [10.36.166.17]  未经改进的工具通常是探测不到这个域名的。

扫描其他几家公司,情况一样,可以发现不少内网域名、IP(段)、甚至是十分隐蔽的后台。

这就是不做private DNS 和 public DNS隔离的坏处啊,内网的相关拓扑和服务轻易暴露给黑客了。

http://www.lijiejie.com/wp-content/uploads/2015/04/baidu.com_.txt

youku.com    tudou.com   letv.com    renren.com     tencent.com

下载脚本: https://github.com/lijiejie/subDomainsBrute

请先安装依赖的dnspython,在install目录下。

如果你有什么意见、改进,请反馈,谢谢

附运行时截图一张:

subDomainsBrute