碳基体

奋斗在产品安全第一线的安全妹子

Proxy探测脚本与HTTP基本认证暴力破解脚本

一、Proxy探测脚本

功能:探测Proxy地址是否可用,速度及代理的隐匿程度

脚本地址:https://github.com/tanjiti/perl_tools/blob/master/isProxyOK.pl

使用方法:

1. 获取帮助

perl isProxyOK.pl --help

2. 判断指定Proxy地址是否可用及连通速度

黄色字体表明代理不可用,红色字体表示代理可用

perl isProxyOK.pl -proxy http://61.158.219.226:8118


除了http代理,也支持socks代理

perl isProxyOK.pl -proxy socks://180.153.139.246:8888

 

除了探测单个proxy地址,我们也可以批量探测文件中的代理,并将可连通的代理输出到指定文件中以备用

perl isProxyOK.pl -proxy proxy_Scrapebox.txt [-out proxy_20140511_out]


代理文件的格式如下proxy_Scrapebox.txt(代理来自Scrapebox):

 

运行

 

运行结束后将可用代理存入文件proxy_Scrapebox.txt_out中,你也可以使用 -out 选项指定输出文件名 

 

3.判断代理的类型

1)脚本将代理分为三类

(1)High Anonymity Proxy/elite Proxy 高度匿名代理:不会在服务器访问日志中留下VIA,与X_Forwarded_For内容

(2)Anonymity Proxy 匿名代理:可隐藏访问者原始IP,X-Forwarded-For中没有实际的访问IP

(3)Transparent Proxy透明代理: 有详细的代理信息及访问者IP,代理IP


1)脚本运行的先决条件

启动该功能需要预先在脚本运行环境下搭建web server

本例以在vps下搭建lighttpd 为例,设置lighttpd日志格式及启动server


设置lighttpd的日志格式,主要是要记录X-Forwarded-For 、VIA头部

vim /etc/lighttpd/conf-enabled/10-accesslog.conf

accesslog.format = "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\" \"%{VIA}i\""

accesslog.filename = "/var/log/lighttpd/access.log"

具体的日志格式设置可参考《 Apache/Nginx/Lighttpd/Tomcat 日志格式 cheatsheet


2)代理判断的流程

通过指定代理访问web server,然后在web server访问日志中查看VIA,与X_Forwarded_For字段

第一步:使用代理访问 http://www.tanjiti.com/proxy.php ,获得代理相关请求及初步的代理判断

{

  • HTTP_VIA: false,

  • HTTP_X_FORWARDED_FOR: "xxx.xxx.xxx.xxx",

  • HTTP_X_FORWARDED_PROTO: "http",

  • REMOTE_ADDR: "xxx.xxx.xxx.xxx",

  • HTTP_PROXY_CONNECTION: false,

  • PROXY_TYPE: "transparent"

}

第二步:

根据访问者真实的ip地址,查看HTTP_X_FORWARDED_FOR头,看是保护在其中,如果不在,则为匿名代理




4)实例

-proxy: 代理地址 也可以是代理地址文件

-vv: 表示获得代理类型

-url: 你的web server ip或域名

-ip: 你的访问ip

-logpath: web server访问日志路径,默认为/var/log/lighttpd/access.log

a.透明代理Transparent 

perl isProxyOK.pl -vv  -proxy http://218.107.217.82:8080

 

b.匿名代理Anonymity

perl isProxyOK.pl -vv  -proxy http://64.34.14.28:7808


c.高度匿名代理elite

perl isProxyOK.pl -vv  -proxy socks://180.153.139.246:8888

 

该代理脚本待改善的地方

1. 不支持需要认证的代理服务器

2. 不支持多线程探测


二、HTTP 基本认证暴力破解脚本

 功能:使用字典破解HTTP basic Authentication

脚本地址:https://github.com/tanjiti/perl_tools/blob/master/crackbasicAuth.pl

补充知识:

基本认证实例说明:lighttpd + htpasswd

第一步:htpasswd创建基本认证

在指定路径下生成基本认证文件

htpasswd -c [认证文件路径,使用绝对路径] tanjiti(用户名)

第二步:启用auth模块

lighttpd-enable-mod auth

/etc/init.d/lighttpd force-reload

第三步: 配置auth模块

vim conf-enabled/05-auth.conf

增加

auth.backend = "htpasswd"

auth.backend.htpasswd.userfile = "[filepath absolute]"

auth.require = ("[需要采取基本认证的路径,使用相当路径]" => (

    "method" => "basic",

    "realm" => "[基本认证框中的服务器提示]",

    "require" => "user=tanjiti"

))

/etc/init.d/lighttpd force-reload

此时访问该路径的文件,则会要求进行基本认证,否则401

实际上服务器是期待客户端发送一个带有帐户信息的Authorization头

Authorization: Basic dGFuaml0aToxMjM=(username:password base64编码)

 

使用方法:

1.获取帮助

perl crackbasicAuth.pl -h

2. 使用脚本登陆

perl crackbasicAuth.pl  -url http://www.tanjiti.com/xxxx/ -username tanjiti -password 123 -vv

选项说明:

-url 需要基本认证的路径

-username 基本认证用户名,可以是字符串,也可以是字符串(字典)文件

-password 基本认证密码,可以是字符串,也可以是字符串(字典)文件

-vv 开启该选项,在终端开启看到详细的HTTP请求头和响应头

-tor 表示使用tor作为代理来访问目标url

-proxy表示使用代理来访问目标url,可以是单个的代理字符串,也可以是代理列表文件(我们可以使用一、Proxy探测脚本介绍的方法来挑选合适的代理列表)

 

 

使用字典尝试登陆

perl crackbasicAuth.pl  -url http://www.tanjiti.com/xxxx/ -username a -password b

   使用tor(debian/ubuntu 使用apt-get install tor,默认监听端口9050)

perl crackbasicAuth.pl  -url http://www.tanjiti.com/xxxx/ -username a -password b -tor


 

使用proxy list

perl crackbasicAuth.pl  -url http://www.tanjiti.com/xxxx -username a -password b -proxy proxy_Scrapebox.txt_out

 

其实基本认证一般会配合ip的访问控制策略(只允许某段IP访问),使用代理隐藏IP,绕过登陆安全限制(例如限制单个IP或单个用户名的访问频率)的意义不大,但可以将理念用于没有ip限制的表单登陆中。

来源:碳基体

评论