网络安全渗透第7节课笔记

php文件上传

文件上传过程:

  1. 页面通过post方式上传文件到服务器。
  2. 服务器通过$_FILES取得上传文件的变量内容。
  3. 文件临时存储在服务器中,位置为tmp_name定义。
  4. 服务器通过move_uploaded file(file,newload)将临时存储文件保存到指定目录。
  5. 文件上传完成。

文件长传检测控制方法:(绕过方法)

  1. 通过JavaScript检测文件扩展名(上传时改为jpg,绕过前端,再抓包改为php)
  2. 服务器端检测文件传输类型content-type(上传php文件,抓包修改content-type为jpg)
  3. 服务器端扩展名检测,设置黑白名单(未在黑名单包括,例如特殊执行文件.asa/.cer等可以在IIS执行)(上传jpg文件,利用中间件解析漏洞,使其被作为可执行文件执行)(通过截断符号,例如00,上传a.php0x00.jpg,服务器端从后往前读是jpg文件,保存文件从前往后读,00截断被当作php文件)
  4. 服务器端文件头内容检测,通过getimagesize()函数解析文件头部代码(在文件头中添加固定标识)(讲一句话木马嵌入到图片中,构造图片码,上传文件,再通过解析漏洞或其他方法还原为可执行文件)
  5. 00截断的应用(上传jpg,burp抓包改为phpp.jpg,在Hex中将最后一个p编码改为00)

注意:

一句话木马包含在图片中,可以上传成功,但不能执行,还需要进一步还原成可执行文件,才可以执行文件。

DVWA中有.htaccess可以将其还原,所以high级别上传成功后即可执行。

apache.htaccess配置文件解析利用:

  1.创建.htaccess文件,写入

  AddType application/x-httpd-php .jpg

  可以实现将.jpg的文件按照php解析执行。

  2.上传.htaccess到服务器的目录(图片马在.htaccess的同目录或子目录即可)。

  3.上传.jpg的图片马,访问图片即可执行。

猜你喜欢

转载自www.cnblogs.com/123456ZJJ/p/12896581.html