vmstat介绍

前言

vmstat是virtual memory statistics 的缩写,它是Linux下一个非常有用的监控工具,除了内存之外,还提供 块 IO、CPU 时间 等额外的信息

1、语法

vmstat 命令的执行不需要特殊的权限,普通用户就可以执行,其语法形式如下

1
vmstat [options] [delay [count]]

delay 表示数据更新间隔,单位是秒,如果没有指定此值,表示系统启动以来的平均时间,而且此时只输出一次结果
count 表示输出次数,如果没有指定该值,但是指定了 delay 的值,则表示无限次

……

阅读全文

挖矿病毒4-容器挖矿病毒清理

前言

1月26日,运维同学收到告警邮件,告诉我某台测试服务器中了挖矿病毒,心想怎么最近挖矿这么猖狂…

1、分析准备

仍然下载是busybox

1
2
3
4
wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox 
chmod +x busybox
cp busybox /usr/bin 
busybox  top

2、按步骤排查

剩余步骤跟挖矿病毒2-分析和排查思路一样,只是所有的命令前面是 busybox command
不过这次是容器挖矿,ECS 排查步骤仍然走一遍,但是没啥收货,但是恶意进程还是可以找到的

……

阅读全文

挖矿病毒3-分析和清理过程

前言

1月23日,公司邮箱收到说阿里云报了挖矿病毒的警告

1、分析

这次思路改进了些,起初有个只是定时任务没被清理,阿里云通过定时任务关键字"pool.minexmr.com:4444"报了蠕虫病毒,但是根据关键字查看,这像挖矿
然后 top 了半天没看到结果,怀疑是top被篡改了???然后进了/usr/bin/核对下 top 的时间,发现没差异呀,但是本着稳妥起见,还是下载 busybox

……

阅读全文

一些正则小细节-不定期补充

前言

记录日常工作碰到的一些正则小细节

1、group分组

需要通过()把提取的参数圈起来,这样才会产生分组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
private static String collectMapperId(String value) {
        String result = "";
        String regId = "id=\"(.*?)\"";
        Pattern pattern = Pattern.compile(regId);
        Matcher matcher = pattern.matcher(value);
        if (matcher.find()) {
            result = matcher.group(1);
        }
        return result;
    }

对比如果没有(),是没有分组效果的

……

阅读全文

sdkman的使用

前言

多sdk版本管理工具

1、安装java jdk

1
sdk install java

2、安装指定版本的 java jdk

1
sdk install java 8u131

3、安装本地包

1
sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT

4、移除 java jdk

1
sdk uninstall java

5、查看当前生效的 java jdk

1
2
3
sdk current java
# 查看所有本地包的当前版本
sdk current

6、查看支持的清单

1
sdk list

7、查看软件的版本

1
sdk list java

8、临时切换版本

1
sdk use java 8.0.232.hs-adpt

9、切换默认版本

1
sdk default java 11.0.5.hs-adpt

10、sdk 版本升级

1
2
3
sdk upgrade springboot
# 本地所有sdk全部升级
sdk upgrade 

11、sdkman 版本升级

1
2
3
sdk selfupdate
# 强制重新安装
sdk selfupdate force

12、查看 sdkman 的版本

1
sdk version

13、离线模式

1
2
3
4
5
sdk offline enable
  Forced offline mode enabled.

sdk offline disable
  Online mode re-enabled!

当电脑没有网的时候,离线模式会进行自动切换.

……

阅读全文

mysql大表的数据清理

前言

mysql的表日积月累也会出现过千万的大表,有些历史数据可以定期归档清理的,保留最近的数据即可。但是delete table_name where id = ‘’;这种方式只是逻辑上的删除,不会释放表空间和索引的。因此需要在历史数据归档后做表分析才行

1、大表归档大量数据

先远程备份,可以开发成shell脚本,设置crontab定期备份

……

阅读全文

nmap参数详解

前言

用nmap扫描域名整理下一些细节参数

1、语法

1
nmap [扫描类型] [选项] {目标规格}

2、选项

目标规格: 可以通过主机名,IP地址,网络等

例如:

1
2
3
4
5
scanme.nmap.org,microsoft.com/24,192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>:从主机/网络列表输入
  -iR <num hosts>:选择随机目标
  --exclude <host1 [,host2] [,host3],...>:排除主机/网络
  --excludefile <exclude_file>:从文件中排除列表

2.1 主机发现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  -sL:列表扫描 - 只需列出要扫描的目标
  -sn:Ping扫描 - 禁用端口扫描
  -Pn:将所有主机视为在线 - 跳过主机发现
  -PS / PA / PU / PY [portlist]:向给定端口发送TCP SYN / ACK,UDP或SCTP
  -PE / PP / PM:ICMP回显,时间戳和网络掩码请求发现探测
  -PO [协议列表]:IP协议Ping
  -n / -R:不要做DNS解析/总是解决[默认:有时]
  --dns-servers <serv1 [,serv2],...>:指定自定义DNS服务器
  --system-dns:使用操作系统的DNS解析器
  --traceroute:跟踪每个主机的跳转路径

2.2 扫描技术

1
2
3
4
5
6
7
8
  -sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon扫描
  -sU:UDP扫描
  -sN / sF / sX:TCP Null,FIN和Xmas扫描
  --scanflags <flags>:自定义TCP扫描标志
  -sI <zombie host [:probeport]>:空闲扫描
  -sY / sZ:SCTP INIT / COOKIE-ECHO扫描
  -sO:IP协议扫描
  -b <FTP中继主机>:FTP跳转扫描

2.3 端口规格和扫描订单

1
2
3
4
5
6
  -p <端口范围>:仅扫描指定的端口
    例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  -F:快速模式 - 扫描比默认扫描更少的端口
  -r:连续扫描端口 - 不要随机化
  --top-ports <number>:扫描<number>最常用的端口
  --port-ratio <ratio>:扫描端口比<ratio>更常见

2.4 服务/版本检测

1
2
3
4
5
  -sV:探测打开端口以确定服务/版本信息
  --version-intensity <level>:从0(亮)到9(尝试所有探针)
  - 变换光:极限探测器(强度2)
  --version-all:尝试每一个探针(强度9)
  --version-trace:显示详细的版本扫描活动(用于调试)

2.5 脚本扫描

1
2
3
4
5
6
7
8
  -sC:相当于--script = default
  --script = <Lua scripts>:<Lua scripts>是逗号分隔的列表目录,脚本文件或脚本类别
  --script-args = <n1 = v1,[n2 = v2,...]>:为脚本提供参数
  --script-args-file = filename:在文件中提供NSE脚本参数
  --script-trace:显示发送和接收的所有数据
  --script-updatedb:更新脚本数据库。
  --script-help = <Lua脚本>:显示有关脚本的帮助。
                          <Lua脚本>是一个逗号分隔的脚本文件列表脚本的类别。

2.6 操作系统检测

1
2
3
  -O:启用操作系统检测
  --osscan-limit:将操作系统检测限制为有希望的目标
  - 可以猜测:猜测操作系统更积极

2.7 时间和性能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  采取<time>的选项以秒为单位,或追加“ms”(毫秒)
  '(秒),'m'(分钟)或'h'(小时)到该值(例如30m)。
  -T <0-5>:设置时间模板(越高越好)
  --min-hostgroup / max-hostgroup <size>:并行主机扫描组大小
  --min-parallelism / max-parallelism <numprobes>:探针并行化
  --min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <time>:指定
      探测往返时间。
  --max-retries <attempts>:端口扫描探测重传的Caps number。
  --host-timeout <time>:在此之后放弃目标
  --scan-delay /  -  max-scan-delay <time>:调整探测器之间的延迟
  --min-rate <number>:发送速度慢于<number>每秒
  --max-rate <number>:发送数据包速度不超过每秒的<number>

2.8 防火墙/IDS逃避和SPOOFING

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  -F; --mtu <val>:片段数据包(可选地,给定MTU)
  -D <decoy1,decoy2 [,ME],...>:用诱惑遮掩扫描
  -S <IP_Address>:欺骗源地址
  -e <iface>:使用指定的接口
  -g /  -  source-port <portnum>:使用给定的端口号
  --data-length <num>:将随机数据附加到发送的数据包
  --ip-options <options>:使用指定的ip选项发送数据包
  --ttl <val>:设置IP生存时间字段
  --spoof-mac <mac address / prefix / vendor name>:欺骗您的MAC地址
  --badsum:发送具有假TCP / UDP / SCTP校验和的数据包

2.9 OUTPUT

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  -oN / -oX / -oS / -oG <file>:正常输出扫描,XML,s | <rIpt kIddi3,
     和Grepable格式,分别给给定的文件名。
  -oA <basename>:一次输出三种主要格式
  -v:增加详细程度(使用-vv或更多的效果)
  -d:增加调试级别(使用-dd或更多更大的效果)
  --reason:显示端口处于特定状态的原因
  --open:仅显示打开(或可能打开)的端口
  --packet-trace:显示发送和接收的所有数据包
  --iflist:打印主机接口和路由(用于调试)
  --log错误:将错误/警告记录到正常格式的输出文件中
  --append-output:追加而不是clobber指定的输出文件
  --resume <filename>:恢复中止的扫描
  --stylesheet <path / URL>:将XML输出转换为HTML的XSL样式表
  --webxml:来自Nmap.Org的引用样式表,用于更多的便携式XML
  --no-stylesheet:防止XSL样式表与XML输出关联

2.10 MISC

1
2
3
4
5
6
7
8
  -6:启用IPv6扫描
  -A:启用操作系统检测,版本检测,脚本扫描和跟踪路由
  --datadir <dirname>:指定自定义Nmap数据文件位置
  --send-eth /  -  send-ip:使用原始以太网帧或IP数据包发送
  --privileged:假设用户是完全特权的
  --unprivileged:假设用户缺少原始套接字权限
  -V:打印版本号
  -h:打印此帮助摘要页面。

2.11 例子

1
2
3
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p80

3、常见的nmap例子

我们要进行对icmp的扫描,我们可以这样写

1
nmap -sP ipaddress

我们要对目标半开放式端口扫描不想在留下日志记录怎么整

1
namp -sS -p port ipadress

下面介绍一些nmap的审计脚本

snmp默认团体名/弱口令漏洞及安全加固

审计snmp弱口令

1
nmap –sU –p161 –script=snmp-brute ipaddress 

iis短文件名泄露

1
nmap -p 80 --script http-iis-short-name-brute ipaddress

Memcached未授权访问漏洞

1
nmap -sV -p 11211 -script memcached-info ipaddress

验证https.sys远程代码执行漏洞

1
nmap -sV - (-) script http-vuln-cve2015-1635 ipaddress

心脏出血

1
nmap -sV --scipt=ssl-heartbleed ipaddress

mongodb未授权访问

1
nmap -p 27017 --script mongodb-info ipaddress

redis未授权访问

1
nmap -p 6370 --script redis-info ipaddress

elastticsearch未授权访问

1
nmap --script=http-vuln-cve2015-1427 --script-args command='ls' ipaddress

rsync未授权漏洞

1
nmap -p 873 --script rsync=brute ==script=args 'rsync-brute.module=www'

http拒绝服务

1
nmap --max-paralleism 800-script http=slowloris siteaddress

ftp弱口令暴力破解

1
nmap --script ftp-brute --script-args brute.emptypass=true,ftp-brute.timeout=30,userdb=/root/dirtionary/usernames.txt,brute.useraspass=true,passdb=/root/dirtionary/passwords.txt,brute.threads=3,brute.delay=6 ipaddress

检测CVE-2011-2523中的ftp-vsftpd-backdoor

1
nmap -T2 --script ftp-vsftpd-backdoor ipaddress

验证http中开启的-methods 方法

1
nmap -T3 --script http-methods --script-args http.test-all=true,http.url-path=/siteaddress

验证HTTP.sys 远程代码执行

1
nmap -sV --script http-vuln-cve2015-1635 ipaddress

验证 SSL POODLE information leak

1
nmap -sV -p 443 --version-light --script ssl-poodle ipaddress

验证http 中开启了put 方法

1
nmap --script http-put --script-args http-put.url=/uploads/testput.txt,http-put.file=/root/put.txt ipaddress

验证mysql 匿名访问

1
nmap --script mysql-empty-password ipaddress

验证cve2015-1427 漏洞

1
nmap --script http-vuln-cve2015-1427 --script-args command=ls ipaddress

验证cve2014-8877漏洞

1
nmap -Pn --script http-vuln-cve2014-8877 --script-args http-vuln-cve2014-8877.cmd=dir,http-vuln-cve2014-8877.uri=/wordpress ipaddress

验证Cisco ASA中的CVE-2014-2126,CVE-2014-2127,CVE-2014-21,CVE-2014-2129漏洞

1
nmap -p 443 --script http-vuln-cve2014-2126,http-vuln-cve2014-2127,http-vuln-cve2014-2128,http-vuln-cve2014-2129 ipaddress

验证低安全的 SSHv1,sslv2协议

1
nmap --script sshv1,sslv2 siteadress

验证CVE-2014-0224 ssl-ccs-injection

1
nmap -Pn --script ssl-ccs-injection ipaddress

验证ssl-cert证书问题

1
nmap -v -v --script ssl-cert ipaddress

验证SSL证书的有限期

1
nmap -Pn --script ssl-date siteadress

验证 Debian OpenSSL keys

1
nmap -p 443 --script ssl-known-key ipaddress

验证弱加密SSL套件

1
nmap --script ssl-enum-ciphers ipaddress

验证CVE 2015-4000

1
nmap --script ssl-dh-params siteadress

验证多种SSL漏洞问题

1
nmap 203.195.139.153 --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-ciphers,ssl-google-cert-catalog,ssl-heartbleed,ssl-known-key,sslv2

在网络中检测某主机是否存在窃听他人流量

1
nmap --script sniffer-detect ipaddress

暴力破解telnet

1
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s ipaddress

验证telnet是否支持加密

1
nmap --script telnet-encryption ipaddress

精准地确认端口上运行的服务

1
nmap -sV --script unusual-port ipaddress

收集VNC信息

1
nmap --script vnc-info ipaddress

暴力破解VNC

1
nmap --script vnc-brute --script-args brute.guesses=6,brute.emptypass=true,userdb=/root/dictionary/user.txt,brute.useraspass=true,passdb=/root/dictionary/pass.txt,brute.retries=3,brute.threads=2,brute.delay=3 ipaddress

Web敏感目录扫描

1
nmap -p 80 --script=http-enum.nse XXX.XXX.XXX.XXX
……

阅读全文

log4j2远程执行漏洞

前言

12月9日爆出来的log4j2远程执行漏洞,因为影响巨大,网上新闻和介绍特别多,这里不多说,间接使用log4j2的第三方也不少,等官网修复不知道是否赶得上,直接采用暴力删除jndilook.class最简单

1、直接删除漏洞class

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
set -eu
for JAR_PATH in "$@"; do
	if [[ $JAR_PATH != *log4j-core*.jar ]] || [ -e "$JAR_PATH.bak" ] || ! [ -f "$JAR_PATH" ]; then
		echo "Skipped $JAR_PATH"
		continue
	fi
	echo "Processing $JAR_PATH"
	cp -p "$JAR_PATH" "$JAR_PATH.bak"
	zip -q -d "$JAR_PATH" org/apache/logging/log4j/core/lookup/JndiLookup.class
done

2、Apache log4j2漏洞官方说明

官方漏洞说明: https://logging.apache.org/log4j/2.x/security.html

……

阅读全文

lombok一些注解的含义

前言

lombok一些注解的含义整理

1、@Accessors(chain = true)

链式风格,在调用set方法时,返回这个类的实例对象,比如:a.b.c

2、@Data

在JavaBean或类JavaBean中使用,这个注解包含范围最广,它包含getter、setter、NoArgsConstructor、equals、canEqual、hashCode、toString 注解,即当使用当前注解时,会自动生成包含的所有方法;

……

阅读全文

git的日常操作命令整理

前言

git的一些常见命令操作整理

1、下载

depth用于指定克隆深度,为1即表示只克隆最近一次commit,可以减少下载的容量

1
git cone --depth=1 {http://xxx/url}

2、撤销commit

默认撤销,不撤销本地代码,撤销commit,并且撤销git add

1
git reset --mixed HEAD^

不删除工作空间改动代码,撤销commit,不撤销git add

1
git reset --soft HEAD^

删除工作空间改动代码,撤销commit,撤销git add

……

阅读全文

最近文章

分类

标签

其它