国光的安全随笔记录

国光我从 15 年开始接触到信息安全到现在已经快 5 年了,但是总感觉自己的成长速度太慢了,也亲眼看着后辈们从小菜鸡快速地成长为比自己还要厉害的大佬,越发感叹信息安全行业里面真的是“逆水行舟,不进则退!”啊。特此写下此文记录一下心路历程,希望可以督促自己不断学习,不忘初心。

随笔

国光最后悔的事情就是大学期间没有认真静下来学习编程。我的大学专业是软件工程专业,因为当初比较叛逆非要自学信息安全,学校上的编程类的课程都不是很重视,比如:数据结构、算法、高数之类的,当初天真的认为做安全的不需要学编程,只需要如何掌握攻击就可以了,现在看来这是一个很错误的选择。

后面工作接触了不少从程序猿转安全的大牛,他们有的学习安全才不到 1 年,但是掌握的姿势并不比我这种搞了很多年的要差,编程功底扎实真的可以在安全的路上走的很远很长。而很多搞安全的人大多比较浮躁,难以静下心来学习代码。圈子里面一个有趣的现象:搞二进制的大多数是学霸,搞 Web 的大多都挂科(我的偶像画船听雨甚至还因为挂科被迫留了一级 =,= ),更加佐证了 Web 安全太杂,学时间长了会让人很浮躁。所以我后面把博客的标语换成了:“宁静致远” ,这也是 Kali Linux 那句英语直译过来的意思。

另外后悔的事情是打了 2 年的 OpenStack 云计算比赛,实际上当初学习的 OpenStack 云计算姿势在工作中并用不到,虽然看上去是一个比较高大上的技术,但是如果一个技术用不到的话,那么学习起来就是弯路,因为计算机世界中有太多的知识要去学习探索,人的精力有限,得把时间放在更有意义的事情上面。

还有自己曾经也比较沉迷黑苹果,结果身边的朋友们一个个都换了 MBP 了,自己还是停留在黑苹果的状态,虽然最后我自己也入手了 MBP 了,但是现在看来当初通宵研究黑苹果真的是一种很傻的行为,实际上淘宝上花个 100 元左右的费用完全可以安全全套的,为啥自己要去从零开始学习这个没有用的技术呢?

后面在 Python 的面向对象的思想中也更加证实了这个理论,当初讲师举的例子是:如果你想吃啤酒烤鸭,面向过程的人呢会怎么做?他们会去买一只小鸭子,然后亲自养大,当鸭子长大后再去学习烹饪技术,最后历尽千辛万苦终于吃上了啤酒烤鸭(当然还可能烹饪技术不过关,导致食物中毒…)。而此时一个面向对象的思想的人,会直接来到啤酒烤鸭店,直接向老板 new 了一份啤酒烤鸭,然后坐等上桌就 OK 了。这样看来当初自己研究黑苹果的技术真的很傻,我国光又不指望靠这个黑苹果装系统赚钱(而且也赚不了什么钱),从零开始学这个真的是毫无乱用啊!!!

最后还有一些后悔的事情,比如国光我的博客经常更新一些水文,有些水文还是很消耗时间的,比如全站浏览量最高的 Termux 文章,这个 Termux 实际上对于玩过 Linux 的朋友来说,完全不需要学习啊,直接上手就可以了,而我却长篇大论硬是写了这么多,这个世界小白太多了,我没有这个义务去手把手教会他们,所以以后更新文章一般不会再更新一些保姆级的教程了,因为真的没有必要,很多情况下只需要提供一个思路完全就 OK 了。另外国外抄袭风气还很严重,直接抄袭白嫖不标明出处的我也见了太多太多了,你的文章写的很好,可惜下一秒就是我的了。

吐槽了这么多,总的概况一下就是:不要学习折腾一些无关紧要的技术,时间很宝贵,得花在更有意义事情上面。

技能

前端

国光的前端感觉一直就是个半吊子水平,除了会审查元素用一用 Boostrarp 框架之外,让我纯手工使用 HTML、JS、CSS 写出一个精美的界面我是做不到的,另外这几年来前后端分离开发技术很火,所以 Vue 之类的框架也需要来学习,另外 JS 基础语法虽然可以看懂,但是深层次的 JS 也是目前的知识盲区。

  • HTML、CSS、JS 基础
  • Boostrap 框架使用
  • Vue
  • NodeJS
  • React
  • JS 进阶知识学习
  • NodeJS 项目编写

Linux

Linux 虽然用的比较多,但是没有深入学习过,有时间希望自己可以静下来读完鸟哥的 Linux 私房菜这类书籍中的一本。

  • Linux 基础知识
  • Linux 进阶知识
  • Docker 基础使用
  • DockerFile 简单编写
  • DockerFile 深入理解
  • Docker-compose 项目编写
  • Dokcer-compose network 学习
  • 网络基础知识学习 类似于如何计算子网掩码这类的
  • Linux 权限维持
  • Linux 安全加固基础
  • Linux 安全加固进阶

PHP

PHP 是因为接触 CTF 比赛的时候学习的比较多,前端时间为了给客户培训 PHP 相关方面的漏洞,特地看了好几天的 PHP 手册,感觉受益匪浅,但是还是有一些盲区的,比如大型项目的代码审计,以及一些带框架的项目审计:

  • PHP 基础语法
  • PHP 数据类型、变量、常量
  • PHP 表达式、运算符、流程控制
  • PHP 函数
  • PHP 类与对象
  • PHP WebShell PHP5、PHP7 免杀
  • PHP 弱类型与变量覆盖整理
  • 中国蚁剑自定义编码器特征改造
  • 过 D 盾命令执行 WebShell
  • PHP 小型 CMS 代码审计
  • PHP 大型 CMS 审计
  • ThinkPHP 框架项目审计

Python

曾经做过半年左右的漏扫开发,也在那个时候受同事buzz的影响开始认真学习 Python,从一个 Python 半吊子水平变成一个稍微入门的人了。后面从南邮毕业写了那个毕设项目,自己又自学了 Django,感觉 Python 这块实际上掌握勉强及格了,但是由于做安全写代码比较少,所以目前来看我的 Python 编码水平又有所下降,看来不能闲着啊。

  • Python 基础语法
  • Python 函数
  • Python 对象
  • Python 多进程
  • Python 多线程
  • Python 协程
  • Python Web 框架 Django
  • Python Web 框架 Flask
  • Python 程序设计思想
  • Python Web 爬虫
  • Python Web 项目编写
  • Python 前后端分离项目编写

JAVA

JAVA 就是国光我的薄弱项了,后悔当初上大学的时候没有好好学习 JAVA,虽然曾经也使用过 JAVA 的 Spring 开发过项目,但是过去了这么久了,感觉现在都忘得一干二净了,所以 JAVA 这块得重新学习了。

  • JAVA 基础语法
  • JAVA 进阶语法
  • JAVA Web 开发
  • JAVA 主流框架学习
  • JAVA 安全漏洞学习
  • JAVA Web 代码审计

C/C++

虽然大一就学习过 C 语言,但是目前水平也只是过国家计算机二级的水平,这个水平等于没学,所以 C 语言和 C ++ 以后希望有时间来学习一下,因为红队 Windows 免杀这块很吃这方面的基本功,

  • C 基础语法
  • C 进阶语法
  • C ++ 基础语法
  • C ++ 进阶语法
  • C 算法练习
  • C 指针深入
  • C/C++ 小项目编写
  • C/C++ Windows 免杀

SQL 注入

学习 SQL 注入大多从 MySQL 学起,因为 MySQL 搭建起来很方便,而且也常和 PHP 配合使用,所以基础的 MySQL 语法是要掌握的,否则后面的 UNION SELECT 联合查询注入和布尔类型的盲注、延时类型的盲注学起来就比较吃力了。国光个人感觉常规的 MySQL 手工注入已经没有短板了,除了异或注入这种了解的不多,但是像是 MSSQL、Oracle 数据库的注入的深度就不够,需要抓紧时间学习。还好自己当初把 SQLMap 手册翻完了,自认为对 SQLMap 的使用还算是可以的,不够有时候在 Oracle 这种数据库面前,SQLMap 无法注入出结果的时候,我就会很无从下手了。

  • MySQL 基础语法
  • MySQL 相关函数
  • MySQL UNION 联合查询注入
  • MySQL 报错注入
  • MySQL 布尔类型盲注
  • MySQL 延时类型盲注
  • MySQL 堆叠注入
  • MySQL 二次注入
  • MySQL DNSLog 外带数据
  • MySQL 异或注入
  • MySQL 注入常规 Bypass 技巧
  • MySQL 注入进阶 Bypass 技巧
  • SQLMap 基础使用
  • SQLMap 进阶使用
  • SQLMap Tamper 编写
  • MSSQL 学习
  • Oracle 学习
  • MSSQL 注入深入理解
  • Oracle 注入深入理解

文件上传

感觉文件上传这一块姿势点比较好理解,刷完 uploads-lab 的话,基本姿势就掌握差不多了。

  • %00 截断
  • 非常规后缀绕过
  • .htaccess 解析绕过
  • 图片头效果
  • MIME 绕过
  • 前端绕过
  • 二次渲染绕过
  • 条件竞争绕过
  • multipart/form-data 绕过

文件包含/下载

文件包含的话,基本上单独总结一下也是可以快速学习理解的,所以短板不多,但不代表没有。

  • 文件包含原理
  • 本地文件包含突破后缀
  • 远程文件包含突破后缀
  • PHP 文件包含配合伪协议
  • 文件包含 Web 日志
  • 文件包含 Sessions
  • 文件包含 SSH 日志
  • 文件包含配合 phpinfo()
  • 文件包含配合系统 proc 进程
  • 文件包含 require_once 绕过

XSS

XSS 目前刷完了几个靶场,感觉基础姿势掌握差不多了,另外也会一些基础的 Bypass 技巧,但是更深入的 Bypass 技巧缺乏整理

  • XSS 基础靶场刷完
  • XSS 一般 Bypass 技巧
  • XSS 进阶 Bypass 技巧整理
  • XSS 配合 CSRF 攻击
  • XSS 配合反代钓鱼攻击
  • XSS 实战技巧整理
  • XSS HTTPonly Bypass 整理
  • XSS 靶场题目开发完善

CSRF

CSRF 的理解很喜欢余弦前辈的一句话:借“刀”杀人。这里的刀就是受害者的身份认证信息,拿到受害者的登录凭据信息理论上可以做任何受害者的操作,比如修改资料、修改密码等,如果受害者是高权限用户的话就可以做更多有危害的事情了。

  • CSRF 基础理论与实操
  • CSRF POC 优化方法整理
  • CSRF payload 实战技巧完善
  • CSRF 靶场开发
  • CSRF 实战案例收集整理
  • CSRF Bypass 技巧整理
  • CSRF 大型 SRC 与 XSS 配合挖掘

反序列化

反序列化目前也只掌握了 PHP 反序列化,PHP 反序列化重点实际上入门很简单,主要看完几个魔术方法的特性,然后追踪调用就可以了,但是在实战项目中挖到 PHP 反序列化难度即比较高了, POP 利用链梳理整理真是一个技术活。另外自己的 JAVA 反序列化也不是很熟

  • PHP 反序列化基础入门
  • PHP 所有魔术方法整理学习
  • PHP 反序列化靶场多场景搭建
  • PHP 复杂 POP 链练习
  • PHP 实战项目审计出反序列化漏洞
  • JAVA 反序列化入门
  • JAVA 反序列化姿势整理
  • JAVA 实战项目审计出反序列化漏洞

XXE

XXE 实际上当初学习的时候,网上实际上很少有深入讲解清除的,就比如很少有人说清楚 DTD 的作用。DTD 大家都知道起到 XML 约束规范的作用,但是具体是如何约束规范的呢?如果特意将 XML 语法改成不符合 DTD 规范还会报错吗?这些网上貌似都没有人尝试,导致国光我踩了很多坑,实际上 DTD 验证作用对浏览器要求很高,基本低版本的 IE 浏览器都可以复现成功。另外 PHP的 libxml 版本高于 2.9.0 也会导致远程 DTD 加载不会很顺利,现在 PHP 的 linxml 版本基本上都过高了,要想复现很难,不过 vulhub 里面的那个环境的 libxml 是符合要求的。另外还有一个待实验的,就是 libxml 高于 2.9.0 版本的时候,真的就无法远程 DTD 调用了吗?国光我觉得这里还是值得一试的,理论上是有办法突破的。

  • XML 基础知识
  • DTD 基础姿势
  • XXE 信息收集
  • XXE 配合伪协议 Base64 编码读取文件
  • XXE CDATA 读取特殊文件
  • JAVA XXE 靶场搭建
  • JAVA XXE 特殊姿势点整理
  • PHP XXE 无回显信息获取
  • 实战代码审计 XXE 漏洞挖掘
  • libxml 2.9.0 以上 远程DTD 调用
  • Python XXE 靶场搭建

SSRF

SSRF 的实战场景不多,而且信息收集方面也具有局限性,如果 Redis 存在未授权访问漏洞的情况,SSRF 可以直接使用 DICT 协议发起攻击,这样效率最高,也可以使用 gopher 协议攻击,就是稍微要麻烦了一些。在 Redis 授权访问情况下,DICT 协议就 GG了,因为DICT 协议不支持多语句输入,导致密码无法被下一条语句记录,所以只能使用万能的 Gopher 协议了。另外使用 SSRF 攻击 MySQL 的时候,国光我复现一直都没有成功,找了赵今师傅帮忙看了下也没有成功,可能是我环境的问题,后面再单独花时间来整理一下,另外 DICT 协议可探测的端口范围也有待系统的整理(网上没有人整理过 DICT 可以探测的端口,实际上国光上次测试了发现只有很少的一部分端口才可以被探测到)。另外 SSRF 理论上可以攻击 FTP 等应用服务,这些都有待整理。

  • SSRF 原理
  • SSRF file、Dict、gopher 协议
  • SSRF file 协议绕过
  • SSRF Dict 协议攻击 Redis
  • SSRF Dict 可探测端口系统整理
  • SSRF 攻击 Web 应用:SQL注入、命令执行
  • SSRF gopher 协议 攻击授权访问 Redis
  • SSRF 攻击未授权的 MySQL
  • SSRF 攻击 FTP 应用
  • SSRF 绕过技巧整理与对应场景靶场搭建

代码注入与命令执行

代码注入这一块在 PHP 中除了经典的 assert 和 eval 可以代码执行,还有很多回调函数都是可以代码执行的,代码审计的时候也要重点关注这些回调函数。另外 P 神文章里面说过早期的很多回调函数都是可以直接免杀的,但是目前大多数都不可以免杀的,国光我曾经翻阅 PHP 手册硬还是发现了一些可以过狗和过D盾的回调函数,关于代码注入这一块在实际的审计中并没有遇到过,可遇不可求呀,希望日后自己也可以审计出代码注入相关的高危漏洞。

命令执行的话主要是追踪类似于 system 之类的目录执行函数,实际上业务场景中主要就是活用命令连接符&;|之类的符号,还有一些基本的绕过方法,比如绕过空格等之类的技巧,还有命令执行无回显的情况下多半是配合编码然后 DNSLog 回显信息,或者更直接一点的就是直接反弹 shell 出来。当然还有一些极端情况下,就是命令执行限制了长度,一般这种情况下就是利用 ls 写入文件,然后最后 bash 执行的思路来,这里是比较灵活的。在很多 Linux 服务器上一般安装的是 Redhat 系统,这样不仅可以使用 bash 命令执行写文件,也可以利用服务器自带的 Python 或者 Ruby 来写文件,写文件最好还是编码,这样很多情况下可以过一些 WAF 查杀。说道这里,听做红队免杀的朋友提到过这样的思路,使用 Python 的 request 加载 payload 很多情况下可以免杀,关于免杀后面日后再研究。

  • eval 与 asset 总结
  • PHP 回调函数整理
  • PHP 回调函数免杀优化
  • JAVA 代码注入整理
  • Python 代码注入整理
  • Linux 下常用的命令连接符
  • Linux 下的执行命令的技巧整理
  • 命令执行 Bypass 技巧整理
  • 绕过宝塔的 disable_functions 命令执行限制
  • D 盾命令执行突破

内网

内网一直没有系统的学习过,年前买了一本内网安全的书籍,发现里面域环境搭建这里太过于形式,所以后面就单独找了网上 Windows 运维的教程来学习了,不过后面其他事情内网那本书就搁置了。

  • Windows 单域环境搭建
  • Windows 域树搭建
  • Windows 域林搭建
  • Windows 黄金、白银票据的理解
  • Windows 认证加密方式
  • MSF 基础使用
  • MSF 常用模块学习
  • MSF 内网穿透路由
  • CS 基础使用
  • CS 穿内网
  • CS 插件开发
  • CS 冷门功能模块
  • CS 常用功能模块
  • Payload 免杀
  • Powershell 深入学习
  • Covenant C2 学习使用
  • SILENTTRINITY C2 学习使用

书籍

还是有很多优秀的书籍值得去再品一品的,下面列举一些未来国光打算看的书籍。

  • Web 之困 现代 Web 应用安全指南
  • “安全参考”系列杂志
  • 内网安全攻防 渗透测试实战指南
  • XSS 跨站脚本攻击剖析与防御
  • 黑客命令行攻防实战详解
  • PHP Web 安全开发实战
  • 白帽子讲浏览器安全
  • 白帽子讲 Web 安全
  • 黑客攻防技术宝典 Web 实战篇
  • 黑客攻防技术宝典浏览器实战篇
  • 硬件安全攻防大揭秘
  • 诸神之眼 Nmap 网络审计技术解密
  • Web 安全攻防渗透测试实战指南
  • Web 安全开发指南
  • Web 攻防之业务安全实战指南
  • Windows 黑客编程技术详解
  • Windows 内核安全与驱动开发
  • Windows 内核原理与实现
  • Windows 内核情景分析 (上下册)
  • Wireshark 网络分析就这么简单
  • Web 应用安全权威指南
  • Kali Linux 大揭秘 深入掌握渗透测试平台
  • Python 安全编程项目实训教程
  • 云虚拟化安全攻防实践
  • 云计算开发与安全
  • 应急响应 网络安全的预防、发现、处置和恢复
  • 网络空间安全 拒绝服务攻击检测与防御
  • 物联网通信安全及解决方案
  • 局域网安全与攻防解密:基于 Sniffer Pro 实现
  • 机器学习互联网业务安全实践
  • 精通 Metasploit 渗透测试
  • 工业控制系统信息安全
  • 黑客攻防:实战加密与解密
  • 白帽子讲 Web 扫描
  • 云安全技术应用
  • 0day 安全:软件漏洞分析技术
  • 物联网安全理论与技术
  • Web 前端黑客技术揭秘
  • 渗透测试实战第三版红队版
  • Python 黑帽子黑客与渗透测试编程之道
  • Python 渗透测试编程技术方法与实践
  • Web 渗透测试与漏洞挖掘
  • .Net Core 实战 手把手教你掌握 380 个精彩案例
  • Windows PowerShell 实战指南
  • 恶意代码分析实战

书有点多,先不加了,等后面遇到感觉可以的书再补充

记录

这个版块上面 Flag 的完成情况。


文章作者: 国光
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 国光 !
 上一篇
CVE-2017-11882 Office RCE 复现 CVE-2017-11882 Office RCE 复现
这个 Office RCE 漏洞非常经典,在当时是通杀所有 Office 版本的,实际上在 17 年左右就有很多复现文章了(尴尬),只是国光我复现的太晚了,晚了 3 年…… 前言潜伏 17 年之久的Office远程代码执行漏洞(CVE-
2020-10-09
下一篇 
Xdebug+宝塔+PHPStudy+VScode PHP Xdebug+宝塔+PHPStudy+VScode PHP
上次写了篇 macOS 下优雅地配置 PHP 代码审计环境 里面主要讲解了使用 MAMP PRO 配合 PHPStorm 来进行代码审计,但是这个环境有点臃肿了,而且并不是很多人都用 macOS,所以本节主要介绍一下轻量级的代码审计环境的配
2020-09-07
  目录