国光的 Flag 记录打开情况
国光的前端感觉一直就是个半吊子水平,除了会审查元素用一用 Boostrarp 框架之外,让我纯手工使用 HTML、JS、CSS 写出一个精美的界面我是做不到的,另外这几年来前后端分离开发技术很火,所以 Vue 之类的框架也需要来学习,另外 JS 基础语法虽然可以看懂,但是深层次的 JS 也是目前的知识盲区。
Linux 虽然用的比较多,但是没有深入学习过,有时间希望自己可以静下来读完鸟哥的 Linux 私房菜这类书籍中的一本。
PHP 是因为接触 CTF 比赛的时候学习的比较多,前端时间为了给客户培训 PHP 相关方面的漏洞,特地看了好几天的 PHP 手册,感觉受益匪浅,但是还是有一些盲区的,比如大型项目的代码审计,以及一些带框架的项目审计:
曾经做过半年左右的漏扫开发,也在那个时候受同事buzz的影响开始认真学习 Python,从一个 Python 半吊子水平变成一个稍微入门的人了。后面从南邮毕业写了那个毕设项目,自己又自学了 Django,感觉 Python 这块实际上掌握勉强及格了,但是由于做安全写代码比较少,所以目前来看我的 Python 编码水平又有所下降,看来不能闲着啊。
JAVA 就是国光我的薄弱项了,后悔当初上大学的时候没有好好学习 JAVA,虽然曾经也使用过 JAVA 的 Spring 开发过项目,但是过去了这么久了,感觉现在都忘得一干二净了,所以 JAVA 这块得重新学习了。
虽然大一就学习过 C 语言,但是目前水平也只是过国家计算机二级的水平,这个水平等于没学,所以 C 语言和 C ++ 以后希望有时间来学习一下,因为红队 Windows 免杀这块很吃这方面的基本功,
学习 SQL 注入大多从 MySQL 学起,因为 MySQL 搭建起来很方便,而且也常和 PHP 配合使用,所以基础的 MySQL 语法是要掌握的,否则后面的 UNION SELECT 联合查询注入和布尔类型的盲注、延时类型的盲注学起来就比较吃力了。国光个人感觉常规的 MySQL 手工注入已经没有短板了,除了异或注入这种了解的不多,但是像是 MSSQL、Oracle 数据库的注入的深度就不够,需要抓紧时间学习。还好自己当初把 SQLMap 手册翻完了,自认为对 SQLMap 的使用还算是可以的,不够有时候在 Oracle 这种数据库面前,SQLMap 无法注入出结果的时候,我就会很无从下手了。
感觉文件上传这一块姿势点比较好理解,刷完 uploads-lab 的话,基本姿势就掌握差不多了。
文件包含的话,基本上单独总结一下也是可以快速学习理解的,所以短板不多,但不代表没有。
XSS 目前刷完了几个靶场,感觉基础姿势掌握差不多了,另外也会一些基础的 Bypass 技巧,但是更深入的 Bypass 技巧缺乏整理
CSRF 的理解很喜欢余弦前辈的一句话:借“刀”杀人。这里的刀就是受害者的身份认证信息,拿到受害者的登录凭据信息理论上可以做任何受害者的操作,比如修改资料、修改密码等,如果受害者是高权限用户的话就可以做更多有危害的事情了。
反序列化目前也只掌握了 PHP 反序列化,PHP 反序列化重点实际上入门很简单,主要看完几个魔术方法的特性,然后追踪调用就可以了,但是在实战项目中挖到 PHP 反序列化难度即比较高了, POP 利用链梳理整理真是一个技术活。另外自己的 JAVA 反序列化也不是很熟
XXE 实际上当初学习的时候,网上实际上很少有深入讲解清除的,就比如很少有人说清楚 DTD 的作用。DTD 大家都知道起到 XML 约束规范的作用,但是具体是如何约束规范的呢?如果特意将 XML 语法改成不符合 DTD 规范还会报错吗?这些网上貌似都没有人尝试,导致国光我踩了很多坑,实际上 DTD 验证作用对浏览器要求很高,基本低版本的 IE 浏览器都可以复现成功。另外 PHP的 libxml 版本高于 2.9.0 也会导致远程 DTD 加载不会很顺利,现在 PHP 的 linxml 版本基本上都过高了,要想复现很难,不过 vulhub 里面的那个环境的 libxml 是符合要求的。另外还有一个待实验的,就是 libxml 高于 2.9.0 版本的时候,真的就无法远程 DTD 调用了吗?国光我觉得这里还是值得一试的,理论上是有办法突破的。
SSRF 的实战场景不多,而且信息收集方面也具有局限性,如果 Redis 存在未授权访问漏洞的情况,SSRF 可以直接使用 DICT 协议发起攻击,这样效率最高,也可以使用 gopher 协议攻击,就是稍微要麻烦了一些。在 Redis 授权访问情况下,DICT 协议就 GG了,因为DICT 协议不支持多语句输入,导致密码无法被下一条语句记录,所以只能使用万能的 Gopher 协议了。另外使用 SSRF 攻击 MySQL 的时候,国光我复现一直都没有成功,找了赵今师傅帮忙看了下也没有成功,可能是我环境的问题,后面再单独花时间来整理一下,另外 DICT 协议可探测的端口范围也有待系统的整理(网上没有人整理过 DICT 可以探测的端口,实际上国光上次测试了发现只有很少的一部分端口才可以被探测到)。另外 SSRF 理论上可以攻击 FTP 等应用服务,这些都有待整理。
代码注入这一块在 PHP 中除了经典的 assert 和 eval 可以代码执行,还有很多回调函数都是可以代码执行的,代码审计的时候也要重点关注这些回调函数。另外 P 神文章里面说过早期的很多回调函数都是可以直接免杀的,但是目前大多数都不可以免杀的,国光我曾经翻阅 PHP 手册硬还是发现了一些可以过狗和过D盾的回调函数,关于代码注入这一块在实际的审计中并没有遇到过,可遇不可求呀,希望日后自己也可以审计出代码注入相关的高危漏洞。
命令执行的话主要是追踪类似于 system 之类的目录执行函数,实际上业务场景中主要就是活用命令连接符&;|之类的符号,还有一些基本的绕过方法,比如绕过空格等之类的技巧,还有命令执行无回显的情况下多半是配合编码然后 DNSLog 回显信息,或者更直接一点的就是直接反弹 shell 出来。当然还有一些极端情况下,就是命令执行限制了长度,一般这种情况下就是利用 ls 写入文件,然后最后 bash 执行的思路来,这里是比较灵活的。在很多 Linux 服务器上一般安装的是 Redhat 系统,这样不仅可以使用 bash 命令执行写文件,也可以利用服务器自带的 Python 或者 Ruby 来写文件,写文件最好还是编码,这样很多情况下可以过一些 WAF 查杀。说道这里,听做红队免杀的朋友提到过这样的思路,使用 Python 的 request 加载 payload 很多情况下可以免杀,关于免杀后面日后再研究。
内网一直没有系统的学习过,年前买了一本内网安全的书籍,发现里面域环境搭建这里太过于形式,所以后面就单独找了网上 Windows 运维的教程来学习了,不过后面其他事情内网那本书就搁置了。
还是有很多优秀的书籍值得去再品一品的,下面列举一些未来国光打算看的书籍。
书有点多,先不加了,等后面遇到感觉可以的书再补充
这个版块上面 Flag 的完成情况。