信息安全学习总结

信息安全学习攻略


信息安全 学习

(很久以前的随笔,内容简单,且大部分过时了,建议别看,更新内容在其它平台)
建议安装 KALI 来入门,建议做 CTF 题目,建议了解基础计算机相关知识,建议去漏洞平台、公益 src 提交漏洞。
二进制方向建议看 CTF-All-In-One 《CTF 竞赛入门指南》,它和本文的最终目标形态相近。

帮助:
CTF-All-In-One 《CTF 竞赛入门指南》
Web安全学习笔记
狼组安全团队公开知识库
愿安全人不在踩坑,网络安全的学习经验
安全技能 -SecWiki
phith0n Mind-Map思维导图
信息安全从业者书单推荐
书栈网 · BookStack_开源编程书籍免费阅读
网络安全开放编辑电子版教材
bmjoker的博客

论坛:
FreeBuf网络安全行业门户
i 春秋 —— 白帽子技术/思路
EXPLOIT DATABASE

CTF 平台:
在线CTF平台
近期赛程

靶场:
待补充······
在线漏洞靶场
vulnhub

漏洞平台:
漏洞盒子 —— 公益 src
教育行业漏洞报告平台 —— 上交大
hackerone

坑:

  1. 打ctf 时有时flag不会显示到网页上,但在 html, Javascript 源代码等地方,所以有时觉得操作没错但是没反应,可以全局搜索是否有flag。全局搜索办法:打开浏览器开发人员工具 devtools,选中“源代码”项,右键“页面”项中的文件夹,就可以全局搜索。
  2. 在burpsuite的repeater里GET请求和POST请求互换时,右键选择change request method来更换,自己修改会可能会忘记编辑名为Content-Type的请求头导致无正确响应。参考:POST 提交数据的几种方式
  3. URL 如果带加号“+”,由于浏览器会将 “+” 等同于空格进行处理,有时会导致意料外的结果。如:http://ipaddress/redirect.php?url=1+2,这里的结果变成了1 2或为空,所以测试时基本都使用减号而不使用加号,如 ?url=5-3,得到结果 2,说明这里可以注入执行命令。如果一定要用加号,可以使用编码 %2B

注:标注 参考 的是参考资料,不一定有用,标注 帮助 的是个人认为对学习人员有一定帮助的,且内容一般各有不同之处。


准备工作

Kali Linux 环境准备

建议使用虚拟机安装 kali,具体参考帮助里的链接。

帮助:
获取kali linux
安装kali linux后的准备工作
Kali Linux 工具使用中文说明书

Windows 环境准备

安装 Python 等语言环境, 称心的 IDE, Burpsuite Pro, Wireshark 等
一些工具安装见文章后半部。

Android 环境准备

如果资源充足,也可以尝试将手机打造成安全工具。
无需 root 的步骤:

  1. 浏览器搜索并安装 F-Droid 开源软件市场。
  2. 在 F-Droid 中搜索 Termux 并安装最新版。Termux 是运行在 Android 上的 命令行终端,不需要root。
  3. 参考 Termux 高级终端安装使用配置教程 等进行 Termux 的配置,自选一些安全工具安装,如 安装 Kali NetHunter 等。
  4. F-Droid 软件市场中有一个 RSS 订阅软件 Feeder,可以添加一些安全相关的 RSS 订阅源,跟踪最新的安全咨询。

基础知识

常见的重要配置文件默认位置

待补充中······
参考:整理了一些下载利用文件

Linux:

  1. /etc/passwd 保存了系统中所有的用户信息
  2. /etc/shadow 用户的密码信息
  3. /root/.ssh/authorized_keys 公钥文件
  4. /root/.bash_history 用户终端操作历史记录
  5. /root/.ssh/authorized_keys
    /root/.ssh/id_rsa
    /root/.ssh/id_ras.keystore
    /root/.ssh/known_hosts //记录每个访问计算机用户的公钥
  6. /etc/my.cnf //mysql配置文件
  7. /etc/httpd/conf/httpd.conf //apache配置文件
  8. /root/.bash_history //用户历史命令记录文件
  9. /root/.mysql_history //mysql历史命令记录文件
  10. /proc/mounts //记录系统挂载设备
  11. /porc/config.gz //内核配置文件
  12. /var/lib/mlocate/mlocate.db //全文件路径
  13. /porc/self/cmdline //当前进程的cmdline参数

参考:
Linux重要配置文件
系统重要配置文件路径

Windows:

  1. /windows/win.ini 或 C:\Windows\win.ini //Windows系统的一个基本系统配置文件
  2. C:\boot.ini //查看系统版本
  3. C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
  4. C:\Windows\repair\sam //存储系统初次安装的密码
  5. C:\Program Files\mysql\my.ini //Mysql配置
  6. C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
  7. C:\Windows\php.ini //php配置信息
  8. C:\Windows\my.ini //Mysql配置信息

PHP:

  1. /usr/local/php/etc/php.ini

Apache:

  1. 主配置文件:/etc/httpd/conf/httpd.conf
  2. 默认站点主目录:/var/www/html/
    参考:Apache的主要目录和配置文件详解

MySQL:

  1. /etc/my.cnf 或 /etc/mysql/my.cnf 于 Linux环境下
  2. my.ini 于Windows环境下

帮助

帮助:
常用和不常用端口一览表收藏
端口号大全
黑客常用端口利用总结
常见各类端口漏洞
HTTP 响应状态码


Web

要学习的内容:

目录:

  1. file upload 文件上传漏洞
  2. local file include 本地文件包含漏洞
  3. xss 跨站脚本攻击
  4. csrf 跨站请求伪造
  5. ssrf 服务端请求伪造
  6. ssti 服务器端模板注入
  7. sql 注入
  8. 反序列化
  9. 未授权访问
  10. 源码泄露
  11. 爆破
  12. XML External Entity injection
  13. 综合练习

文件上传漏洞(file upload)

题目:

  1. BUU Upload-Labs-Linux 系列共20关
    解答:
    Upload-labs 通关笔记 - 20关
    upload-labs通关记录 - 19关
    upload-labs闯关笔记 - 18关
    upload-labs Pass-12:文件名检测00截断绕过
    upload-labs Pass 16:绕过图片二次渲染
    注:第6、8题需要服务器是window环境,似乎是因为服务器换了linux。第11、12题需要php版本小于5.3.4,这里服务器php版本是7.2.21。
  2. 待补充

首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径。
其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞。
最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。
所以导出下列防御措施:

防御:

  1. 文件上传的目录设置为不可执行
  2. 使用白名单判断文件类型,应综合使用MIME Type、后缀校验等方式,对于图片等类型可以使用压缩函数等破坏文件中的代码。
  3. 随机数重命名文件名和文件路径。
  4. 单独设置文件服务器域名,由于浏览器同源策略,客户端攻击将缓解不少,如上传包含 Javascript 的XSS利用,但这需要看具体业务情况。

阿里云盘上传的文件无法修改后缀名,不知是否是出于防御文件上传漏洞的因素(如上传后重命名为 *.mp4、等 )。但是以前可以抓包修改后缀名,所以以前可能有漏洞。

帮助:
HTTP文件上传原理
一句话木马 - 介绍不好,待换
php一句话木马 - 待换
php文件上传后缀与文件类型对照表
php文件隐藏,让别的后缀也能执行php文件
几种文件上传漏洞介绍

本地文件包含漏洞(Local File Include)

  1. 题目:LFI Labs
    解答:
  2. 题目:[HCTF 2018]WarmUp
    解答:

XSS跨站脚本攻击(Cross Site Scripting)

题目:

  1. BUU XSS-Lab
    解答:
    xss-labs通关大合集
    xss-labs 通关学习笔记
    xss靶场之xss-labs
    第14关 exif xss 复现
    xss-labs第1~13关
  2. BUU XSS COURSE 1
    解答:似乎有问题,没有admin用户的访问情况
    BUU_XSS_Course
    BUU XSS COURSE 1

防御:

  1. 关键cookie加上HttpOnly(浏览器将禁止Javascript访问带有HttpOnly属性的Cookie),基本解决Cookie劫持,缓解XSS攻击。
  2. 输出时检查,变量输出到页面时,使用编码或转义,如Html代码使用HtmlEncode转为HTMLEntities(如 < 转为 &lt;),Javascript使用JavascriptEncode并将输出的变量放在引号内部(如var x = “1; alert(1)”;)。
  3. 输入时检查,XSS Filter,也用于格式检查,过滤或编码特殊字符,但可能改变用户的语义。

帮助:
ISO/IEC 8859-1 实体名称及其编号
HTML转义字符大全
XSS 从零开始
XSS绕过WAF姿势总结
XSS之绕过简单WAF总结

课外阅读:
国内知名安全平台某BUF的xss漏洞 —— dom 型 js 前端漏洞
利用BeEF执行xss攻击 —— 注意是运行 /usr/share/beef-xss/beef
XSS 漏洞扫描工具 XSStrike

CSRF跨站请求伪造(Cross Site Request Forgery)

题目:
1.

防御:

  1. 重要操作要求验证码(辅助防御手段)
  2. 验证 HTTP Referer 字段(不一定能获取,所以只能作为监控手段);或者使用 Origin 头来让服务端判断请求是否来自合法的源(不那么容易伪造或清空,可防范CSRF)
  3. 在请求表单(或AJAX,如果用GET放在URL中可能被Referer头泄露)中添加 csrf token ( 注意,不是 JWT token ),服务器验证 token 正确性;客户端的 token 应该被保存到 local storage 或 session storage (一般是 session,关闭页面即失效)。

帮助:
关于 CSRF 和 csrftoken
什么是 CSRF 攻击?如何防御 CRSF 攻击?
CSRF、Cookie、Session和token之间不得不说得那些事儿

SSRF服务器端请求伪造(Server-Side Request Forgery)

攻击者伪造服务端的请求发起攻击,或者借由服务端为跳板来攻击目标系统,通常针对外部网络无法直接访问的内部系统。

协议利用:
gopher 协议初探
SSRF漏洞用到的其他协议(dict,file协议)
Dict 协议是什么

防御:

  1. 过滤返回信息。验证远程服务器对请求的响应是比较容易的方法,如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  2. 禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///, gopher://, ftp:// 等引起的问题
  3. 统一错误信息。避免用户可以根据错误信息来判断远端服务器的端口状态。
  4. 限制请求的端口。只允许 http 常用的端口,比如 80、443、8080 等。
  5. 设置 URL 白名单或者限制内网IP
  6. 对 DNS Rebinding,可以使用 DNS 缓存或者 Host 白名单
  7. 禁止跳转

帮助(以下链接都有必要看):
浅谈SSRF原理及其利用
SSRF — Web安全学习笔记 1.0 文档 —— 给出了可能的利用点列表
了解SSRF,这一篇就足够了
Web Security 之 SSRF —— Blind SSRF 和 隐藏攻击面 Referer 头
SSRF绕过
SSRF安全指北 —— 介绍了新型攻击手法,利用 tls 进行 ssrf

参考:服务器端请求伪造——SSRF

SSTI 服务器端模板注入(Server-Side Template Injection)

帮助:SSTI(模板注入)漏洞

SQL注入

题目:

  1. 攻防世界NewsCenter
    解答:学习sqlmap用法
  2. 攻防世界supersqli[强网杯 2019]随便注
    解答:学习堆叠注入等,此题如果用sqlmap只能爆出库名supersqli
    随便注write up
    随便注&[GYCTF2020]Blacklist -wp
  3. 攻防世界comment
    解答:学习换行注释,注:题目下载的内容可能是不完整的,看下面链接。
    攻防世界高手进阶之Web comment
  4. BUU sqli-labs

防御:

  1. 使用预编译语句
  2. 使用安全的储存过程
  3. 如果无法避免动态SQL语句,应使用严格的输入过滤,如检查输入数据的数据格式和类型,或者使用安全的编码函数处理输入
  4. 数据库应该遵循最小权限原则,也应该为每个应用分配不同的账户。

帮助:
深入理解SQL注入与预编译(上)
深入理解SQL注入与预编译(下)
sqlmap常用操作命令
sqlmap使用

反序列化漏洞

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

反序列化漏洞是基于序列化和反序列化的操作,在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作例如eval()函数,而且参数是通过反序列化传入的,那么用户就可以通过改变参数来执行敏感操作,这就是反序列化漏洞。

帮助:
反序列化漏洞详解 —— 以 PHP 为例
一篇文章带你了解反序列化漏洞

参考:
浅析FastJSON反序列化漏洞(1.2.24——1.2.68)
从防护角度看Weblogic反序列化历史漏洞
深入利用Shiro反序列化漏洞
Shiro反序列化漏洞利用汇总
Shiro反序列化漏洞

未授权访问漏洞

帮助:
常见未授权访问漏洞总结
超全面未授权访问漏洞复现合集

源码泄露

帮助:
WEB安全-常见源码泄露

git源码泄露

题目:

  1. 攻防世界mfw
    解答:攻防世界-Web-mfw

帮助:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值