批量拿web shell工具【最新】内部有多个漏洞,可自动进行url采集,自动爬虫多个引擎和友情链接url,过狗一句话,轻松日出上千。
详情可看:https://note.youdao.com/s/G3zhC0Cw
命令执行,文件操作和sql注入。以sql为例,我只是做了一个代码审计。今天换了个思绪,从文件操作开端。毕竟一个文件操作不对,就是getshell,比一步一步的注入要直爽的多。
一.重点
关于文件操作局部,首先要对php内置的文件操作函数的功用和特性有个大约的理解。
文件获取内容()
文件内容()
挪动_上传_文件()
readfile()
fopen()
文件()
fputs()
fwrite()
…………
这些都是文件读写的常用函数。普通关于这些函数的调用,能够直接搜索文件类的破绽,并且能够跟踪传送上下文参数的过程。说起来挺简单的。其实一条一条看过去还是很费时间的,特别是在快速破绽发掘方面。我对系统构造不熟习,有些参数传送或者办法乍一看可能很蠢。那么如何快速发现一个文件类的破绽呢?
审计文件破绽,首先我会去这个系统的上传局部。上传局部是曾经构建好的从输入到写入再到输出的一套流程。假如里面有问题,很可能直接拿壳。
上传破绽挖了这么多年,各种cms或多或少都会对上传局部停止检查和限制。常见的检查有
1.$_FILES['file']['name']普通会从上传文件的文件名中取出扩展名,与白名单或黑名单停止比照,肯定能否继续上传。
2.$_FILES['file']['type']上传文件的类型普通与白名单停止比拟。
3.$_FILES['file']['tmp_name']上传文件的暂时文件。一些比拟严谨的CMS会在这个阶段用getimagesize等函数检查暂时文件。假如文件是非法的,直接丢弃它。
常见的限制有
1.运用函数is_uploaded_file()将检查$_FILES['file']['tmp_name']能否是合法上传的文件。当$_FILES被破绽掩盖时,可修正的$_FILES['file']['tmp_name']将是一个极大的平安要挟。
2.单独运用move_uploaded_file()函数来处置上传的文件,缘由同上。move_uploaded_file函数也会判别能否是合法文件。降低系统存在可变掩盖破绽时躺枪的概率。
3.文件名是不可控的,后缀仅限于数组成员,如
$ext=array('jpg ',' png ',' gif ');
$filename = 'user_avatar_01 '。$ ext[$ s];
接下来,让我们看一下我们的目的业务
第二,实战
我们来看看beescms的上传代码。
if(isset($ _ FILES[' up ']){
if(is _ uploaded _ file($ _ FILES[' up '][' tmp _ name ']){
if($up_type=='pic'){
$ is _ thumb = empty($ _ POST[' thumb '])?0:$ _ POST[' thumb '];
$ thumb _ width = empty($ _ POST[' thumb _ width '])?$ _ sys[' thump _ width ']:intval($ _ POST[' thumb _ width ']);
$ thumb _ height = empty($ _ POST[' thumb _ height '])?$ _ sys[' thump _ height ']:intval($ _ POST[' thumb _ height ']);
$ logo = 0;
$ i