您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 海南分类信息网,免费分类信息发布

代码审计新手练习,网站漏洞的产生都是有原理的!

2024/2/11 1:32:35发布16次查看
前言:
由于假期耽误了进度,因此代码审计还只是刚入门。我也推荐想进行代码审计漏洞挖掘的读者,先拿dvwa进行源代码审计,理解各个文件的跳转引用,用户传入的参数在数据流中是如何流动。各种过滤机制能否绕过。否则,直接拿流行的cms进行审计,或者小众的cms练习审计,你会发现头晕脑胀。(擅长开发的程序员除外)我拿dvwa,也顺便回顾一下以前学过的知识(主要还是理解整体项目代码)。毕竟真实网站的洞不是那么容易就进去的。
file inclusion
产生场景:
由于服务器脚本根据用户点击页面传入的参数进行文件包含的时候,没有对点击页面传入的参数进行有效过滤,导致可能包含任意文件。若还对传入的参数,在页面上进行输出,那么还可能存在xss漏洞。
错误的过滤机制示范:
完全没有过滤:若对参数完全没有过滤,直接引入相关文件,那么将会导致直接包含任意文件(前提是知道可能存在的文件名、路径)。若还将传入的参数值在页面进行输出,那么还必将导致xss攻击。
由于dvwa的源码中,并未对传入的参数进行页面上的输出,所以,这里不存在xss漏洞。
黑名单的方式进行过滤:我个人的感悟是,只要是使用黑名单的过滤方式,那么就非常有可能有某种奇淫技巧进行绕过。
下面是dvwa中进行的错误的过滤方法,一一提供绕过方式。
第一种
源码中的黑名单只有四个,而对于str_replace()这个函数来说,它是区分大小写的进行替换。因此,若你想包含远程文件,比如你自己的服务器上的钓鱼网页,那么只需要将http进行大小写转换即可。亦或是其他的能让电脑认识你的输入是http,而却不属于这个黑名单之中的写法都可以。
很多人都喜欢../../../../../etc/password这样的包含linux系统本地文件的方法。亦或者是..............windowswin.ini包含windows系统文件的方法。但是,这里却对这种方法进行了过滤。绕过的方法也非常简单,只需要变成/etc/password这类格式即可。原理就是前者是不知道目录格式的情况下为了到达跟目录。后者是直接猜测网站目录。如果知道真实目录路径,那是最好的情况了。
第二种
源码中依旧使用了黑名单策略。当然也可以理解为范围比较广泛的白名单策略。他的代码逻辑就是,只要传入的参数值是以file开头,那么便可以直接包含。若不是以file开头,并且不是include.php文件,那么就报错。
这样咋一看是无法绕过,但是,实验中发现若是参数值为file1.php../../../../../etc/password或者file1.php..............windowswin.ini那么便满足了过滤条件。直接执行逻辑包含该文件。这就是我说的“计算机能认识你的输入,但是过滤机制却能绕过”的思路。
正确的白名单机制:
可以看到,对传入的参数值限定的非常死,只能是提前规定好的值才能传入、包含该文件。否则,一律报错。
总结:防止各种绕过的重点就三个字——白名单!而绕过各种过滤的重点也只有一句话——思路一定要骚!
文章写得比较基础。。。有基础的看懂应该不费劲。没基础的或许有点困难。
海南分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录