一、暴力破解1、概述 “暴力破解”是一攻击具手段在web攻击中一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录直到得到正确的结果。为了提高效率暴力破解一般会使用带有字典的工具来进行自动化操作。理论上来说大多数系统都是可以被暴力破解的只要攻击者有足够强大的计算能力和时间所以断定一个系统是否存在暴力破解漏洞其条件也不是绝对的。我们说一个web应用系统存在暴力破解漏洞一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略导致其被暴力破解的“可能性”变的比较高。2、基于表单的暴力破解 条件用户没有任何安全验证可直接抓包进行暴力破解。3、验证码绕过 验证码绕过on server验证码校验在服务端完成但是验证码存在时效性这个时候我们可以在这个时效内进行抓包实现短时间内的验证码绕过。 验证码绕过on client在前端进行验证码的校验这个时候驶入正确的验证码提交进行抓包后我们通过修改密码和账号发现我们不需要再对验证码进行修改从而绕过了验证码实现暴力破解。4、token防爆破 由于token值输出在了前端的源码中容易被获取因此也就失去了防爆破的意义。我们可以在每次暴力破解的过程中获取到前端页面生成的token的值从而实现暴力破解。5、安全策略 1.是否要求用户设置复杂的密码 2.是否每次认证都使用安全的验证码想想你买火车票时输的验证码或者手机app 3.是否对尝试登录的行为进行判断和限制如连续5次错误登录进行账号锁定或IP地址锁定等 4.是否采用了双因素认证二、XSS1、基本概念和原理介绍跨站点脚本攻击指攻击者通过篡改网页嵌入恶意脚本程序在用户浏览网页时控制用户浏览器进行恶意操作的一种攻击方式。Cross-Site Scripting 简称为“CSS”为避免与前端叠成样式表的缩写CSS冲突故又称XSS。一般XSS可以分为如下几种常见类型 1.反射性XSS交互的数据一般不会被存在在数据库里面一次性所见即所得一般出现在查询 2.存储型XSS交互的数据会被存在在数据库里面永久性存储一般出现在留言板注册等页面。 3.DOM型XSS不与后台服务器产生数据交互是一种通过DOM操作前端代码输出的时候产生的问题一次性也属于反射型。形成原因形成xss漏洞的主要原因是程序对输入输出的控制不够严格导致“精心设计”的脚本输入后在输出到前端时被浏览器当作有效代码执行从而产生危害。2、跨站脚本漏洞测试流程1在目标站点上找到输入点比如查询接口留言板等。2输入一组特殊字符唯一识别字符点击提交后查看返回的源码是否有做对应的处理。3通过搜索定位唯一字符结合唯一字符前后语法确认是否可以执行js的条件构造闭合。4提交构造的脚本代码以及各种绕过姿势看是否可以成功执行如果成功执行则说明存在现在xss漏洞TIPS1一般查询接口容易出现反射型xss留言板容易出现存储型xss2由于后台可能存在过滤措施构成的script可能会被过滤掉二无法生效或者环境限制了执行浏览器。3通过变化不同的script尝试绕过后台过滤机制。3、安全策略1输入时严格过滤单引号双引号尖括号。 记住一点不要相信任何输入的内容。例如用户名只能以字母和数字组合手机号码只能有 11 位且全部为数字否则即为非法。这些格式检查类似于白名单效果限制输入允许的字符让一下特殊字符的攻击失效。2输出时对单引号双引号尖括号等转化为HTML实体。三、csrf1、原理 CSRFCross-Site Request Forgery跨站点伪造请求是一种网络攻击方式该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点从而在未授权的情况下执行在权限保护之下的操作具有很大的危害性。2、如何确认一个web系统纯在CRSF漏洞1对目标网站增删查改的地方进行标记并观察其逻辑判断是否可以被伪造–比如修改管理员账号时并不需要验证旧密码导致请求容易被伪造–比如对于敏感信息的修改并没有使用安全的token验证导致请求容易被伪造2确认凭证的有效日期这个问题会提高CRSF被利用的概率–虽然退出并关闭了浏览器但cookie仍然有效或者session并没有及时过期导致CRSF攻击变的简单。3、防御措施1验证HTTP Referer字段2在请求地址中添加token并验证后端生成token发送到前端前端提交到后端在进行验证。3在HTTP头中自定义属性并验证4在服务端区严格区分好POST与GET的数据请求建议不要使用GET请求进行持久性操作5使用验证码或者密码确认方式进行四、SQL注入1、概述2、形成原因什么是SQL注入攻击攻击者在HTTP请求中注入恶意的SQL代码服务器使用参数构建数据库SQL命令时恶意SQL被一起构造并在数据库中执行。用户登录输入用户名 lianggzone密码 ‘ or ‘1’’1 如果此时使用参数构造的方式就会出现select * from user where name ‘lianggzone’ and password ‘’ or ‘1’‘1’不管用户名和密码是什么内容使查询出来的用户列表不为空。如何防范SQL注入攻击使用预编译的PrepareStatement是必须的但是一般我们会从两个方面同时入手。Web端1有效性检验。2限制字符串输入的长度。服务端1不用拼接SQL字符串。2使用预编译的PrepareStatement。3有效性检验。(为什么服务端还要做有效性检验第一准则外部都是不可信的防止攻击者绕过Web端请求)4过滤SQL需要的参数中的特殊字符。比如单引号、双引号。五、RCE1、RCE(remote command/code execute)概述RCE漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或者代码从而控制后台系统。远程系统命令执行 一般出现这种漏洞是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。 比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面用户从web界面输入目标IP提交后后台会对该IP地址进行一次ping测试并返回测试结果而如果设计者在完成该功能时没有做严格的安全控制则可能会导致攻击者通过该接口提交“意想不到”的命令从而让后台进行执行从而控制整个后台服务器。 比如127.0.0.1 ipconfig 现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过自动化运维平台进行操作。在这种平台上往往会出现远程系统命令执行的漏洞,不信的话现在就可以找你们运维部的系统测试一下,会有意想不到的收获。shell_exec() 用于执行用户传输的命令远程代码执行 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。 因此如果需要给前端用户提供操作类的API接口一定需要对接口输入的内容进行严格的判断比如实施严格的白名单策略会是一个比较好的方法。eval() 用于执行用户传输的代码六、文件包含漏洞1、概述 文件包含是一个功能。在各种开发语言中都提供了内置的文件包含函数其可以使开发人员在一个代码文件中直接包含引入另外一个代码文件。 比如 在PHP中提供了 include(),include_once() require(),require_once() include和require语法是相同的除了错误处理方面require会生成指明错误E_COMPLIE_ERROR并停止脚本include只会生成警告E_WARNING并且脚本会继续 这些文件包含函数这些函数在代码设计中被经常使用到。 大多数情况下文件包含函数中包含的代码文件是固定的因此也不会出现安全问题。但是有些时候文件包含的代码文件被写成了一个变量且这个变量可以由前端用户传进来这种情况下如果没有做足够的安全考虑则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行从而造成恶意操作。根据不同的配置环境文件包含漏洞分为如下两种情况 **1.本地文件包含漏洞**仅能够对服务器本地的文件进行包含由于服务器上的文件并不是攻击者所能够控制的因此该情况下攻击着更多的会包含一些固定的系统配置文件从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞从而形成更大的威力。 防护措施设置白名单if函数用||的方式设置 **2.远程文件包含漏洞**能够通过url地址对远程的文件进行包含这意味着攻击者可以传入任意的代码这种情况没啥好说的准备挂彩。因此在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数如果非要这么做也一定要做严格的白名单策略进行过滤。 前提需要php.ini配置如下allow_url_fopen on //默认打开Allow_url_include on //默认关闭 危害可直接传输比如一句话木马等文件导致客户机被控制。2、防范措施1在功能设计上尽量不要将文件包含函数对应的文件放给全段进行选择和操作2过滤各种…/…/, http:// , https://3配置php.ini配置文件 allow_url_fopenoff allow_url_includeoff magic_quotes_gpcon //gpc在4通过白名单策略进允许包含运行指定的文件其他的都禁止七、不安全的文件下载和文件上传1、文件下载 很多网站都会提供文件下载的功能即用户可以点击下载链接下载到链接所对应的文件。但是如果文件下载功能不当则可能导致攻击者可以通过构造文件路径从未获取到后台服务器上的其他敏感文件又称任意文件下载。防范措施1对传入的文件名进行严格的过滤和限定2对文件下载的目录进行严格的限定2、文件上传因为业务功能需求很多web站点都有文件上传的接口比如1注册时上传头像图片比如jpgpnggif等2上传文件附件docxsl等而在后台开发时并没有对文件上传的文件功能进行安全考虑或者采用了有缺陷的措施导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件如一句话木马。从而通过对该恶意文件的访问来控制整个web后台。3、文件上传漏洞测试流程1对文件上传的地方按照要求上传文件查看返回结果路径提示等2尝试上传不同类型的恶意文件比如xx.php文件分析结果3查看html源码看是否通过js在前端做了上传限制可以绕过4尝试使用不同的方式进行绕过黑白名单绕过/MIME类型绕过/目录0x00截断绕过等5猜测或者结合其他漏洞比如敏感信息泄露得到木马路径连接测试防范措施1不在前端使用js实施上传策略2通过服务器对文件上传进行限制进行多条组合检查比如文件的大小路径拓展名文件类型文件完整性或者设置文件后缀白名单。对上传的文件在服务器存储是进行重命名指定合理的命名规则对服务器上传文件的目录进行权限控制比如只读限制执行去权限带来的危害。八、越权漏洞 由于没有对用户权限进行严格判断导致低权限的账户比如普通用户可以去完成高权限账号比如超级管理员范围内的操作。1、水平越权 A用户和B用户属于同一级别用户但各自不能操作对方个人信息A用户如果越权操作B用户的个人信息的情况称为平行越权操作。2、垂直越权 A用户权限高于B用户B用户越权操作A用户权限的情况称为垂直越权。3、修复建议验证一切来自客户端的参数重点是和权限相关的参数比如用户ID或者角色权限ID等。session ID 和认证的token做绑定放在服务器的会话里不发送给客户端。对于用户登录后涉及用户唯一信息的请求每次都要验证检查所有权敏感信息页面加随机数的参数防止浏览器缓存内容。把程序分成匿名授权和管理的区域通过将角色和数据功能匹配。不适用参数来区分管理员和普通用户。九、PHP反序列化1、序列化serialize()序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:class S{ public $testpikachu; } $snew S(); //创建一个对象 serialize($s); //把这个对象进行序列化 序列化后得到的结果是这个样子的:O:1:S:1{s:4:test;s:7:pikachu;} O:代表object 1:代表对象名字长度为一个字符 S:对象的名称 1:代表对象里面有一个变量 s:数据类型 4:变量名称的长度 test:变量名称 s:数据类型 7:变量值的长度 pikachu:变量值2、反序列化unserialize()就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。$uunserialize(O:1:S:1:{s:4:test;s:7:pikachu;}); echo $u-test; //得到的结果为pikachu常见的几个魔法函数: __construct()当一个对象创建时被调用 __destruct()当一个对象销毁时被调用 __toString()当一个对象被当作一个字符串使用 __sleep() 在对象在被序列化之前运行 __wakeup将在序列化之后立即被调用 漏洞举例: class S{ var $test pikachu; function __destruct(){ echo $this-test; } } $s $_GET[test]; $unser unserialize($a); payload:O:1:S:1:{s:4:test;s:29:scriptalert(xss)/script;}十、xee漏洞1、概述“xml外部实体注入漏洞”。 概括一下就是攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。2、防范措施 1.使用开发语言提供的禁用外部实体的方法 2.过滤用户提交的XML数据 关键词!DOCTYPE和!ENTITY或者SYSTEM和PUBLIC。十一、ssrf漏洞1、概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。利用拥有权限的服务器对没有权限的服务器进行攻击。2、防护措施 1、过滤返回的信息如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。 2、统一错误信息避免用户可以根据错误信息来判断远程服务器的端口状态。 3、限制请求的端口比如80,443,8080,8090。 4、禁止不常用的协议仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp://等引起的问题。 5、使用DNS缓存或者Host白名单的方式。十二、目录遍历…/…/1、概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量从而让前端的功能便的更加灵活。当用户发起一个前端的请求时便会将请求的这个文件的值(比如文件名称)传递到后台后台再执行其对应的文件。在这个过程中如果后台没有对前端传进来的值进行严格的安全考虑则攻击者可能会通过“…/”这样的手段让后台打开或者执行一些其他的文件。从而导致后台服务器上其他目录的文件结果被遍历出来形成目录遍历漏洞。十三、敏感信息泄露 由于后台人员的疏忽或者不当的设计导致不应该被前端用户看到的数据被轻易的访问到。 比如 —通过访问url下的目录可以直接列出目录下的文件列表; —输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息; —前端的源码html,css,js里面包含了敏感信息比如后台登录地址、内网接口信息、甚至账号密码等; 类似以上这些情况我们成为敏感信息泄露。十四、url重定向1、概述 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生跳错对象的问题。2、危害–钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站。3、预防措施白名单限制目录可以直接列出目录下的文件列表; —输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息; —前端的源码html,css,js里面包含了敏感信息比如后台登录地址、内网接口信息、甚至账号密码等; 类似以上这些情况我们成为敏感信息泄露。十四、url重定向1、概述 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生跳错对象的问题。2、危害–钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站。3、预防措施白名单限制网络安全需要学习那些知识网络安全零基础入门学习路线规划初级1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线视频配套资料国内外网安书籍、文档工具当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。一些我自己买的、其他平台白嫖不到的视频教程要学习网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】