本文转自这篇文章
00 前情提要
01 Web相关知识点
1.漏洞类
2.情景类
3.其他类
00 前情提要
本文仅为个人整理汇总,其试题来源于各个平台,其中包括****、Github、吾爱破解论坛等。为个人复习所用,现整理分享给大家。
01 Web相关知识点
1.漏洞类
1、常见的Web安全漏洞有哪些?
SQL注入
XSS
文件遍历、文件上传、文件下载
垂直越权、水平越权
逻辑漏洞
2、SQL注入漏洞
SQL注入的原理:
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通常未经检查或者未经充分检查的用户输入数据或代码编写问题,意外变成了代码被执行。
SQL注入类型:
基于报错注入;
基于布尔的注入,根据返回页面判断条件真假的注入;
基于时间的盲注,不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
宽字节注入;
联合查询注入,可以使用 union 的情况下的注入;
堆查询注入,可以同时执行多条语句的执行时的注入;
sqlmap,怎么对一个注入点进行注入?
1)如果是get型号,直接,sqlmap -u “诸如点网址”.
2) 如果是post型诸如点,可以sqlmap -u "注入点网址” --data=“post的参数”
3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用*号替换,放到文件里,然后sqlmap -r “文件地址”
sleep被禁用后还能怎么进行sql注入?
BENCHMARK,Get_lock函数,当都被禁用后可以用计算量比较大的语句使数据库查询时间变长,从而达到延时注入的效果。 mysql:AND (SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.SCHEMATA C);
如何进行SQL注入的防御
关闭应用的错误提示;
加waf;
对输入进行过滤;
限制输入长度;
限制好数据库权限,drop/create/truncate等权限谨慎grant;
预编译好sql语句,python和Php中一般使用?作为占位符。这种方法是从编程框架方面解决利用占位符参数的sql注入,只能说一定程度上防止注入。还有缓存溢出、终止字符等;
数据库信息加密安全(引导到密码学方面)。不采用md5因为有彩虹表,一般是一次md5后加盐再md5;
清晰的编程规范,结对/自动化代码 review ,加大量现成的解决方案(PreparedStatement,ActiveRecord,歧义字符过滤, 只可访问存储过程 balabala)已经让 SQL 注入的风险变得非常低了;
3、mysql的网站注入,5.0以上和5.0以下有什么区别?
10年前就出了5.0,现在都到5.7了,没啥意义的问题
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。
4、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer.
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
5、CSRF、SSRF和重放攻击有什么区别?
CSRF是跨站请求伪造攻击,由客户端发起
SSRF是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的
6、DOM XSS与反射XSS有啥不同,给你10s,如何快速判断一个XSS是否是DOM XSS?
存储型XSS:你发送一次带XSS代码的请求,以后这个页面的返回包里都会有XSS代码;
反射型XSS:你发送一次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码;
DOM型XSS:你发送一次带XSS代码的请求,在返回包里压根儿就找不到XSS代码的影子;
7、网站可能存有哪些逻辑漏洞?
7.1、订单任意金额修改
相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数。
预防思路:
订单需要多重效验
订单数值较大的时候需要人工审核
7.2、验证码回传
漏洞一般发生在账号密码找回、账号注册、支付订单等。验证码发送途径一般为手机短信、邮箱邮件
预防思路:response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加
如果要进行前端验证的话也可以,但是需要进行加密
7.3、未进行登陆凭证验证
有些业务的接口,因为缺少了对用户的登陆凭证的效验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作。比如后台页面、订单ID枚举、敏感信息可下载、没验证ID或cookie验证导致越权。
预防思路:对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证
7.4、接口无限制枚举
某电商登陆接口无验证导致撞库
某招聘网验证码无限制枚举
某快递公司优惠券枚举
某电商会员卡卡号枚举
预防思路:在输入接口设置验证,如token,验证码等。如果设定验证码,最好不要单纯的采取一个前端验证,最好选择后端验证。如果设定token,请确保每个token只能采用一次,并且对token设定时间参数。
注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。
验证码不要用短数字,尽量6位以上,最好是以字母加数字进行组合,并且验证码需要设定时间期限。
优惠券,VIP卡号请尽量不要存在规律性和简短性,并且优惠券最好是以数字加字母进行组合。
7.5、cookie设置存在缺陷
Cookie的效验值过于简单。有些web对于cookie的生成过于单一或者简单,导致黑客可以对cookie的效验值进行一个枚举.
cookie存在被盗风险,即用户重置密码后使用老cookie依然可以通过验证。
预防思路:cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。cookie中设定session参数,以防cookie可以长时间生效。
根据业务不同还有很多方法
找回密码功能缺陷
单纯读取内存值作为用户凭证
电商系统加车、下单漏洞
8、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由?
A. ?id=2+1
B. ?id=2-1
选B,在 URL 编码中 + 代表空格,可能会造成混淆
9、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?
?DATA=AjAxNg==
DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试
10、发现 ?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?
有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell
使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell
11、说出至少三种业务逻辑漏洞,以及修复方式?
密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码
身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份
验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过
12、CSRF怎么防护?
尽量使用POST,限制GET;浏览器Cookie策略;加验证码; Referer Check;Anti CSRF Token
13、XXE的危害?哪些地方容易存在xxe?
xxe危害 读取本地文件,执行系统命令,探测内网端口,攻击内网服务 探测内网端口的协议有gopher file dict,不同语言支持不同的协议,是具体情况而定 file http ftp是常用的
xxe常见场景是如pdf在线解析、word在线解析、定制协议,留言板等,跟逻辑设计有关而与语言无关,最好是不要让XML作为参数传输或整体结构可被用户篡改。如果一定要使用,至少要禁用DTD、Entity。
防范,python用lxml时可以对resolve_entities设为false。或者过滤用户提交的xml。客户端也可以有xxe攻击,有的网站会使用office打开docx进行解析 Java解析XML的常用三方库,如果不禁用DTD、Entity都会导致XXE漏洞:
14、目前已知哪些版本的容器有解析漏洞,具体举例?
IIS 6.0:
// ""是文件夹名
IIS 7.0/7.5:
默认Fast-CGI开启,直接在url中图片地址后面输入/,会把正常图片当成php解析
Nginx:
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码 %
Apache:
上传的文件命名为:.x1.x2.x3,Apache是从右往左判断后缀
2.情景类
1、做了cdn的网站如何获取真实IP?
多地ping看是否有cdn;
邮件订阅或者rss订阅;
二级域名可能不会做cdn;
nslookup 国外dns;
查找域名历史解析记录,因为域名在上CDN之前用的IP,很有可能就是CDN的真实源IP地址 ;
phpinfo上显示的信息;
2、Web服务器被入侵后,怎样进行排查?
最简单就是
查看下web 服务器日志;
看看有没有异常端口开放;
使用安全狗等服务器安全软件清扫;
3、拿到一个待检测的站,你觉得应该先做什么?
收集信息:
whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说…
4、在渗透过程中,收集目标站注册人邮箱对我们有什么价值?
丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
用邮箱做关键词进行丢进搜索引擎。
利用搜索到的关联信息找出其他邮进而得到常用社交账号。
社工找出社交账号,里面或许会找出管理员设置密码的习惯 。
利用已有信息生成专用字典。
观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。
5、判断出网站的CMS对渗透有什么意义?
查找网上已曝光的程序漏洞。
如果开源,还能下载相对应的源码进行代码审计。
6、一个成熟并且相对安全的CMS,渗透时扫目录的意义?
敏感文件、二级目录扫描
站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
7、mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
root权限以及网站的绝对路径。
8、在浏览器端,Referer可以篡改吗?
通过插件修改,一般抓包修改
9、如何手工快速判断目标站是windows还是linux服务器?
linux大小写敏感,windows大小写不敏感。
10、为何一个mysql数据库的站,只有一个80端口开放?
更改了端口,没有扫描出来。
站库分离。
3306端口不对外开放
11、3389无法连接的几种情况?
没开放3389 端口
端口被修改
防护拦截
处于内网(需进行端口转发)
12、如何突破注入时字符被转义?
宽字符注入
hex编码绕过
13、在某后台新闻编辑界面看到编辑器,应该先做什么?
查看编辑器的名称版本,然后搜索公开的漏洞。
14、拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?
能做的事情很多,用隐藏网马来举例子:
插入<FilesMatch “”> SetHandler application/x-httpd-php .jpg文件会被解析成.php文件。
具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。
15、注入漏洞只能查账号密码?
只要权限广,拖库脱到老。
16、安全狗会追踪变量,从而发现出是一句话木马吗?
是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。
17、.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。
迅雷下载,直接改后缀为.mdb。
18、提权时选择可读写目录,为何尽量不用带空格的目录?
因为exp执行多半需要空格界定参数
19、某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
同数据库。
20、注入时可以不使用and 或or 或xor,直接order by 开始注入吗?
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。
21、某个防注入系统,在注入时会提示?
系统检测到你有非法注入的行为。
已记录您的ip
时间:2016:01-23
提交页面:?id=15
提交内容:and 1=1
那如何利用这个防注入系统拿shell?
在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。
22、上传大马后访问乱码时,有哪些解决办法?
浏览器中改编码。
23、审查上传点的元素有什么意义?
有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。
24、目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
先爆破用户名,再利用被爆破出来的用户名爆破密码。
其实有些站点,在登陆处也会这样提示
所有和数据库有交互的地方都有可能有注入。
25、目标站发现某txt的下载地址为Client Validation,你有什么思路?
这就是传说中的下载漏洞!在file=后面尝试输入下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。
26、甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?
直接在网站二级目录/abc/下扫描敏感文件及目录。
27、在有shell的情况下,如何使用xss实现对目标站的长久控制?
后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。
在登录后才可以访问的文件中插入XSS脚本。
28、后台修改管理员密码处,原密码显示为。你觉得该怎样实现读出这个用户的密码?*
审查元素 把密码处的password属性改成text就明文显示了
29、目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?
原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过
30、审查元素得知网站所使用的防护软件,你觉得怎样做到的?
在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到内容。
31、在win2003服务器中建立一个 .zhongzi文件夹用意何为?
隐藏文件夹,为了不让管理员发现你传上去的工具。
32、我司网站的IP 223.223.223.223 被人DDOS攻击,流量达9G,并且机房流量清洗无效,所以把223.223.223.223封停,导致网站不能访问,如何做出紧急预案?
网络设备设施:
拼带宽,加大带宽,但是成本太高
使用硬件防火墙
选用高性能设备
抗D思想和方案:
负载均衡
花钱买流量清洗服务
CDN:web层,比如cc攻击
分布式集群防御
高防:防大部分攻击,udp、大型的cc攻击
预防为主
系统漏洞
系统资源优化:
过滤不必要的服务和端口
限制特定流量:检查访问来源做适当限制
33、主机被入侵该怎么办?
优先提取易消失的数据;
内存信息 free -m `htop;
系统进程 ps top netstat ss;
路由信息 tracert;
ifconfig查看网卡流量,检查网卡的发送、接收数据情况;
NetHogs实时监控带宽占用状况;
查看Linux系统日志 /var/log;
ClamAV杀毒软件;
3.其他类
1、说一个印象深刻的CTF的题目
sql二次注入
第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身还是脏数据。 在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
交友网站,填写年龄处是一个注入点,页面会显示出与你相同年龄的用户有几个。使用and 1=1确定注入点,用order by探测列数,union select探测输出点是第几列,
暴库 group_concat(schema_name) from information_schema.schemata
暴表 group_concat(table_name) from information_schema.schemata where table_schema=‘hhh’
获取数据 concat(flag) from flag
修复:在从数据库或文件中取数据的时候,也要进行转义或者过滤。
2、17年OWASP TOP10
注入:sql,nosql,ldap,os;
失效的身份认证:;
敏感信息泄漏;
XXE XML外部实体;
失效的访问控制:管理页面仅能管理员权限访问;越权漏洞;
安全配置错误:页面错误信息,默认密码,使用已知漏洞的应用;
XSS;
不安全的反序列化:一个PHP论坛使用PHP对象序列化来保存一个cookie,用户修改cookie即可伪造管理员登陆;
使用含有已知漏洞的组件:比如structs2框架;
不足的日志记录和监控:代码被删除,无法溯源;记录登陆失败次数;监控问题没被管理员响应;
3、web常用的加密算法有什么?
非对称加密 RSA、ElGamal、Rabin 对称加密 DES、3DES、AES 散列算法 MD5 SHA base64
4、ssh
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。
英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:和。用SSH 的客户程序是不能连接到SSH 的服务程序上去的。OpenSSH 同时支持SSH 和。SSH的安全验证是如何工作的从客户端来看,SSH提供两种级别的安全验证。第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
以上内容,作为个人的复习笔记使用,仅供参考。
最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。
————————————————
版权声明:本文为****博主「Vista、」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:/qq2539879928/article/details/107486058