lhosts@home:~$

  • 网络安全和编程开发和系统内部之间的博弈

    二进制漏洞挖掘,代码审计,web安全本质上的阶梯是对程序开发的理解,从而理解到其中的安全面,用以找出可被利用的点,执行攻击者想要执行的方向,如果这么来计算的话,在熟练掌握一门编程语言的情况下,通常需要两到三年,还是一门程序语言的情况下,如果能够把这种百分比折合到一起的话,其中的漏洞挖掘能力是随着掌握一门程序语言的熟练度来增长的,除此之外毫无办法,在系统层面的零合博弈的层面中,我们一直在别人画的圈子当中,跳来跳去的,比如说内网渗透,免杀,恶意软件分析,这类行为都在操作系统的内部进行分析,绕过,博弈的话,也都一直围绕着这类游戏规则进行着,在这种看待下,熟练的使用工具,攻击行为,也就是系统内部的博弈,非编程开发漏洞层面上的博弈,可以说是属于表层的攻击行为了,没有操作系统,各个协议软件,漏洞,那么这些行为也就都不存在。 而漏洞层面,也就是程序语言层面的设计,开发,语言的特性,以及它们的语法层面,都涉及了或多或少的漏洞边界,像php,javascript,python后端开发,node.js后端开发,java后端开发,ruby后端开发,c/c++二进制漏洞的利用,像我们所知,越熟悉一门编程语言,能够快速的熟知其他编程语言,同样,我们想深入掌握一门漏洞利用的手艺的时候,越熟悉一门编程语言也就越好,越快,也就漏洞利用的更加完美,但是现如今的信息爆炸的厉害,人们又容易产生焦虑情绪,不明白这类古老的艺术是不会变的,变的动态的可能只有时间吧。 我把我所有认知的内容进行抽象了出来,这类抽象行为让我觉得很是舒畅,再也不用像是类似死学的形式进行继续了。 这类抽象行为,像是把我本质的灵魂,计算机本质的灵魂进行抽离出来了,所有的攻击方向的本质还是要回归到计算机的本质,而计算机的本质,本质上就是编程语言,操作系统,网络协议,之类的集合体,当你要想要同时学习所有集合体的时候,那么你将会被学习的洪流所淹没,就像是在学网络安全的洪流一样,一门漏洞利用的漏洞就已经需要钻研很多年了,因为编程语言熟悉程度需要如此,而当你要同时操纵,掌握数门编程语言或者行为方向的时候,本质上已经从网络安全,延伸到正向掌握中了,这种行为,也是不可取的,按照非刻意行为行动来讲,熟悉一门操作系统行为需要数年时间,最少5年,而掌握一门编程语言最少也是3年,依照这类时间,其中的单个漏洞利用行为来算的话,至少需要一年的时间,而这一年的时间,掌握程度,是别人远远难以企及的,因为这后面是编程语言的三年在其中,理解程度,作为一个网络安全专家,熟知一门程序语言已然是逆天之举,同时熟知好些门,而且这些不同的编程语言结构上都有着不同的语法结构,如面向对象,脚本编程,编译语言,专门用以筛选日志数据节省生命的perl语言,lisp人工智能语言等,在开发上都是不可或缺的开发能力,而在熟知了这类程序语言之间的安全漏洞后,再进行熟知其他语言的安全的时候,自然而然的就能够归类到一起,毕竟这个世界上有许许多多不同的编程语言。 讲完编程语言,再来讲讲操作系统内的行为,免杀,恶意软件分析,内网渗透,都是工具层面上面的分析,行为层面上的折叠,在已有的,别人创造出来的世界层面中进行来回的横跳,绕过防火墙,ids,ips,edr,waf。 林林总总上面的方向很多,掌握其中一门语言中的一个漏洞,或者说一门语言中所有可能产生的漏洞来说已经要数年的时间去掌握了,只是这些方向都是不同的作用也都不一样,所以在掌握这些内容的时候要做好取舍。 行为层面上的很好操控,属于第二条线,而编程开发上的细致区分产生出来的漏洞行为则属于第一线行为,用第一线行为去支撑第二线行为,作为杠杆撬动整个系统,那么核心点就在于整个第一线行为中的某个漏洞,而第二线表像行为,则在整个攻击过程中是可有可无的,对于现在的我来讲。 第一线行为,需要在细致的程序中查找漏洞边界和漏洞行为,第二线行为则是需要多实战,在真实的环境中进行操控。 每次输出一点点,总结一点点,进步一丢丢。才能够让自己发现问题在哪里。从而找出,进行拟补。这不会是最后一篇文章,但会是个进步的阶梯。

  • web安全-xss漏洞1

    当我们获取到表单,数据输入输出流页面的时候,我们可以对xss漏洞进行探测,xss严格来说,分为四种xss,一种是反射型xss,一种是存储型xss,还有一种是dom类型xss,最后一种是self类型,自主弹框型xss. 我们使用以下靶场来进行xss的漏洞利用。 https://xss-game.appspot.com/ 第一关直接输入<script>alert(1)</script>,显示输出 第二关输入<img src=# onerror=alert(1)>, <script> 标签没有效果,显示输出. 第三关输入' onerror='alert(1); //,显示输出 第四关输入3 '**alert());//,展现输出. 第五关输入javascript:alert(1);,展现输出. 第六关输入data:javascript,alert('XSS'),展现为.

  • 网络安全及编程语言知识梳理总结

    从接触网络安全,计算机以来,已经接触到了许许多多的内容,这些内容梳理将在如下展现。(不保证全面,但保证自由梳理,以后可能会补充) 一. 网络安全 ​ 主要内容方面以及比较偏的方向上的内容. web安全 web安全主要由浏览器,熏染前后端语言,或者框架,通过web容器进行展现web页面内容,或者数据库内容,由服务器中的操作系统进行运行。 web网站有以下几个类型,bbs论坛,博客页面,cms内容管理系统,新闻发布页面,商城购物页面,大多通过框架能够进行快速开发,不排除自己开发出独立的框架进行使用,甚至创建出自己的编程语言,这个话题有些远了。 在进行渗透测试,测试web网页的时候,时常通过网络安全渗透测试工具,比如kali系统,比如国产的其他windows渗透测试工具集,通过渗透测试流程,方法,方式,使用工具和手工进行渗透,偶尔需要编写自动化脚步进行自动化利用,一般推荐脚本是python,便于后续维护,模块多,适合开发大型项目,也可以使用perl快速开发,只是维护方面需要多写注释,常被称为一次性脚本,但是开发效率比python还快,所以值得一提,节省生命。 web开发能够提高web安全渗透测试的效率,以及准确率,语言有javascript,html,css,后端的php,java,python,ruby,所以值得钻研。 web安全在渗透测试的时候,如果没有接触过编程语言,那么有些难以理解,不同程序逻辑在页面展现的过程,以及渗透测试流程的差异。 这里推荐书籍«黑客攻防技术宝典第二版 web篇» 老书,但是值得一读。 里面介绍了web渗透测试的流程,攻击方式,工具的使用,以及漏洞的原理,还有其他。 常见使用工具,web渗透,子域名信息搜集的subfinder,需要配置配置文件api,用于接口其它网站的信息,用于搜集这些网站中早已经被收录的域名。 gobuster属于可以爆破域名和扫目录的go语言工具,还有其他功能,由于是go开发的,并发能力较强。 剩下的工具在kali平台,awesome系列github项目,以及the secret book of the knowledge项目中,存在大量安全信息工具以及资源。 如果说那本书教会了你如何进行渗透测试,那么这些资源将教会你如何使用它们,工具,漏洞环境,labs,etc。 2.二进制安全 通常二进制安全包括了很多子集,就像web渗透测试也包纳了许许多多的方方面面,主要几个方面逆向工程(主要是破解,协议逆向),pwn(也称为二进制漏洞利 用),免杀(杀软逃逸),恶意软件分析,二进制方面包纳了,linux环境,windows环境,安卓和苹果手机的环境,甚至包纳了嵌入式,iot,掌握这类知识,需 要对底层有较深的理解,比如c/c++,汇编语言,调试工具的使用,熟知攻击流程,体系结构,和网络渗透大不相同,大多数这类工作都在底层深入钻研,也 是高级主题,flare是windows 10逆向操作工具集成环境,对应的也有专门的linux环境remunx基于ubuntu,pwn多数操纵在linux平台上面,也有windows 的,移动端少有接触,但是底层技能都可以触类旁通,比如熟知linux操作系统,或者windows操作系统的底层后,再接触其他移动端的会快很多,无论你是 学哪一门的二进制学科,都需要掌握基础的文件格式,windows的pe,linux的elf,安卓的apk,懂了文件格式才方便后续的操作,还要熟知体系结构,比如 x86,x64 cpu指令集架构,汇编语言,恶意软件分析一般是蓝队方向,免杀,二进制pwn,则是红队方面的研究,还有逆向工程,这类主要是软件安全的保护与 破坏。 3.内网渗透 内网渗透通常是在外网拿到一台主机的权限后进行的后续操作,比如你通过文件上传上传了一个webshell后门,通过这个后门进入到服务器主机中,在通过这台 主机进行横向移动到其他主机,无论是通过怎样的端口利用,内网信息搜集,工具使用,绕过防火墙,或者拿到域权限,这类行动一般在红队的工作内容中,给企业的安全服务,还有护网行动,在进行横向移动的时候,需要规避杀软,edr,ids,ips等安全设备,或者说是在红队的作业攻击过程中,一般是由多个人员组成,以定制专项行动,有的人擅长打点,拿入口权限,有的人熟悉内网信息搜集横向移动,而有的人则是进行杀软的规避和编写,进行定制化的攻击,最后还要熟知对应的操作系统,进行痕迹清除和留下后门,以便下次继续访问,这在网络安全的攻击行为中十分重要,这类安全测试,以提前发现危险,把可能存在的漏洞行为,易受攻击的行为进行排查。 4.取证和溯源 溯源一般是溯源攻击者,攻击行为,从哪进来的,做了些什么,目标人物在哪(如果能找到的话),取证一般根据需求进行专业工具使用,提取出需要的信息。 5.linux 掌握linux,一开始很陡峭,后面大量的时间能够让你节省生命。 6.编程语言 不同的编程语言在不同的方面有不同的性质和性能,python 语法清晰,便于维护,模块多,适合开发大型项目,perl,一次性脚本,快速开发文本处理类型脚本,节省生命,相对于其他脚本,在脚本语言的世界里,被称为瑞士军刀,c/c++,适合编写高性能软件,操纵底层内存,堆栈空间,是直接和硬件打交道的语言,能够创造万物,php 快速后端网页的语言,javascript,前端事件响应语言,java,用于开发安卓应用,适用于开发企业级web应用,面向对象语言。 7.其他 隐写,流量分析,代码审计用于挖掘0day,需要对编程有极高的理解,