web渗透测试 学习导图

web渗透学习路线


前言

一、web渗透测试是什么?

Web渗透测试分为白盒测试和黑盒测试,白盒测试是指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。而黑盒测试则是在对该网站系统信息不知情的情况下渗透,以下所说的Web渗透就是黑盒渗透。

二、web渗透步骤

Web渗透分为以下几个步骤,信息收集,漏洞扫描,漏洞利用,提权,内网渗透,留后门,清理痕迹。一般的渗透思路就是看是否有注入漏洞,然后注入得到后台管理员账号密码,登录后台,上传小马,再通过小马上传大马,提权,内网转发,进行内网渗透,扫描内网c段存活主机及开放端口,看其主机有无可利用漏洞(nessus)端口(nmap)对应服务及可能存在的漏洞,对其利用(msf)拿下内网,留下后门,清理痕迹。或者看是否有上传文件的地方,上传一句话木马,再用菜刀链接,拿到数据库并可执行cmd命令,可继续上大马...思路很多,很多时候成不成功可能就是一个思路的问题,技术可以不高,思路一定得骚。

1.前期工作

html+css+js

前端三要素 html、css、js是被浏览器解析的代码,是构成静态页面的基础。也是前端漏洞如xss、csrf的基础。

重点了解html和js

能力要求:能够写出简单表单,能够通过js获取DOM元素,控制DOM树即可。

apache+php

推荐使用phpstudy来进行傻瓜式安装,可以少走很多弯路。通过apache+php体会一下网站后端的工作,客户端浏览器通过请求apache服务器上的php脚本,php执行后生成的html页面返回给浏览器进行解析。

重点了解php

能力要求:了解基本网站原理,了解php基本语法,开发简单动态页面
mysql

之前已经安装的phpstudy可以轻易的安装mysql。mysql是一款典型的关系型数据库,一般来说,大部分网站都会带有数据库进行数据存储。

重点了解sql语句

能力要求: 能够用sql语句实现增删改查,并且能用php+mysql开发一个增删改查的管理系统(如学生管理系统)
python

虽然 "php是最好的语言",但它主要还是应用在服务端做网站开发,我们搞安全经常需要写一些脚本或工具来进行诸如密码爆破、目录扫描、攻击自动化等操作,需要一个方便且趁手的编程语言,这里我推荐python

重点学习requests、BeautifulSoup、re这三个库

能力要求: 了解python基础语法,能够用python爬取网站上的信息(requests+BeautifulSoup+re)
burpsuite

web安全的工具很多,但我觉得必备的渗透工具还得是它

重点学习Proxy、Repeater、Intruder三个模块,分别用于抓包放包、重放包、爆破

初步使用即可,在中期的漏洞学习中去逐渐熟练它

能力要求: 能够用burpsuite抓包改包、爆破用户名密码

2.中期提高

此时我们对网站已经不再陌生,能够自己动手完成一个简单站点。但我们写出来的代码真的安全吗?进入中期,我们便要开始着眼经典漏洞的学习。

一个漏洞的学习,要搞明白三点(每学完一个漏洞就问自己这三个问题):

如何利用这个漏洞进行恶意操作? 为什么会产生这个漏洞? 如何修复这个漏洞?

SQL注入

(1) 了解产生sql注入的原理

(2) Union注入

(3) POST类型注入

(4) 万能用户

(5) 盲注

能力要求: 能够手工注入出任意表的数据,熟悉三种盲注的手法,能够通过sql注入实现任意文件读取和任意文件写入,能够自己编写一个不含sql注入的查询功能

文件上传

(1) 了解原理

(2) 会编写一句话木马

(3) 会用cmd命令吧一句话木马与图片结合

(4) 利用一句话木马getshell

能力要求: 会写php的webshell,明白webshell的原理,熟悉常见的文件上传绕过方法(如过后缀检测、过文件头检测、过MIME类型检测),能够自己编写一个不含漏洞的上传功能

文件包含

(1) 了解原理

(2) 会利用文件包含与文件上传文件相结合来getshell

(3) 会访问容易文件

(4)file协议、php伪协议的利用
命令执行

(1) 了解原理

(2) 了解一些cmd的基本命令

(3) 知道哪些特殊字符有特殊作用

(4)php常见的代码执行(eval)、命令执行(system)函数
XSS

(1) 了解原理

(2) 学一下javascript的基本语法

(3) 然后会利用xss获取cookie

(4) 编写一个简单的xss蠕虫
CSRF

(1) 了解原理

(2) 可以利用CSRF进行一些小操作(通过csrf让用户点击恶意链接就触发敏感操作)

(3) 结合xss来利用
变量覆盖

(1) 了解原理

(2) 利用变量覆盖来getshell
XEE

(1) 了解一些XML的语法

(2) 了解原理

(3) 会用XEE来getshell之类的
反序列化

(1) 了解序列化

(2) 了解反序列化

(3) 了解POP链

逻辑漏洞

3.后期打牢

多多参与CTF赛事

参与当下举行的ctf赛事是最好的学习方法之一,即使是初学者也能够找到一些适合自己能力的赛事,比如极客大挑战、UNCTF、各个大学的新生赛等等都是不错的选择,在比赛中去发现自己知识的不足,然后去针对的补充这部分知识,是很好的学习循环,无需迷茫的去到处获取知识,而是在需要时去学习。

Tips: 或许有人觉得直接刷题是一样的,但完全不是,当下比赛中的题往往更加前沿和流行,你可以找到当下的ctf题目趋势,紧跟技术热点,而且可以多多融入ctf竞技的氛围中,成长的更快。

ctfhub 可以很方便的查看最近举行的ctf赛事

多多看其他师傅的博客

打完ctf比赛的你肯定是想看writeup(答案)的,一般来说赛后过几天就会有很多师傅发出他的writeup,从比赛群、百度等途径都可以找到。多多看看其他师傅的解题思路,关注几个大牛,看看他们发的技术文章,都是很好的学习方法。

三、熟悉渗透相关工具

熟悉AWVS、sqlmap、Burp、nessus、chopper、nmap、Appscan等相关工具的使用。

  • 1.了解该类工具的用途和使用场景,先用软件名字Google/SecWiki;
  • 2.下载无后门版的这些软件进行安装;
  • 3.学习并进行使用,具体教材可以在SecWiki上搜索,例如:Brup的教程、sqlmap;

渗透实战操作

掌握渗透的整个阶段并能够独立渗透小型站点。

  • 1.网上找渗透视频看并思考其中的思路和原理,关键字(渗透、SQL注入视频、文件上传入侵、数据库备份、dedecms漏洞利用等等);
  • 2.自己找站点/搭建测试环境进行测试,记住请隐藏好你自己;
  • 3.思考渗透主要分为几个阶段,每个阶段需要做那些工作,例如这个:PTES渗透测试执行标准;
  • 4.研究SQL注入的种类、注入原理、手动注入技巧;
  • 5.研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架;
  • 6.研究XSS形成的原理和种类,具体学习方法可以Google/SecWiki,可以参考:XSS;
  • 7.研究Windows/Linux提权的方法和具体使用,可以参考:提权;

关注安全圈动态

关注安全圈的最新漏洞、安全事件与技术文章。

  • 1.通过SecWiki浏览每日的安全技术文章/事件;
  • 2.通过Weibo/twitter关注安全圈的从业人员(遇到大牛的关注或者好友果断关注),天天抽时间刷一下;
  • 3.通过feedly/鲜果订阅国内外安全技术博客(不要仅限于国内,平时多注意积累),没有订阅源的可以看一下SecWiki的聚合栏目;
  • 4.养成习惯,每天主动提交安全技术文章链接到SecWiki进行积淀;
  • 5.多关注下最新漏洞列表,推荐几个:exploit-db、CVE中文库、Wooyun等,遇到公开的漏洞都去实践下。
  • 6.关注国内国际上的安全会议的议题或者录像,推荐SecWiki-Conference。

熟悉Windows/Kali Linux

学习Windows/Kali Linux基本命令、常用工具;

1.熟悉Windows下的常用的cmd命令,例如:ipconfig,nslookup,tracert,net,tasklist,taskkill等;

2.熟悉Linux下的常用命令,例如:ifconfig,ls,cp,mv,vi,wget,service,sudo等;

3.熟悉Kali Linux系统下的常用工具,可以参考SecWiki,《Web Penetration Testing with Kali Linux》、《Hacking with Kali》等;

4.熟悉metasploit工具,可以参考SecWiki、《Metasploit渗透测试指南》。

服务器安全配置

学习服务器环境配置,并能通过思考发现配置存在的安全问题。

  • 1.Windows2003/2008环境下的IIS配置,特别注意配置安全和运行权限,可以参考:SecWiki-配置;
  • 2.Linux环境下的LAMP的安全配置,主要考虑运行权限、跨目录、文件夹权限等,可以参考:SecWiki-配置;
  • 3.远程系统加固,限制用户名和口令登陆,通过iptables限制端口;
  • 4.配置软件Waf加强系统安全,在服务器配置mod_security等系统,参见SecWiki-ModSecurity;
  • 5.通过Nessus软件对配置环境进行安全检测,发现未知安全威胁。

脚本编程学习

选择脚本语言Perl/Python/PHP/Go/Java中的一种,对常用库进行编程学习

  • 1.搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推Sublime,一些Sublime的技巧:SecWiki-Sublime;
  • 2.Python编程学习,学习内容包含:语法、正则、文件、网络、多线程等常用库,推荐《Python核心编程》,不要看完;
  • 3.用Python编写漏洞的exp,然后写一个简单的网络爬虫,可参见SecWiki-爬虫、视频;
  • 4.PHP基本语法学习并书写一个简单的博客系统,参见《PHP与MySQL程序设计(第4版)》、视频;
  • 5.熟悉MVC架构,并试着学习一个PHP框架或者Python框架(可选);
  • 6.了解Bootstrap的布局或者CSS,可以参考:SecWiki-Bootstrap;

源码审计与漏洞分析

能独立分析脚本源码程序并发现安全问题。

  • 1.熟悉源码审计的动态和静态方法,并知道如何去分析程序,参见SecWiki-审计;
  • 2.从Wooyun漏洞库上寻找开源程序的漏洞进行分析并试着自己分析;
  • 3.了解Web漏洞的形成原因,然后通过关键字进行查找分析,参见SecWiki-代码审计、高级PHP应用程序漏洞审核技术;
  • 4.研究Web漏洞形成原理和如何从源码层面避免该类漏洞,并整理成checklist
相关推荐
数据与后端架构提升之路12 分钟前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
一行121 分钟前
电脑蓝屏debug学习
学习·电脑
星LZX34 分钟前
WireShark入门学习笔记
笔记·学习·wireshark
阑梦清川35 分钟前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
qq_4330994036 分钟前
Isaac Gym学习笔记——概述
学习
秃头佛爷3 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
dayouziei5 小时前
java的类加载机制的学习
java·学习
dsywws8 小时前
Linux学习笔记之vim入门
linux·笔记·学习
晨曦_子画9 小时前
3种最难学习和最容易学习的 3 种编程语言
学习
城南vision9 小时前
Docker学习—Docker核心概念总结
java·学习·docker