常见的网络安全面试题目(个人总结)

1、常见的漏洞及其利用方式

SQL注入

对于客户端输入的内容没有进行严格的校验,而导致恶意的sql语句被执行,而产生的漏洞。
常见的漏洞类型有报错注入,布尔盲注,时间盲注,联合查询的注入。

报错注入

无法判断显示位,但是页面会根据我们输入错误的SQL语法而报错,所以采用报错注入来解决这个问题。简单的说就是利用函数报错使其输出错误结果来获取数据库的相关信息。

常见的报错函数

updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数
extractvalue() 是mysql对xml文档数据进行查询的xpath函数
floor() mysql中用来取整的函数
exp() 此函数返回e(自然对数的底)指数X的幂值

updatexml函数

updatexml()函数的作用就是改变(查找并替换)xml文档中符合条件的节点的值
语法:updatexml(xml_document,XPthstring,new_value)
第一个参数是字符串string(XML文档对象的名称)
第二个参数是指定字符串中的一个位置(Xpath格式的字符串)
第三个参数是将要替换成什么,string格式
Xpath定位必须是有效的,否则则会发生错误。我们就能利用这个特性爆出我们想要的数据
payload:kobe ’ and updatexml(1,concat(0x7e,version()),1)#
让全部的校验失败,就是使用concat在需要的数据前面加上一个XPATH校验,可以让它失败就可以了。0x7e用来校验,version()是我们想要的数据,concat用来连接它们两个。
使用0x7e纯粹是觉得专业,很有意思。
Concat在mysql中就是起到一个连接作用。
复杂的语句:kobe’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘pikachu’)),0)#这个可以获取表名

extractvalue函数

extractvalue()函数的作用是从目标xml中返回包含所查询值的字符串
extractvalue (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为doc
第二个参数:XPath_string(Xpath格式的字符串),Xpath定位必须是有效的,否则会发生错误
http://127.0.0.1/sqli-labs/Less-1/?id=1’ and extractvalue(1,concat(‘~’,database()))–+
这个原理和updatexml函数的一样,只不过少了一个参数。

Floor函数

Floor()是mysql的一个取整函数
floor()函数的使用局限:mysql 5.0及以上版本

Exp函数

EXP(x) 返回值e(自然对数的底)的x次方
and exp(~(select * from (select user () ) a) );

时间盲注

所谓盲注,就是在服务器没有错误回显的时候完成的注入攻击。
什么是时间注入,就是通告web页面返回数据的时间差来判断注入语句是否正确。
Length()返回字符串长度
Substr()截取字符串长度
Ascii()返回字符的的ascii码
Sleep()将程序挂起一段时间
If(exp1、exp2、exp3)判断语句,第一个语句正确就执行第二个,否则执行第三个
时间型盲注的payload:?id=1 and if(length(database())>1,sleep(5),1)

布尔盲注

布尔型盲注应用于无数据回显,且web页面无报错信息的情况。
布尔盲注的web页面只有两种回显结果,正确的页面以及错误的页面,且错误的页面没有提示语句,正常的页面也不能输出数据。
根据返回页面的正确与否,通过判断对应字符的ascii码值是否对应,来判断字符串具体的数值。
注入语句后面的–的意思:
起到一个注释后面语句的作用,防止对前面的语句产生干扰。
(首先用substr截取字符串,每次截取一个,用ascii()函数转化为ascii码,进行判断,如果不符合,返回页面错误,最后根据得到的ascii码来判断它的值)

联合注入的过程

1、判断是否为注入点
老方法:and 1=1 页面正常
and 1=2 页面错误
可能存在注入点,尽量选择有经验舒服快捷的方法
2、判断是数字型还是字符型
1—数字型测试:当输入的参数为整型时,如果存在漏洞,可以认为是数字型注入
1)加单引号,?id=3’,这时候sql语句出错,就会有异常
2)加上 and 1=1 ?id=3 and 1=1,语句正常,与原始页面无差异。
3)加上 and 1=2 ?Id=3 and 1=2 语句可以执行,但无法查询结果,与原始页面有差异
满足以上三点,就可以判断是存在数字型注入
2—字符型测试:当输入的参数为字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。
例如数字型语句:select * from table where id =3
则字符型如下:select * from table where name=’admin’
因此,在构造payload时通过闭合单引号可以成功执行语句:
3、判断列数
注入语句 order by
id=1’ order by 3 --+
如果number小于或等于实际数量,那么页面正常
4、判断显示位
使用union联合查询 selecet 1,2,。。。。。n(n取决于列数)
首先使用order by 判断出列数后,就可以用union select 1,…n进行查询了。
5、信息收集
获取数据库名、表名、字段名、字段中的数据
1)获取数据库名:group_concat()一次性显示
Id=-1‘ union Select group_concat(schema_name) from information_schema.schemata
显示当前数据库:database()
2)获取表名
id=-1’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),3
3)获取列名

id=-1’ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),3
4)获列名:
id=-1’ union select 1,(select concat_ws(char(32,58,32),username,password) from users limit 1,1),3
用limit控制,一行一行得到数据

SQL注入修复意见

加waf/可以有效缓解,可以作为/临时措施,根除的话/需要修改源码,一般需要/严格对输入参数/进行SQL语句过滤/,或者/使用预编译(就是/把要查询的语句/先封装编译,后边/输入的参数/都会被/作为字符串输入)

SQL注入漏洞挖掘

SQL注入漏洞一般出现在有数据交互的地方,比如登录页面、数据查询页面、新闻页面、数据新增页面等

SQL注入绕过方式

1、使用大小写混合;
2、使用内联注释的方式绕过,就是用/*!12345 语句 */
3、使用等价替换的方式,比如用like替换等号
4、使用16进制编码表示字符串,绕过对库名的过滤

SQL预处理

客户端发送一条sql语句到mysql服务器,mysql服务器会进行编译处理,但是有时候我们会重复执行一条sql语句,这时使服务器即时编译处理就会造成很大的资源浪费,而且耗费时间,特别是大量数据时,所以sql预处理可以很好的解决这个问题。
预编译语句的优势在于,一次编译,多次运行,省去了服务器解析优化的过程,此外预编译语句能防止sql注入。

文件上传

因为/对上传文件校验/不够完善,而导致的/可执行文件/被上传到服务器,从而产生的漏洞。

文件上传漏洞修复意见

可以在服务端/对文件后缀/使用黑白名单结合的/过滤方式,并且/对文件内容进行校验,上传之后/对文件名/进行重命名操作,也可以使用/微服务/保存上传上来的文件。

文件上传绕过方式

1.黑名单
a.通过一些特殊后缀 .php5 、.phtml、.asa、.jap等
b.上传.htacess 点h t 额可赛思
c.大小写pHp
d.在数据包中 后文件缀名前加空格
e.后缀名前加.
f.加上::$DATA
g.未循环验证,可以使用x.php…类似的方法

2.白名单
(一般需要配合其他漏洞一起利用)
a.%00截断
在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。
%00适用于php>5.3.42,且服务器中的php.ini中的magic_quotes_gpc = Off,才可以进行%00截断
(magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误)
常见的网络安全面试题目(个人总结)_第1张图片

b.图片马
所谓图片马,就是将一句话木马与图片相结合,使得图片中包含代码。
使用语句 生成图片马。
copy 图片.jpg/b + 木马.php/a 木马.jpg
/b 表示以二进制方式打开
/a 表示以ASCII方式打
c.条件竞争
(先进行上传,后进行判断。利用时间差进行webshell上传)
在服务器删除我们上传的非法文件之前,访问这个文件,从而生成另一个木马文件,用这个木马文件getshell

')  #注意单双引号的闭合
?>
#只要执行,就是生成一个shell.php文件,shell.php的内容为 

文件包含漏洞

文件包含漏洞原理
原理:文件包含本身是正常功能,如果客户端可以干预被包含的文件名,导致包含了恶意文件,就会产生漏洞

文件包含的相关函数

1.include():使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。
2.inclue_once():功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
3.require():使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出错误信息并立即终止程序。
4.require_once():功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

文件包含利用

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。
1.读取敏感文件 file:// 伪协议
2.远程包含shell
3.图片上传并包含图片shell
4.使用伪协议 php://input 可以读取post传参的数据,然后都当成PHP代码执行
5.包含日志文件GetShell
6.截断包含 绕过
本地文件包含
仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
远程文件包含:
能够通过 url 地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。
需要设置 PHPstudy 的参数开关设置
allow_url_include=on
magic_quotes_gpc=off

文件包含修复意见

修复:
1、设置PHP参数allow_url_include=off allow_url_fopen=off
2、对要包含的路径进行严格校验
防御:尽量不要执行外部命令、使用自定义函数或函数库来替代外部命令的功能。

任意文件删除

漏洞的成因主要就是删除的目录路径是我们可控的,且并没有对这个路径进行任何的限制。
delbackdb函数,发现filename在获取文件名的时候,只经过一个函数去除文件名两侧的空格,没有做过滤。之后还有一个自制的删除函数delone。
常见函数:readfile()、file_get_contents()、fopen()、$filename
防御:
1.正则严格判断用户输入参数的格式
2.检查使用者输入的文件名是否有“…”的目录阶层字符
3.在php.ini文件中设置open_basedir来限定文件访问的范围

XSS(跨站脚本攻击)

XSS原理
原理: 中文名是跨站脚本攻击,通过在客户端和服务器的访问过程中插入恶意脚本(一般我们使用js代码),实现对用户浏览器的攻击
存储型、dom型、反射性

非持久性(反射型)
这种攻击方式往往具有一次性,攻击者通过电子邮件等方式将包含xss代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有xss代码的数据发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后,就会触发xss漏洞。

持久性(存储型)
持久性体现在xss代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。

攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中 。 当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行 。所以需要浏览器从服务器载入恶意的xss代码,才能真正触发xss。

DOM型
中文为文档对象模型。
其中攻击的payload由于修改受害者浏览器页面的DOM树而执行的。其特殊的地方就是payload在浏览器本地修改DOM树而执行,并不会传到服务器上,这也就使得DOM型XSS比较难以检测。
区别:
1、反射型XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。
2、存储型XSS的攻击代码会存储在服务器上,一般是存储在数据库;
3、反射型和DOM型攻击流程相同,但DOM型攻击代码可以不通过服务器,也就是说大部分服务器端的过滤方式对DOM型XSS都不起作用。
4、DOM型xss和别的xss最大的区别就是它不经过服务器。DOM使用burpsuite抓包的话也是抓不到任何东西,因为没有产生与服务器的交互,仅仅通过前端js渲染来改变最终的网页代码
XSS修复建议
1.对输入的内容进行过滤,比如过滤掉<>
2.对将要输出的内容进行HTML编码
3.对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取 cookie
XSS与CSRF与SSRF漏洞区别
XSS是跨站脚本攻击,攻击的目标是客户端,因为是脚本攻击,所以JS脚本写什么,客户端就会做什么,比如窃取cookie利用方式比较灵活

CSRF是跨站请求伪造,攻击的目标也是客户端,利用时只能窃用cookie,只能利用存在csrf漏洞的功能点,局限性比XSS大

SSRF是服务端请求伪造,攻击的是服务端,危害较大,可以造成内网穿透、命令执行、内网信息泄露。

CSRF(跨站请求伪造)

出现的原因
CSRF漏洞是因为web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的referer值,从而导致恶意攻击者利用普通用户的身份(cookie)完成攻击行为。

一次CSRF攻击的过程中,受害者需要依次完成两个步骤 :
1.登录受信任网站A,并在本地生成Cookie 。
2.在A的cookie存活期内,访问危险网站B。
CSRF原理
原理:中文名跨站请求伪造,在用户保持登录状态的情况下,攻击者构造一个站点,诱导用户访问,用户访问后被恶意站点控制跳转到存在CSRF漏洞的页面,假如这个页面是密码修改页面,在这个过程中,保持登录状态的cookie就会被窃用,造成密码修改。
CSRF漏洞修复建议
1、在重要的功能点上,增加访问来源的验证,比如验证referer头
2、增加验证码验证,增加token验证

SSRF(服务器端请求伪造)

SSRF漏洞是一种在未能获取服务器权限时,利用服务器漏洞,由攻击者构造请求,服务器端发起请求的安全漏洞,攻击者可以利用该漏洞诱使服务器端应用程序向攻击者选择的任意域发出HTTP请求。
SSRF漏洞原理
原理:本身是资源的引用,如果没有进行校验,会导致内网不想让别人访问的资源或服务被人探测甚至攻击到的一个漏洞。

file协议:在有回显的情况下,利用file协议可以读取任意文件的内容

dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
SSRF漏洞修复建议
修复:
1.地址做白名单处理
2.域名识别IP 过滤内部IP
3.校验返回的内容,对比一下是否与预期的内容一致

XXE漏洞(XML外部实体注入)

XXE漏洞原理
原理: 又叫XML外部实体注入,由于过滤不严格导致的,用户传入的恶意XML文档被解析导致的漏洞
XXE漏洞修复建议
修复建议:
1、对用户提交的XML数据进行过滤;
2、设置PHP参数,禁用外部实体写入;
XXE危害
当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
XXE触发点
xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件

反序列化漏洞

反序列化漏洞原理
原理:序列化是指Java对象转化为二进制文件的过程,反序列化指的是这个文件再转化为Java对象的过程,本身是个正常过程,但如果被转化的这个文件是个恶意的,转化后的对象也是会是恶意的,由此可造成命令执行等等威胁。
反序列化漏洞修复建议
一般我们遇到的反序列化漏洞,基本都是使用了具有反序列化漏洞的组件或者类造成的,一般我们打补丁或者升级到最新版本就可以防御。

Shiro反序列化漏洞

这个我只复现过cve-2016-4437
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
Shiro < 1.2.4版本会存在此漏洞,挖掘的时候删除请求包中的rememberMe参数,返回包中包含rememberMe=deleteMe字段。说明使用了shiro组件,可以尝试此漏洞。
如果返回包无此字段,可以通过在发送数据包的cookie中增加字段:****rememberMe=,然后查看返回数据包中是否存在关键字
此漏洞有两个版本利用方式,
SHIRO-550:
不需要提供秘钥,使用默认秘钥就可以利用
SHIRO-721反序列化漏洞
先爆破秘钥,成功后可以进一步利用

Fastjson反序列化漏洞

如何判断是不是fastjson
1.POST请求
2.尝试构造fastjson数据包的错误格式并发送,例如:
{
“b”:
常见的网络安全面试题目(个人总结)_第2张图片
返回包后:
常见的网络安全面试题目(个人总结)_第3张图片
Fastjson提供了反序列化功能,允许用户在输入JSON串时通过“@type”键对应的value指定任意反序列化类名,由此造成反序列化漏洞;
漏洞挖掘方式:如果请求包中出现http头Accept:application/json,怀疑存在fastjson组件,构造报错,返回包中出现fastjson时,确认使用了fastjson组件,可以尝试此漏洞
Fastjson从1.2.24到1.2.67多个版本存在此漏洞,如果没有回显版本,可以将以下payload,挨个替换到请求内容,尝试是哪个版本的漏洞。
{“@type”:“java.net.InetSocketAddress”{“address”:,“val”:“aaa.dnslog.cn”}}

{“@type”:“java.net.Inet4Address”,“val”:“aaa.dnslog.cn”}

{“@type”:“java.net.Inet6Address”,“val”:“aaa.dnslog.cn”}

{“@type”:“com.alibaba.fastjson.JSONObject”,{“@type”:“java.net.URL”, “val”:“http://aaa.dnslog.cn”}}“”}

Set[{“@type”:“java.net.URL”,“val”:“http://aaa.dnslog.cn”}]

Set[{“@type”:“java.net.URL”,“val”:“http://aaa.dnslog.cn”}

{{“@type”:“java.net.URL”,“val”:“http://aaa.dnslog.cn”}:0

有反序列化漏洞的中间件Tomcat、Jboss 、weblogic。

中间件漏洞

解析漏洞

Apache文件名解析
从后往前解析,如果解析文件a.php.abc,先解析abc,Apache发现不认识,就会往前,解析PHP,最终文件会以PHP方式解析

IIS解析漏洞

1、目录解析:IIS从前往后解析,解析a.asp/a.jpg文件时,会先发现asp后缀,以为文件格式为asp,按照asp的方式解析
2、文件名解析:IIS从前往后解析,解析a.asp;.jpg文件时,会先发现asp后缀,以为文件格式为asp,按照asp的方式解析

Nginx畸形文件名解析

解析文件a.jpg文件时,访问a.jpg/.php,查找文件内容时,.php不是完整文件名,因此从后往前找到a.jpg文件,确认文件类型时,nginx关注的是后缀,.php有完整的后缀,所以按照php去解析,因此a.jpg文件就会被解析成php

Weblogic漏洞

发现端口7001则存在weblogic
未授权访问、反序列化、ssrf漏洞、T3协议反序列化等
RCE为两种漏洞的缩写,分别是"远程命令/代码执行",攻击者可以远程命令注入系统命令或者代码,从而拿下目标服务器。
CVE-2017-10271------XMLDecoder 反序列化漏洞
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
Cve-2018-2628 ----反序列化命令执行漏洞
T3协议在开放WebLogic控制台端口的应用上默认开启, 攻击者可以通过T3协议发送恶意的的序列化数据,,进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击,可导致未授权的用户在远程服务器执行任意命令。
Cve-2018-2894-----任意文件上传漏洞
Weblogic管理未授权的两个页面存在上传漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do。
利用该漏洞,可以上传任意jsp文件,进而获取服务器权限
Cve-2019-2725----反序列化远程代码执行漏洞
Weblogic反序列化远程代码执行漏洞。由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送特意构造的恶意HTTP请求,利用该漏洞获取服务器权限,实现远程代码执行。
Cve-2020-14882 Cve-2020-14883-----管理控制台未授权远程命令执行漏洞
CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。使用这两个漏洞的连锁,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机。
Cve-2021-2109 --weblogic LDAP 远程代码执行漏洞
该漏洞为Weblogic的远程代码执行漏洞。漏洞主要由JNDI注入,导致攻击者可构造恶意请求,执行任意代码,从而控制服务器。JDK 6u201、7u191、8u182、11.0.1版本或以上不受CVE-2021-2109漏洞的影响。
JNDI是一组在Java应用中访问命名和目录服务的API,命名服务将名称和对象联系起来,使得我们可以用名称访问对象。
漏洞复现:在vulfocus靶场环境中
当时是跟着wireup写的,之后去访问x.x.x.x:7001/console,可以访问成功就表示环境搭建成功了。

漏洞复现:
下载工具LDAP工具,需要java环境。
之后抓包,payload后面加poc。在请求包头部里面加cmd:id(命令),
常见的网络安全面试题目(个人总结)_第4张图片
常见的网络安全面试题目(个人总结)_第5张图片

未授权漏洞

MongoDB 未授权访问漏洞、Redis 未授权访问漏洞、JBOSS 未授权访问漏洞、VNC 未授权访问漏洞、Rsync 未授权访问漏洞、weblogic未授权漏洞

2、 熟悉常见的windows、linux操作系统,常见的linux命令

1、Cd
Cd~ 和cd:,返回用户目录;cd路径,进入指定目录;cd … 返回上级目录;cd/,返回根目录
2、Ls
Ls -l:以列表形式显示文件及文件夹的详细信息;Ls -a :显示所有文件列表
3、Mv:
重命名,(mv 源文件名 新文件名) 单文件移动(mv移动文件 移动后文件路径) -t 多文件移动
4、Mkdir 创建目录
5、Cat
输出文件内容,cat 1.txt >>2.txt 2.txt后追加1.txt
6、Find:
在指定目录下查找文件 find /app1/www -name。。。。
7、Pwd 当前所在目录
8、rm
删除文件 -r删除文件夹及所有文件;-f强制删除
9、软链接指令
ln -s, ln有软链接和硬链接,软链接就是 ln -s
10、查看网络信息:
ifconfig–查看所有网络接口属性
Iptables -l 查看防火墙设置
Route -n 查看路由表
Netstat -lntp 查看监听所有端口
Netstat -antp 查看所有已经建立的连接
Netstat -s 查看网络统计信息
11、查看dns:
查看/etc/resolv.con文件----cat /ect/resolv.f
使用nsloopup命令查看--------nsloopup 127.0.0.1 |grep server
使用dig命令查看-----dig
12、搜索MD5文件
搜索MD5文件就可以知道windows传到linux的文件是不是有丢失之类的情况了。
Md5sum—用于生成和校验文件的md5值,逐位对文件的内容进行校验
13、分页显示命令-less
less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
Less /etc/(文件名) —直接使用,查看文件 按q退出
Less -e /etc/(文件名) 文件显示完,自动退出
14、查看进程
一般先用ps查文档 然后看情况用
Ps aux (a:显示当前终端下的所有进程信息,包括其他用户的进程。u:使用以用户为主的格式输出进程信息。x:显示当前用户在所有终端下的进程。)
Ps -a 列出所有运行激活中的进程
Top:监控系统中不同进程使用资源的情况
以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。
15、touch 创建新文件
16、cp 复制 格式:cp 源文件 目标文件
17、Vi 修改文件内容
18、Echo 创建或覆盖文件
19、Tar 打包文件:tar -zcvf 打包名 文件
20、Pstree 显示线程树
21、Kill 终止指定进程 不能识别进程名,但是能识别PID:kill 参数 pid号

3、进行简单的代码审计工作

就先在网站上下载一个网站的源码,进行安装,安装的时候是利用的phpstudy,就可以看它的文件夹,浏览网站结构把握大局。入口文件的话一般就是index.php、admin.php。配置文件的话就是config.php等文件,保存的就是一些数据库相关信息,程序一些信息。
审计方法:
1、通读全文法
虽然很麻烦,但是这个方法也有必要,我用sublime看代码
2、敏感函数参数回溯法
根据敏感函数,逆向的追踪参数传递。这个方法最高效,最常用。大多数漏洞产生就是因为函数使用不当导致的。就是找到一些使用不当的函数,就可以挖掘想要的漏洞了。也用过seay源代码审计系统,主要就是看敏感的关键字,然后分析判断敏感函数的上下文,追踪参数源头。
3、定向功能分析
就是去浏览器访问,看这个程序有那些功能,根据功能,推测漏洞。
(文件上传、登陆认证、验证码)

总之代码审计就是把握大局----定向功能----敏感参数函数回溯

4、内网渗透知识了解

什么是内网:公司这种大多数都是分两个网,一个内网一个外网,外网就是我们可以正常上网,并且各个ip之间可以互相访问。内网就是自己内部使用的网络,比如内部网盘什么的,不适合对外网公开,内网不管是保密性还是安全性都有很大的作用。我们拿到他们网站的shell,这个网站搭建在他们的一个主机上,这个主机是他们内网的一部分,然后扩大成果。把内网里面的其他机子都打下来。

域控就是域中账户密码的一个控制器件。域服务就是一个相互信任的圈子,就像家庭一样。

一次渗透测试经历(通过渗透网站拿到webshell,然后通过webshell拿到网站主机系统权限。
发现受害主机有两张网卡,另一张网卡下有存活的内网主机,然后我们就尝试渗透存活的内网主机看能不能拿到系统权限,最后发现内网主机都开启了445端口,然后搜索了一下445端口漏洞发现有个最新的m17_010可能可以利用,结果真的通过ms17_010成功获得了内网主机的权限。)
攻击者如果想进入内网,一般会使用鱼叉攻击、水坑攻击,当然还有社会工程学手段。办公区人员多而杂,变动也很频繁,在安全管理上可能存在诸多漏洞,是攻击者进入内网的重要途径之一。

鱼叉攻击:就是钓鱼邮件
水坑攻击:就是一个陷阱,分析受害者的兴趣,看看都访问那些网页,我们就是攻破这个网站,提前植入恶意的代码,等待受害者访问
社工:欺骗艺术,伪装成网络管理员,或者通过电话要求用户提供给自己账户信息。

渗透流程:

信息收集-漏洞扫描-提权-痕迹清除-报告-复测
在拿到授权且与客户沟通之后,拿到客户提供的资产或者目标域名;
信息收集:主要使用nmap、御剑、fofa等工具,收集端口、同段IP、子域名、相关服务、框架、使用的中间件等组件、各种版本信息、历史漏洞信息等相关信息,收集到信息后可以检索相关漏洞,再手动验证
漏洞扫描:根据收集到的信息使用漏扫等工具进行扫描爆破等自动化探测,按照扫描结果进行漏洞验证
手工漏洞挖掘:进行手工漏洞验证和手工漏洞的挖掘
先将收集到的框架漏洞、组件漏洞进行手工验证;
然后对主要功能点,比如登录页面、文件上传页面、信息查询页面、密码重置页面等,使用burpsuite等工具进行漏洞挖掘
提权:在客户许可后,对拿到shell权限的漏洞点进一步提权或者内网渗透
痕迹清除:清理渗透过程中留下的木马、账号等内容
报告书写:根据检查出的漏洞及漏洞修复建议,写漏洞报告
漏洞复测:在客户修复完成之后,进行漏洞复测,检查漏洞是否修复完成,完成闭环

内网信息收集:

Windows

渗透测试的本质是信息搜集
系统相关—系统信息,查看主机开机时间net statistics workstation;
用户相关----#检查当前用户,权限 whoami /user && whoami /priv
程序相关—查看安装的版本,查看运行的进程–tasklist
网络连接相关–netstat -ano 端口信息
ipconfig /all #查询本机IP段,所在域等
route print #打印路由信息
arp -a #查看arp缓存,可以发现内网主机
域相关-----判断是否存在域
net config workstation # 查看当前计算机名,全名,用户名,系统版本,工作站域,登陆的域等
net view /domain # 查看域

Linux

系统相关–cat /etc/issue #查看系统名称
cat /etc/Lsb-release #查看系统名称,版本号
cat /etc/*release #查看linux发行信息
uname -an #查看内核版本
cat /proc/version #查看内核信息
cat /proc/cpuinfo #查看cpu信息

#查看文件系统
df -a

#查看系统日志
sudo cat /var/log/syslog

#查看命令记录
cat /root/.bash_history
cat ~/.bash_history
用户相关
whoami #查看当前shell权限
id #查看当前用户的权限和所在的管理组

#查看登录信息
w
who
last #登入过的用户信息
lastlog #显示系统中所有用户最近一次登录信息

#查看账号信息
cat /etc/sudoers
cat /etc/group
cat /etc/passwd

#列出目前用户可执行与无法执行的指令
sudo -l
网络相关
#查询本机IP信息
ifconfig
ip a

#查看端口信息
netstat -anpt

#查看网卡配置
cat /etc/network/interfaces
程序相关
#查看进程信息
ps -ef #标准格式显示
ps aux #BSD格式显示
配置信息
iptables –L #查看防火墙配置(注意需要root权限)

5、一些常用的工具

Burp Suite

Burp Suite主要用于对web应用程序进行测试,最重要的几个模块为Intruder、Proxy、Repeater,用于抓包分析、参数爆破以及重放攻击。

Burpsuite包括以下几个模块
Proxy:代理,默认地址是127.0.0.1,端口8080
Target:站点目标,地图
Spider:爬虫
Scanner:漏洞扫描
Repeater:http请求消息与响应消息修改重放
Intruder:暴力破解
Sequencer:随机数分析
Decoder:各种编码和散列转换
Comparer:可视化差异对比

说白了,burp suite(也简写成bp)是一个用来抓包改包的工具。上面说的那么多模块,也不一定每一个在平时都能用得到。我们用的最多的,有proxy代理模块、repeater模块以及intruder模块。接下来,就把这几个模块的介绍结合基本使用方法一起说明了

Wireshark

Wireshark主要用于网络协议和数据包分析,可以通过网络接口对整个网络接口进行监听。
筛选ip、源ip、目的ip、Mac地址、协议、请求方法,响应码、url,src,dst

过滤源ip地址:ip.src1.1.1.1;ip.dst1.1.1.1;

过滤端口:tcp.port80;tcp.srcport80;tcp.dstport==80

协议过滤:直接输入协议,如http

过滤get/post包,http.request.mothod==‘get/post’
菜刀、蚁剑、冰蝎特征

Nmap

Nmap主要用于发现主机、扫描端口、识别服务和操作系统等
nmap hostname/ip或者多个ip或者子网192.168.123.*
-iL ip.txt 扫描ip.txt的所有ip
-A 包含了-sV,-O,探测操作系统信息和路由跟踪。一般不用,是激烈扫描
-O 探测操作系统信息
-sV 查找主机服务版本号
-sA 探测该主机是否使用了包过滤器或防火墙
-sS 半开扫描,一般不会记入日志,不过需要root权限。
-sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批的链接请求以及错误信息。
-sP ping扫描,加上这个参数会使用ping扫描,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping,却实际存在。
-sN TCP空扫描
-F 快速扫描
-Pn 扫描之前不使用ping,适用于防火墙禁止ping,比较有用。
-p 指定端口/端口范围
-oN 将报告写入文件
-v 详细信息
-T<0-5> 设定速度

sqlmap

sqlmap主要用于检测和利用SQL注入漏洞。
-U USER 用来进行枚举的数据库用户
-r 使用文件作为注入时提交的数据包内容(可以结合burpsuite抓的流量包使用)
–dbms 指定数据库或版本
–dbs 枚举数据库管理系统数据库
–tables 枚举数据库中的表
–columns 枚举数据表中的列名
-D 库名 要进行枚举的数据库名
-T 表名 要进行枚举的数据库表
-C 列名 要进行枚举的数据库列
–os-shell 写入webshell
–dump 拖库

–tamper 使用自动化绕过脚本
常见的自动化脚本
base64encode.py 转为base64编码
charencode.py 使用url编码
chardoubleencode.py 双URL编码
unmagicquotes.py 宽字节注入
randomcomments.py 用/**/分割SQL关键字

—os-----shell
python sqlmap.py -u http://sqli-labs-master:8015/Less-1/?id=3 --os-shell
执行命令后会让选择上传shell的脚本类型,之后的话自己定义存储路径,就可以使用终端命令了。再去看存储的位置,发现多出两个文件。
常见的网络安全面试题目(个人总结)_第6张图片
常见的网络安全面试题目(个人总结)_第7张图片
常见的网络安全面试题目(个人总结)_第8张图片
常见的网络安全面试题目(个人总结)_第9张图片

mimikatz

mimikatz主要用于从内存中获取明文密码、现金票据和密钥等。
域信息收集:
金票:黄金票据、伪造TGT,获取
银票:白银票据,伪造ST
在学习黄金白银票据前,首先了解下什么是kerberos认证。
常见的网络安全面试题目(个人总结)_第10张图片
KDC(key distribution center)密钥分发中心
在KDC又分为两个AS,身份验证服务;TGS,票据授权服务;
AD会维护一个账户数据库,它储存了域中所有用户的密码和hash和白名单。只有账户密码都在白名单
上的client才能申请TGT;
kerberos认证;
当client想要访问server上的某个服务,需要先向AS证明自己的身份,验证通过后AS会发放一个TGT,
随后client再次向TGS证明自己的身份,验证通过后TGS会发放一个ST,最后Client向server发起认证请
求,这个过程分为三块:
client和as交互
client和TGS交互
client和server交互
原理:
在kerberos认证中,client通过AS(身份认证服务)认证后,AS会给client一个logon session key和
TGT,而logon session key不会保存在KDC中,krbtgt的hash又是固定的,所以只要拿到hash,就可以
伪造TGT和logon session key来进入下一步client与TGS的交互。而有了黄金票据后,就跳过AS验证,
不用验证账户和密码,所以不用担心域管理密码修改。
常见的网络安全面试题目(个人总结)_第11张图片
1、获取域SID
whoami/all
域SID主要是用来区分不同域,域用户SID用来区分域内不同的用户,在后续传票中会用。
2、查询域内用户
net user/domain
通过查询域内用户就可以知道当前这个域内所有的用户名
3、查看域用户的详细信息
net user tom /domain
通过查看域用户的详细信息可以得到域用户密码的到期时间,所属组以及上次登录时间
4、查询域列表(假如有多个域)
net view /domain
可以看到当前存在的域
5、查看域内信息
net view
可以看到域内有几台计算机
6、获取所在指定域下的主机名
net view /domain:xxx
查看指定域下存在几台主机
7、查看域内计算机
net group “domain computers” /domain
可以看到一共有几台计算机加入域
8、查看域信任关系
nltest /domain_trusts
可以查看当然域是否存在父子域信任和林信任,后续在跨域信任或者林攻击中会用。
9、查看域密码信息
net accounts/domain
可以知道当前域用户多久修改一次密码,密码策略是什么,写出一份针对的密码字典。

6、常见的端口

常见的网络安全面试题目(个人总结)_第12张图片
21 FTP
22 SSH
80 HTTP
443 HTTPS
445 ms17010漏洞利用端口
3389 远程桌面
3306 MySQL数据库
1433 SQLserver(msSQL)数据库
1521 orcle数据库
7001 weblogic中间件管理界面
8080 tomcat中间件管理界面
6379 redis数据库
常见的网络安全面试题目(个人总结)_第13张图片

7、数据库常用语句:

Select语句:select * from tables where a=x
Insert into语句:INSECT INTO Persons VALUES(‘Gates’,‘Bill’,‘Xu’,‘beijing’),表示向persons数据表中插入一条记录,记录的内容为values中的
Update语句:用于修改表中的数据。:Update person set firstname=‘fred’ where lastname=‘wilson’,表示为lastname是‘wilson’的人添加firstname
Delect语句:用于删除表中的数据:delect from person where lastname=‘wilson’,表示删除person中的lastname等于wilson的记录。
Drop语句:删除整个表的结构,不太能用。

8、流量分析

wireshark使用

wireshark简单的过滤规则
过滤 ip:
过滤源 ip 地址:ip.src1.1.1.1;,目的 ip 地址:ip.dst1.1.1.1;
过滤端口:
过滤 80 端口:tcp.port80,源端口:tcp.srcport80,目的端口:tcp.dstport80
协议过滤:
直接输入协议名即可,如 http 协议 http
http 模式过滤:
过滤 get/post 包 http.request.mothod
"GET/POST"

菜刀、蚁剑、冰蝎流量特征

菜刀特征

使用了base64的方式加密了发送给“菜刀马”的指令,其中的两个关键payload z1和z2,这个名字是可变的

蚁剑特征

默认的USER-agent请求头 是 antsword xxx,但是 可以通过修改:/modules/request.js 文件中 请求UA绕过
其中流量最中明显的特征为@ini_set(“display_errors”,“0”);这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码

蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“_0x…=”这种形式(下划线可替换),所以以_0x开头的参数名也很可能就是恶意流量

冰蝎

看包没有发现什么特征,但是可以发现它是POST请求的
1、Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征(UA头的浏览器版本很老)
2、特征分析Content-Type: application/octet-stream 这是一个强特征查阅资料可知octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组);很少使用

冰蝎2特征:

默认Accept字段的值很特殊,而且每个阶段都一样冰蝎内置了十余种UserAgent ,每次连接 shell 会随机选择一个进行使用。但都是比较老的,r容易被检测到,但是可以在burp中修改ua头。
Content-Length: 16, 16就是冰蝎2连接的特征

冰蝎3特征:

冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密 钥获取;php抓包看包没有发现什么特征,但是可以发现它是POST请求的
1)Accept头application/xhtml+xmlapplication/xmlapplication/signed- exchange属于弱特征
2)ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老。现实生活中很少有人使用,所以这个也可以作为waf规则特征

jsp抓包特征分析Content-Type: application/octet-stream 这是一个强特征查阅资料可知 octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交 一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组);很少使用。
Web攻击类的流量告警处置
要按照不同的漏洞及危害程度进行研判和处置,一般方法是:
先看是不是攻击,是的话,攻击先封禁IP及端口,抑制攻击继续
再看有没有成功,成功的话,确定造成的影响,进行恢复
如果是已经沦陷的流量告警,如webshell通信(之前一定有webshell上传)、源地址是内网的攻击(此主机可能已经被攻击拿下),需要进行溯源
溯源:看安全设备告警、流量分析、服务器异常、邮件钓鱼、蜜罐。

发现一个SQL注入告警怎么判断?

天眼告警页面有一个查看详情,可以打开具体的流量包,先看请求头和请求体是否含有SQL注入常用的SQL语句,比如and 1=1 ,比如sleep,比如updatexml等,如果有的话,说明是攻击,然后看响应,响应状态码为404这种情况,就是没有利用成功,如果是响应码是200,就看响应体内容,看是否包含查询出的预期结果,如果含有预期结果,则攻击成功,处置的话,先申请封禁IP,然后向客户申请对相关服务下架处理,然后对漏洞进行修复,如果被爆出了账号,需要修改密码。

9、应急

应急响应的六个过程?

1、准备工作,收集信息:收集告警信息、客户反馈信息、设备主机信息等。
2、检测,判断类型:安全事件类型的判断(钓鱼邮件,webshell,爆破,中毒等)
3、抑制,控制范围,隔离失陷设备
4、根除,分析研判,将收集的信息分析
5、恢复,处置事件类型(进程、文件、邮件、启动项,注册表等)
6、输出报告

中了病毒(或者挖矿病毒)如何处置应急?

得看是什么系统,大体步骤都是差不多的

如果是Linux:

先隔离设备,然后登录该主机
1、首先根据告警中的端口和域名排查出进程ID(PID),命令为netstat -ano
如果没有端口或者通信ip信息,可以用top命令,列出当前cup占用率较大的可疑进程
2、根据查出的端口号定位文件后根据PID杀死进程
定位文件 ls -l /proc/端口号 ,结果中/proc/端口号/exe 链接到进程的执行命令文件
杀死进程 kill -9 PID号
3、文件加密保存取证以后,删除文件,使用杀软扫描一下,看是否有残余文件
4、找个文件沙箱(比如奇安信的TI系统)跑一下提取到的病毒文件,看看会造成什么行为,根据行为进行修复
5、检查是否留有可疑用户、可疑文件、ssh登录证书等后门,检查定时任务
6、排查一下文件是如何被上传的
7、写应急检查报告

如果是Windows

1、首先根据告警中的端口和域名排查出进程ID(PID),命令为netstat -ano
如果没有端口或者通信ip信息,可以用任务管理器,列出当前cup占用率较大的可疑进程
2、定位文件后根据PID杀死进程
定位文件 在任务管理器的详细信息界面根据pid,右键打开文件位置
杀死进程 taskill /t /pid PID号
3、文件加密保存取证以后,删除文件,使用杀软扫描一下,看是否有残余文件
4、找个文件沙箱(比如奇安信的TI系统)跑一下提取到的病毒文件,看看会造成什么行为,根据行为进行修复
5、检查是否留有可疑用户、可疑文件、后门,检查注册表是否有残余,检查系统自启动
6、排查一下文件是如何被上传的
7、写应急检查报告

/etc/passwd与/etc/shadow区别
/etc/passwd 存账户信息一般不存密码

/etc/shadow主要用来存密码

入侵排查思路

已经被入侵
一、目的已经达成,木马,后门均已销毁
1.既然知道被入侵,定位被入侵的时间点
2.如果这个服务器是云服务器,对其进行快照。(目的,封存内存。)
3.当定位到时间点,查设备流量信息。找到木马链接信息
4.查找系统内对应的日志,找到相关线索
5.如果日志被删除,因为机器快照已经建立。使用Winhex对硬盘数据进行恢复

二、目的没有达成,数据正在回传。木马,后门均在服务器上运行
1.下线服务器,封禁攻击IP
2.Volatility 内存取证 建立快照 提取内存定位到shellcode找到他的IP
3.如果他们使用常见的C2的工具,我们可以根据流量分析出入侵者的意图
4.关闭服务器,或者在防火墙上禁掉他们的IP。登录服务器,对shellcode进行移除
5.重启以后进入安全模式,排查注册表 计划任务 服务 放大镜后门 shift后门
正在被入侵
可能入侵者在尝试进行攻击的时候,下线,然后对机器进行排查
比如:弱口令爆破
1.弱口令爆破会产生日志,日志一定要采用远程日志系统,例如Linux的rsyslog。开启远程日志系统的好处:不怕日志被攻击者删除
2.一定要找到入侵者的源IP,在防火墙下发阻断策略

Linux系统排查思路

1、检查用户及密码文件/etc/passwd、/etc/shadow 是否存在多余帐号,主要看一下帐号
后面是否是 nologin,如果没有 nologin 就要注意;
2、通过 who 命令查看当前登录用户(tty 本地登陆 pts 远程登录)、w 命令查看系统
信息,想知道某一时刻用户的行为、uptime查看登陆多久、多少用户,负载;
3、修改/etc/profile的文件,在尾部添加相应显示时间、日期、ip、命令脚本代码,这样输入history命令就会详细显示攻击者 ip、时间历史命令等;
4、用 netstat -antlp|more命令分析可疑端口、IP、PID,查看下 pid 所对应的进程文件路径,运行ls -l /proc/ P I D / e x e 或 f i l e / p r o c / PID/exe 或 file /proc/ PID/exefile/proc/PID/exe($PID 为对应的pid 号);
5、使用ps命令,分析进程 ps aux | grep pid
6、使用 vi /etc/inittab 查看系统当前运行级别,通过运行级别找到/etc/rc.d/rc[0~6].d对应目录是否存在可疑文件;
7、看一下crontab定时任务是否存在可疑启用脚本;
8、使用chkconfig --list 查看是否存在可疑服务;
9、通过grep awk命令分析/var/log/secure安全日志里面是否存在攻击痕迹;
10、chkrootkit、rkhunter、Clamav 病毒后门查杀工具对 Linux 系统文件查杀;
11、如果有 Web 站点,可通过 D 盾、河马查杀工具进行查杀或者手工对代码按脚本木马关键字、关键涵数(evel、system、shell_ex
Webshell查找

Windows环境使用d盾
Linux环境使用河马Linux

Windows安全应急工具
D盾、powertool、火绒剑
以上是我总结的信息安全、网络安全的相关知识,欢迎各位大佬交流、补充。另外今年想参加hw的可以跟我交流一下哦!

你可能感兴趣的:(web安全,面试,网络安全)