目录
1.漏洞挖掘原则
2.漏洞的本质
3.举例
1、漏洞挖掘原则:
- 所有变量:所有变量/提交的数据都要尝试
- 所有头:cookie的变量
- 逐个变量删除:筛选出服务器对哪些变量进行处理
2、漏洞的本质:
- 数据和指令的混淆(服务端对输入数据过滤不严格,对本来输入的数据却输入了指令,导致命令被执行)
- 对用户输入信息过来不严判断失误,误将指令当数据
3、举例
下面是DVWA中命令执行的漏洞,输入框中需要输入的是IP,即应用系统发出ping指令,ping某一台主机:
上面的命令是怎么执行的呢?是程序自己写的程序,编写一个ping指令or通过调用本机操作系统去发出ping,可以测试一下:
发现它发送了3个ping包,按照系统命令猜测,如果在执行一条‘ls’命令,是否能一起被执行呢?
由此可见,此应用程序是按照调用系统的ping命令来执行的。linux中,两条或者多条命令执行,可以使用的连接符是“ ; && | || &”,尝试下其他字符:
点击右下角的“View Source”,可以查看源代码,看一下为什么能够被执行,原因是没有进行任何的过滤
将security安全级别调整为“中”,使用“;”就不能执行ls了,观察源代码,它将“&& ;”都被转成了空字符,但是|、||等没有被过滤
将security安全级别调整为“高”,发现对IP地址进行了严格的限制,只能是以.分隔的4个数字。其中stripslashes函数已经对$target做了一次字符消毒(去掉转义后的反斜杠)