准备:

攻击机:虚拟机kali、本机win10。

靶机:DarkHole: 1,下载地址:https://download.vulnhub.com/darkhole/DarkHole.zip,下载后直接vm打开即可。

知识点:文件上传、环境变量替换命令提权。

信息收集:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 192.168.1.0/24,获得靶机地址:192.168.1.40

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.1.40,显示开放了22、80端口,开启了ssh、http服务。

目录扫描:

使用dirmap进行目录扫描,发现register.php、login.php等页面。

web测试:

访问web服务进行源代码审查,发现login.php页面,使用登录页面进行使用默认账户admin/admin进行登录,显示登陆失败。

在register.php页面进行注册,在注册admin账户时显示已经存在该账户,那就换一个账户:123/123进行注册并登录,登陆后显示只有一个更新的功能。

看到只有修改密码的功能和刚才注册时账户:admin已经存在的提示,想到使用bp抓取修改密码数据包并修改其中关于身份标识的身份,成功修改admin账户密码:admin。

文件上传获取shell:

使用账户和密码:admin/admin登录web页面,发现存在一处文件上传功能。

在这个网站:https://www.revshells.com/生成php反弹shell的脚本(使用PHP PentestMonkey),但是在上传的时候限制只允许:jpg,png,gif,检查源代码信息,显示并不是在前端做的验证,该限制是在服务端代码做的限制。

尝试修改php代码文件后缀,如:php3、php4、php5、phtml等,测试phtml时上传成功并可以访问获取反弹的shell(其他存在上传,但是无法执行),并获得上传后的目录信息:upload/shell.php4。

在kali端开启对6688端口的监听,然后在web端访问我们上传的后门文件,成功获取到shell权限。

提权-john:

在/home/john目录下发现一个当前用户具有可执行权限的可执行文件:toto,执行该文件返回了john用户的id命令的执行结果。

那我们就自己写一个id命令然后导入环境变量,让其引用我们的id命令即可执行我们写入的代码。cve-2021-4034是为了测试polkit的一个漏洞,这里测试未成功。

echo '/bin/bash' > /tmp/id
chmod +x /tmp/id
export PATH=/tmp:$PATH

返回/root/john目录执行toto文件,成功获得john账户权限,并读取目录下的user.txt文件,成功获取到flag。

提权-root:

读取/home/password文件发现密码:root123,查看下当前账户是否存在可以使用的特权命令,sudo -l,显示存在:/usr/bin/python3 /home/john/file.py。

观察file.py文件,发现john账户具有读写和执行权限,那我们写入shell脚本:echo 'import os;os.system("/bin/bash")' > file.py。

然后使用python3去执行该脚本,命令:sudo python3 /home/john/file.py,成功获得root权限。

在/root目录下发现root.txt文件,读取该文件成功获取到root权限。

最新文章

  1. forEach遍历数组实例
  2. 测试文档锁:doc.LockDocument()
  3. iOS中数据传值的几种方式
  4. 【rqnoj39】 饮食问题
  5. Nginx-uri、request_uri、document_uri之间的区别
  6. timus 1106 Two Teams(二部图)
  7. Cloudera CDH5 部署实战指南(离线安装)
  8. DataTable的一些使用技巧
  9. SSM(Maven集成)
  10. Js、Jquery定时执行(一次或者重复多次,取消重复)
  11. 蓝桥杯-算法训练--ALGO-4 结点选择
  12. 优化order by 语句
  13. 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
  14. Django ORM操作的几个细节
  15. virt-viewer 连kvm 虚机
  16. Codeforces Round #552 (Div. 3) A题
  17. 【2017-04-17】类库、通用变量、is和as、委托
  18. shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法
  19. 使用开源项目免费申请 JetBrains 全家桶 IDEA 开源许可证
  20. The end of the world

热门文章

  1. useContext 解决函数父子组件传值
  2. 内网横向渗透 之 ATT&CK系列一 之 横向渗透域主机
  3. 前端ES6 面试过关宝典
  4. 01_Typora学习
  5. 整理一些Windows桌面运维常用的命令,并且整合成脚本
  6. STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]
  7. .NET 6 跨服务器联表查询
  8. 驱动开发:内核枚举PspCidTable句柄表
  9. PHP获取两个时间差
  10. Linux实战笔记__Ubuntu20.04上搭建Vulhub漏洞环境