万物皆可蛋糕,切开的瞬间看呆了
来源:劳动观察 作者:马思华 发布时间: 17:26
摘要: 万物皆可蛋糕,切开的瞬间看呆了。
劳动观察新闻,未经授权不得转载
四位新疆老人赶毛驴车的快乐,网友...
情侣因房贷压力大入住毛坯房,“房...
警惕!新增本土确诊128例,在1...
学习记录代码审计的一些思路
首先要知道,程序的根本是什么
我们代码审计就怼这两个东西,要让其变成可利用的漏洞,关键在于
一般来说,漏洞的利用效果取决于最终函数的功能
一般拿到一个cms后的操作:
接下来就是审计了,有两条线:
就是对应我们通读代码的时候标志好的
比如说,upload对应的是上传功能,那我们首选就应该开工找上传
比如有函数名 move_uploaded_file()
,接着看调用这个函数的代码是否存在为限制上传格式或者可以绕过
未过滤或本地过滤:服务器端未过滤,直接上传PHP格式的文件即可利用
扩展名可绕过:不被允许的文件格式.php
,但是我们可以上传文件名为/evil-code.txt?”这里“?”实现了“伪截断”:),好象这个看上去不是那么舒服那么我们简单写个代码fuzz一下:
4096。对于php.ini里设置远程文件关闭的时候就可以利用上面的技巧包含本地文件了。(此漏洞由cloie#ph4nt0m.org最先发现])
对于很多web应用文件在很多功能是不容许重复数据的,比如用户注册功能等。一般的应用程序对于提交注册的username和数据库里已有的username对比是不是已经有重复数据,然而我们可以通过“数据截断”等来饶过这些判断,数据库在处理时候产生截断导致插入重复数据。
这个漏洞又是大牛Stefan Esser发现的,这个是由于mysql的sql_mode设置为default的时候,即没有开启STRICT_ALL_TABLES选项时,MySQL对于插入超长的值只会提示warning,而不是error(如果是error就插入不成功),这样可能会导致一些截断问题。测试如下:
很多的web应用程序没有考虑到这些问题,只是在数据存储前简单查询数据是否包含相同数据,如下代码:
文件操作里有很多特殊的字符,发挥特别的作用,很多web应用程序没有注意处理这些字符而导致安全问题。比如很多人都知道的windows系统文件名对“空格”和“.”等的忽视,这个主要体现在上传文件或者写文件上,导致直接写webshell。另外对于windows系统对“…\”进行系统转跳等等。
下面还给大家介绍一个非常有意思的问题:
很多人看出来了上面的代码的问题,程序首先禁止使用“.php”后缀。但是下面居然接了个str_replace替换$webdbwww_url
为空,那么我们提交“.p$webdbwww_urlhp
”就可以饶过了。那么上面的代码杂fix呢?有人给出了如下代码:
str_replace提到前面了,很完美的解决了str_replace代码的安全问题,但是问题不是那么简单,上面的代码在某些系统上一样可以突破。接下来我们先看看下面的代码:
主要是学习各位大佬的代码审计思路,后面自己尝试审计