本文最后更新于 2024-07-27,文章内容可能已经过时。

Vulnlab_LampSecurityCTF4靶机实战笔记

实验环境:

免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,
决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

靶机下载地址

https://www.vulnhub.com/entry/lampsecurity-ctf4,83/

kali(vmware) ip:192.168.91.129(NAT) ip:192.168.228.4(仅主机)

AAAAA

Vikings靶机(virtualBox)

kali配置了两张网卡,其中一张仅主机的网卡和靶机vitualbox相连。

virtualBox开启靶机:

描述:

难度:简单

提示:vlunhub的集合sql注入基础的靶机

image-20240723095647531

主机发现

nmap -sP 192.168.228.0/24

image-20240723100815262

发现目标主机,ip地址为192.168.228.20

信息搜集

nmap进行基本扫描

发现22,25,80,631四个端口,其中631端口被关闭,25端口显示的是smtp是邮件服务,22端口是ssh。

image-20240723101032916

nmap进一步扫描详细信息,获取目标主机系统信息和版本

nmap -sV -O -p22,25,80,631 192.168.228.20

image-20240723101357132

可以确定目标主机是linux操作系统,80端口开启了Apache服务

使用nmap的udp扫描

nmap -sU -p22,25,80,631 192.168.228.20

image-20240723101556764

显示filtered,说明udp端口被过滤掉了,接下来使用nmap自带的漏洞脚本扫描

nmap --script=vuln 192.168.228.20 

image-20240723102732809

image-20240723102815034

扫描出来很多漏洞,包括跨站请求伪造csrf、文件遍历、sql注入等 。

浏览器访问80端口,试试看能不能访问到

image-20240723102330096

成功访问,一堆英文,看的头大,查看网页标题可以得知这是一个教授的论文?

翻译一下,随便在网站上点一点,看看有啥发现。

点击Blog模块后,有几条博文可供选择。随便选择一个打开,界面如上图

观察url,可发现有id=2的字样,这有可能是数据库查询语句,修改url的值添加单引号后可以发现这里有SQL注入

image-20240723102906067

image-20240723102955637

漏洞利用

不想手工注入,这里直接上sqlmap

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

# --dbs这个选项用于列出目标数据库服务器上所有的数据库。它会扫描并显示出可用的数据库名称。
# --dump:这个选项用于从指定的数据库中提取数据
# --batch 选项表示自动回答所有提示,以便在没有人工干预的情况下运行。

image-20240723103950402

image-20240723104051985

结果有很多,在数据库ehks的表user中发现了几个用户名和密码,sqlmap对密码的md5加密进行了自动破解。

尝试使用获取的用户名密码来登录ssh

ssh dstevens@192.168.228.20

#输入密码ilike2surf

image-20240723104358214

结果发现执行不了,命令应该没错,应该是靶机的问题。可能是由于靶机太老了,ssh的版本有问题,根据报错提示没有匹配的key exchange方法,靶机的方法是diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1。因此我们可以添加一个参数,把Their offer作为参数的值。

我们先输入-o查找额外的参数,然后输入key的首字母k,按下tab键,有许多提示的参数,我们要设置的参数是与key exchange相关的,在这些参数中最有可能的就是KeyAlgorithms(密钥算法),如下图:

image-20240723105542486

添加靶机方法参数在进行ssh连接,命令如下:

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

image-20240723105906435

又报错了,提示信息说没有key type,并给出了靶机的参数为ssh-rsa,ssh-dss,添加参数-oHostKeyAlgorithms=ssh-rsa,ssh-dss即可,命令如下:

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

image-20240723110109307

这回连接上了,输入密码ilike2surf成功连接上dstevens用户的shell。

提权Getshell

查看基本信息

image-20240723110311208

进行提权之前先看看自己是啥权限,使用sudo -l查看,输入密码ilike2surf

image-20240723110611717

发现用户权限是ALL,直接使用如下命令进行提权

sudo /bin/bash

提权成功

image-20240723110632372

使用下find命令查看一下有没有flag

find / -type f -name "*.txt"

image-20240723111121142

没有找到flag,应该是靶场太老了,作者没有设置flag

至此打靶完成。

思路总结

基本思路

使用主机发现,nmap扫描基本信息-》在web页面发现sql注入漏洞-》使用sqlmap进行注入,拿到数据库的用户名和密码-》使用用户名和密码进行ssh登录。(其中ssh登录的时候涉及到了key值参数匹配的问题,上文做了解释)

总结

进行渗透测试的过程中,我们不能单纯依赖nmap和sqlmap这种自动化工具,还是要了解漏洞的原理与代码的编写。再说这个靶机是2009年的了,sqlmap可能当时还没出,这里我偷懒使用了这种自动化的工具,实际真实环境中可能不能用到sqlmap这种工具,因为可能被封ip。说到底,工具只是在了解了漏洞原理和代码的基础上,方便我们渗透的流程,并不是渗透的核心所在,不能只做脚本小子,所以学习思路和技术的道路任重而道远。